Do some cleanup in CPWL_CBButton. - Use early returns in DrawThisAppearance() to avoid some potentially wasted calculations. - Don't declare a variable in an if-statement in OnLButtonDown(). Change-Id: I7b657cbb75889c60a8c662cfa8d888642b1e5d06 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/75170 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/pwl/cpwl_cbbutton.cpp b/fpdfsdk/pwl/cpwl_cbbutton.cpp index e2848b2..bb4725f 100644 --- a/fpdfsdk/pwl/cpwl_cbbutton.cpp +++ b/fpdfsdk/pwl/cpwl_cbbutton.cpp
@@ -12,14 +12,6 @@ #include "core/fxge/cfx_pathdata.h" #include "core/fxge/cfx_renderdevice.h" -namespace { - -constexpr float kComboBoxTriangleHalfLength = 3.0f; -constexpr float kComboBoxTriangleQuarterLength = - kComboBoxTriangleHalfLength * 0.5; - -} // namespace - CPWL_CBButton::CPWL_CBButton( const CreateParams& cp, std::unique_ptr<IPWL_SystemHandler::PerWindowData> pAttachedData) @@ -31,39 +23,45 @@ const CFX_Matrix& mtUser2Device) { CPWL_Wnd::DrawThisAppearance(pDevice, mtUser2Device); - CFX_FloatRect rectWnd = CPWL_Wnd::GetWindowRect(); - if (!IsVisible() || rectWnd.IsEmpty()) + if (!IsVisible()) return; - CFX_PointF ptCenter = GetCenterPoint(); + CFX_FloatRect window = CPWL_Wnd::GetWindowRect(); + if (window.IsEmpty()) + return; + constexpr float kComboBoxTriangleLength = 6.0f; + constexpr float kComboBoxTriangleHalfLength = kComboBoxTriangleLength / 2; + constexpr float kComboBoxTriangleQuarterLength = kComboBoxTriangleLength / 4; + if (!IsFloatBigger(window.right - window.left, kComboBoxTriangleLength) || + !IsFloatBigger(window.top - window.bottom, kComboBoxTriangleHalfLength)) { + return; + } + + CFX_PointF ptCenter = GetCenterPoint(); CFX_PointF pt1(ptCenter.x - kComboBoxTriangleHalfLength, ptCenter.y + kComboBoxTriangleQuarterLength); CFX_PointF pt2(ptCenter.x + kComboBoxTriangleHalfLength, ptCenter.y + kComboBoxTriangleQuarterLength); CFX_PointF pt3(ptCenter.x, ptCenter.y - kComboBoxTriangleQuarterLength); - if (IsFloatBigger(rectWnd.right - rectWnd.left, - kComboBoxTriangleHalfLength * 2) && - IsFloatBigger(rectWnd.top - rectWnd.bottom, - kComboBoxTriangleHalfLength)) { - CFX_PathData path; - path.AppendPoint(pt1, FXPT_TYPE::MoveTo); - path.AppendPoint(pt2, FXPT_TYPE::LineTo); - path.AppendPoint(pt3, FXPT_TYPE::LineTo); - path.AppendPoint(pt1, FXPT_TYPE::LineTo); + CFX_PathData path; + path.AppendPoint(pt1, FXPT_TYPE::MoveTo); + path.AppendPoint(pt2, FXPT_TYPE::LineTo); + path.AppendPoint(pt3, FXPT_TYPE::LineTo); + path.AppendPoint(pt1, FXPT_TYPE::LineTo); - pDevice->DrawPath(&path, &mtUser2Device, nullptr, - PWL_DEFAULT_BLACKCOLOR.ToFXColor(GetTransparency()), 0, - CFX_FillRenderOptions::EvenOddOptions()); - } + pDevice->DrawPath(&path, &mtUser2Device, nullptr, + PWL_DEFAULT_BLACKCOLOR.ToFXColor(GetTransparency()), 0, + CFX_FillRenderOptions::EvenOddOptions()); } bool CPWL_CBButton::OnLButtonDown(uint32_t nFlag, const CFX_PointF& point) { CPWL_Wnd::OnLButtonDown(nFlag, point); SetCapture(); - if (CPWL_Wnd* pParent = GetParentWindow()) + CPWL_Wnd* pParent = GetParentWindow(); + if (pParent) pParent->NotifyLButtonDown(this, point); return true;