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;