Pass CFWL_Widget properties by const-ref.
Then just copy the few words of data directly into the CFWL_Widget.
Callers can now just use a stack-allocated copy and avoid a lot of
heap allocation in the process.
- Nest CFWL_WidgetProperties as CFWL_Widget::Properties.
- Tidy a couple of boolean expressions.
Change-Id: Idd388ea82883394805ed9f2b1ca067cbc7a1ee09
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/72810
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fwl/BUILD.gn b/xfa/fwl/BUILD.gn
index a3778b2..bdb2e4a 100644
--- a/xfa/fwl/BUILD.gn
+++ b/xfa/fwl/BUILD.gn
@@ -77,8 +77,6 @@
"cfwl_widget.h",
"cfwl_widgetmgr.cpp",
"cfwl_widgetmgr.h",
- "cfwl_widgetproperties.cpp",
- "cfwl_widgetproperties.h",
"fwl_widgetdef.h",
"fwl_widgethit.h",
"ifwl_themeprovider.cpp",
diff --git a/xfa/fwl/cfwl_barcode.cpp b/xfa/fwl/cfwl_barcode.cpp
index d77c18a..08233c2 100644
--- a/xfa/fwl/cfwl_barcode.cpp
+++ b/xfa/fwl/cfwl_barcode.cpp
@@ -16,7 +16,7 @@
#include "xfa/fwl/theme/cfwl_utils.h"
CFWL_Barcode::CFWL_Barcode(const CFWL_App* app)
- : CFWL_Edit(app, std::make_unique<CFWL_WidgetProperties>(), nullptr) {}
+ : CFWL_Edit(app, Properties(), nullptr) {}
CFWL_Barcode::~CFWL_Barcode() = default;
@@ -37,7 +37,7 @@
if (!pGraphics)
return;
- if ((GetProperties()->m_dwStates & FWL_WGTSTATE_Focused) == 0) {
+ if ((m_Properties.m_dwStates & FWL_WGTSTATE_Focused) == 0) {
GenerateBarcodeImageCache();
if (!m_pBarcodeEngine || m_eStatus != Status::kEncodeSuccess)
return;
diff --git a/xfa/fwl/cfwl_caret.cpp b/xfa/fwl/cfwl_caret.cpp
index a612cc3..f538329 100644
--- a/xfa/fwl/cfwl_caret.cpp
+++ b/xfa/fwl/cfwl_caret.cpp
@@ -11,7 +11,7 @@
#include "xfa/fwl/cfwl_app.h"
#include "xfa/fwl/cfwl_notedriver.h"
#include "xfa/fwl/cfwl_themebackground.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
+#include "xfa/fwl/fwl_widgetdef.h"
#include "xfa/fwl/ifwl_themeprovider.h"
namespace {
@@ -23,9 +23,9 @@
} // namespace
CFWL_Caret::CFWL_Caret(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter)
- : CFWL_Widget(app, std::move(properties), pOuter) {
+ : CFWL_Widget(app, properties, pOuter) {
SetStates(kStateHighlight);
}
@@ -60,7 +60,7 @@
void CFWL_Caret::DrawCaretBK(CXFA_Graphics* pGraphics,
const CFX_Matrix* pMatrix) {
- if (!(GetProperties()->m_dwStates & kStateHighlight))
+ if (!(m_Properties.m_dwStates & kStateHighlight))
return;
CFWL_ThemeBackground param;
diff --git a/xfa/fwl/cfwl_caret.h b/xfa/fwl/cfwl_caret.h
index 834ea1b..f01eba8 100644
--- a/xfa/fwl/cfwl_caret.h
+++ b/xfa/fwl/cfwl_caret.h
@@ -13,13 +13,10 @@
#include "xfa/fwl/cfwl_widget.h"
#include "xfa/fxgraphics/cxfa_gecolor.h"
-class CFWL_WidgetProperties;
-class CFWL_Widget;
-
class CFWL_Caret final : public CFWL_Widget, public CFX_Timer::CallbackIface {
public:
CFWL_Caret(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter);
~CFWL_Caret() override;
diff --git a/xfa/fwl/cfwl_checkbox.cpp b/xfa/fwl/cfwl_checkbox.cpp
index a614f84..6bd420d 100644
--- a/xfa/fwl/cfwl_checkbox.cpp
+++ b/xfa/fwl/cfwl_checkbox.cpp
@@ -7,7 +7,6 @@
#include "xfa/fwl/cfwl_checkbox.h"
#include <algorithm>
-#include <memory>
#include <utility>
#include "xfa/fde/cfde_textout.h"
@@ -29,7 +28,7 @@
} // namespace
CFWL_CheckBox::CFWL_CheckBox(const CFWL_App* app)
- : CFWL_Widget(app, std::make_unique<CFWL_WidgetProperties>(), nullptr) {
+ : CFWL_Widget(app, Properties(), nullptr) {
m_TTOStyles.single_line_ = true;
}
@@ -67,7 +66,7 @@
param.m_pGraphics = pGraphics;
param.m_matrix.Concat(matrix);
param.m_PartRect = m_ClientRect;
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Focused)
param.m_pRtData = &m_FocusRect;
IFWL_ThemeProvider* pTheme = GetThemeProvider();
@@ -91,14 +90,14 @@
}
void CFWL_CheckBox::SetCheckState(int32_t iCheck) {
- GetProperties()->m_dwStates &= ~FWL_STATE_CKB_CheckMask;
+ m_Properties.m_dwStates &= ~FWL_STATE_CKB_CheckMask;
switch (iCheck) {
case 1:
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Checked;
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Checked;
break;
case 2:
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_CKB_3State)
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Neutral;
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_CKB_3State)
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Neutral;
break;
default:
break;
@@ -128,22 +127,22 @@
uint32_t CFWL_CheckBox::GetPartStates() const {
int32_t dwStates = CFWL_PartState_Normal;
- if ((GetProperties()->m_dwStates & FWL_STATE_CKB_CheckMask) ==
+ if ((m_Properties.m_dwStates & FWL_STATE_CKB_CheckMask) ==
FWL_STATE_CKB_Neutral) {
dwStates = CFWL_PartState_Neutral;
- } else if ((GetProperties()->m_dwStates & FWL_STATE_CKB_CheckMask) ==
+ } else if ((m_Properties.m_dwStates & FWL_STATE_CKB_CheckMask) ==
FWL_STATE_CKB_Checked) {
dwStates = CFWL_PartState_Checked;
}
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)
dwStates |= CFWL_PartState_Disabled;
- else if (GetProperties()->m_dwStates & FWL_STATE_CKB_Hovered)
+ else if (m_Properties.m_dwStates & FWL_STATE_CKB_Hovered)
dwStates |= CFWL_PartState_Hovered;
- else if (GetProperties()->m_dwStates & FWL_STATE_CKB_Pressed)
+ else if (m_Properties.m_dwStates & FWL_STATE_CKB_Pressed)
dwStates |= CFWL_PartState_Pressed;
else
dwStates |= CFWL_PartState_Normal;
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Focused)
dwStates |= CFWL_PartState_Focused;
return dwStates;
}
@@ -155,31 +154,31 @@
}
void CFWL_CheckBox::NextStates() {
- uint32_t dwFirststate = GetProperties()->m_dwStates;
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_CKB_RadioButton) {
- if ((GetProperties()->m_dwStates & FWL_STATE_CKB_CheckMask) ==
+ uint32_t dwFirststate = m_Properties.m_dwStates;
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_CKB_RadioButton) {
+ if ((m_Properties.m_dwStates & FWL_STATE_CKB_CheckMask) ==
FWL_STATE_CKB_Unchecked) {
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Checked;
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Checked;
}
} else {
- if ((GetProperties()->m_dwStates & FWL_STATE_CKB_CheckMask) ==
+ if ((m_Properties.m_dwStates & FWL_STATE_CKB_CheckMask) ==
FWL_STATE_CKB_Neutral) {
- GetProperties()->m_dwStates &= ~FWL_STATE_CKB_CheckMask;
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_CKB_3State)
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Checked;
- } else if ((GetProperties()->m_dwStates & FWL_STATE_CKB_CheckMask) ==
+ m_Properties.m_dwStates &= ~FWL_STATE_CKB_CheckMask;
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_CKB_3State)
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Checked;
+ } else if ((m_Properties.m_dwStates & FWL_STATE_CKB_CheckMask) ==
FWL_STATE_CKB_Checked) {
- GetProperties()->m_dwStates &= ~FWL_STATE_CKB_CheckMask;
+ m_Properties.m_dwStates &= ~FWL_STATE_CKB_CheckMask;
} else {
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_CKB_3State)
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Neutral;
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_CKB_3State)
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Neutral;
else
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Checked;
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Checked;
}
}
RepaintRect(m_ClientRect);
- if (dwFirststate == GetProperties()->m_dwStates)
+ if (dwFirststate == m_Properties.m_dwStates)
return;
CFWL_Event wmCheckBoxState(CFWL_Event::Type::CheckStateChanged, this);
@@ -235,20 +234,20 @@
void CFWL_CheckBox::OnFocusChanged(bool bSet) {
if (bSet)
- GetProperties()->m_dwStates |= FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates |= FWL_WGTSTATE_Focused;
else
- GetProperties()->m_dwStates &= ~FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates &= ~FWL_WGTSTATE_Focused;
RepaintRect(m_ClientRect);
}
void CFWL_CheckBox::OnLButtonDown() {
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)
return;
m_bBtnDown = true;
- GetProperties()->m_dwStates &= ~FWL_STATE_CKB_Hovered;
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Pressed;
+ m_Properties.m_dwStates &= ~FWL_STATE_CKB_Hovered;
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Pressed;
RepaintRect(m_ClientRect);
}
@@ -260,41 +259,41 @@
if (!m_ClientRect.Contains(pMsg->m_pos))
return;
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Hovered;
- GetProperties()->m_dwStates &= ~FWL_STATE_CKB_Pressed;
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Hovered;
+ m_Properties.m_dwStates &= ~FWL_STATE_CKB_Pressed;
NextStates();
}
void CFWL_CheckBox::OnMouseMove(CFWL_MessageMouse* pMsg) {
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)
return;
bool bRepaint = false;
if (m_bBtnDown) {
if (m_ClientRect.Contains(pMsg->m_pos)) {
- if ((GetProperties()->m_dwStates & FWL_STATE_CKB_Pressed) == 0) {
+ if ((m_Properties.m_dwStates & FWL_STATE_CKB_Pressed) == 0) {
bRepaint = true;
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Pressed;
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Pressed;
}
- if ((GetProperties()->m_dwStates & FWL_STATE_CKB_Hovered)) {
+ if ((m_Properties.m_dwStates & FWL_STATE_CKB_Hovered)) {
bRepaint = true;
- GetProperties()->m_dwStates &= ~FWL_STATE_CKB_Hovered;
+ m_Properties.m_dwStates &= ~FWL_STATE_CKB_Hovered;
}
} else {
- if (GetProperties()->m_dwStates & FWL_STATE_CKB_Pressed) {
+ if (m_Properties.m_dwStates & FWL_STATE_CKB_Pressed) {
bRepaint = true;
- GetProperties()->m_dwStates &= ~FWL_STATE_CKB_Pressed;
+ m_Properties.m_dwStates &= ~FWL_STATE_CKB_Pressed;
}
- if ((GetProperties()->m_dwStates & FWL_STATE_CKB_Hovered) == 0) {
+ if ((m_Properties.m_dwStates & FWL_STATE_CKB_Hovered) == 0) {
bRepaint = true;
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Hovered;
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Hovered;
}
}
} else {
if (m_ClientRect.Contains(pMsg->m_pos)) {
- if ((GetProperties()->m_dwStates & FWL_STATE_CKB_Hovered) == 0) {
+ if ((m_Properties.m_dwStates & FWL_STATE_CKB_Hovered) == 0) {
bRepaint = true;
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Hovered;
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Hovered;
}
}
}
@@ -304,9 +303,9 @@
void CFWL_CheckBox::OnMouseLeave() {
if (m_bBtnDown)
- GetProperties()->m_dwStates |= FWL_STATE_CKB_Hovered;
+ m_Properties.m_dwStates |= FWL_STATE_CKB_Hovered;
else
- GetProperties()->m_dwStates &= ~FWL_STATE_CKB_Hovered;
+ m_Properties.m_dwStates &= ~FWL_STATE_CKB_Hovered;
RepaintRect(m_BoxRect);
}
diff --git a/xfa/fwl/cfwl_checkbox.h b/xfa/fwl/cfwl_checkbox.h
index 04ae7ef..ae301f3 100644
--- a/xfa/fwl/cfwl_checkbox.h
+++ b/xfa/fwl/cfwl_checkbox.h
@@ -9,7 +9,6 @@
#include "xfa/fwl/cfwl_event.h"
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
#define FWL_STYLEEXT_CKB_3State (1L << 6)
#define FWL_STYLEEXT_CKB_RadioButton (1L << 7)
@@ -28,8 +27,6 @@
#define FWL_STATE_CKB_CheckMask (3L << (FWL_WGTSTATE_MAX + 2))
class CFWL_MessageMouse;
-class CFWL_WidgetProperties;
-class CFWL_Widget;
class CFWL_CheckBox final : public CFWL_Widget {
public:
diff --git a/xfa/fwl/cfwl_combobox.cpp b/xfa/fwl/cfwl_combobox.cpp
index 23bdcde..50f912e 100644
--- a/xfa/fwl/cfwl_combobox.cpp
+++ b/xfa/fwl/cfwl_combobox.cpp
@@ -29,7 +29,7 @@
#include "xfa/fwl/ifwl_themeprovider.h"
CFWL_ComboBox::CFWL_ComboBox(const CFWL_App* app)
- : CFWL_Widget(app, std::make_unique<CFWL_WidgetProperties>(), nullptr) {
+ : CFWL_Widget(app, Properties(), nullptr) {
InitComboList();
InitComboEdit();
}
@@ -61,7 +61,7 @@
bool bDelDropDown = !!(dwStylesExRemoved & FWL_STYLEEXT_CMB_DropDown);
dwStylesExRemoved &= ~FWL_STYLEEXT_CMB_DropDown;
- GetProperties()->m_dwStyleExes |= FWL_STYLEEXT_CMB_DropDown;
+ m_Properties.m_dwStyleExes |= FWL_STYLEEXT_CMB_DropDown;
if (bAddDropDown)
m_pEdit->ModifyStylesEx(0, FWL_STYLEEXT_EDT_ReadOnly);
@@ -302,7 +302,7 @@
return;
uint32_t dwAdd = 0;
- switch (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_CMB_EditHAlignMask) {
+ switch (m_Properties.m_dwStyleExes & FWL_STYLEEXT_CMB_EditHAlignMask) {
case FWL_STYLEEXT_CMB_EditHCenter: {
dwAdd |= FWL_STYLEEXT_EDT_HCenter;
break;
@@ -312,7 +312,7 @@
break;
}
}
- switch (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_CMB_EditVAlignMask) {
+ switch (m_Properties.m_dwStyleExes & FWL_STYLEEXT_CMB_EditVAlignMask) {
case FWL_STYLEEXT_CMB_EditVCenter: {
dwAdd |= FWL_STYLEEXT_EDT_VCenter;
break;
@@ -326,7 +326,7 @@
break;
}
}
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_CMB_EditJustified)
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_CMB_EditJustified)
dwAdd |= FWL_STYLEEXT_EDT_Justified;
m_pEdit->ModifyStylesEx(dwAdd, FWL_STYLEEXT_EDT_HAlignMask |
@@ -339,7 +339,7 @@
return;
uint32_t dwAdd = 0;
- switch (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_CMB_ListItemAlignMask) {
+ switch (m_Properties.m_dwStyleExes & FWL_STYLEEXT_CMB_ListItemAlignMask) {
case FWL_STYLEEXT_CMB_ListItemCenterAlign: {
dwAdd |= FWL_STYLEEXT_LTB_CenterAlign;
break;
@@ -377,19 +377,17 @@
if (m_pListBox)
return;
- auto prop = std::make_unique<CFWL_WidgetProperties>();
- prop->m_dwStyles = FWL_WGTSTYLE_Border | FWL_WGTSTYLE_VScroll;
- prop->m_dwStates = FWL_WGTSTATE_Invisible;
- m_pListBox =
- std::make_unique<CFWL_ComboList>(GetOwnerApp(), std::move(prop), this);
+ Properties prop;
+ prop.m_dwStyles = FWL_WGTSTYLE_Border | FWL_WGTSTYLE_VScroll;
+ prop.m_dwStates = FWL_WGTSTATE_Invisible;
+ m_pListBox = std::make_unique<CFWL_ComboList>(GetOwnerApp(), prop, this);
}
void CFWL_ComboBox::InitComboEdit() {
if (m_pEdit)
return;
- m_pEdit = std::make_unique<CFWL_ComboEdit>(
- GetOwnerApp(), std::make_unique<CFWL_WidgetProperties>(), this);
+ m_pEdit = std::make_unique<CFWL_ComboEdit>(GetOwnerApp(), Properties(), this);
}
void CFWL_ComboBox::OnProcessMessage(CFWL_Message* pMessage) {
@@ -492,13 +490,13 @@
void CFWL_ComboBox::OnFocusChanged(CFWL_Message* pMsg, bool bSet) {
if (bSet) {
- GetProperties()->m_dwStates |= FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates |= FWL_WGTSTATE_Focused;
if ((m_pEdit->GetStates() & FWL_WGTSTATE_Focused) == 0) {
CFWL_MessageSetFocus msg(nullptr, m_pEdit.get());
m_pEdit->GetDelegate()->OnProcessMessage(&msg);
}
} else {
- GetProperties()->m_dwStates &= ~FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates &= ~FWL_WGTSTATE_Focused;
ShowDropList(false);
CFWL_MessageKillFocus msg(m_pEdit.get());
m_pEdit->GetDelegate()->OnProcessMessage(&msg);
diff --git a/xfa/fwl/cfwl_combobox.h b/xfa/fwl/cfwl_combobox.h
index 719c825..3c7b7ae 100644
--- a/xfa/fwl/cfwl_combobox.h
+++ b/xfa/fwl/cfwl_combobox.h
@@ -12,12 +12,11 @@
#include "xfa/fwl/cfwl_comboedit.h"
#include "xfa/fwl/cfwl_combolist.h"
#include "xfa/fwl/cfwl_listbox.h"
+#include "xfa/fwl/cfwl_widget.h"
#include "xfa/fxgraphics/cxfa_graphics.h"
-class CFWL_WidgetProperties;
class CFWL_ComboBox;
class CFWL_ListBox;
-class CFWL_Widget;
#define FWL_STYLEEXT_CMB_DropDown (1L << 0)
#define FWL_STYLEEXT_CMB_Sort (1L << 1)
@@ -96,7 +95,7 @@
private:
bool IsDropDownStyle() const {
- return !!(GetProperties()->m_dwStyleExes & FWL_STYLEEXT_CMB_DropDown);
+ return !!(m_Properties.m_dwStyleExes & FWL_STYLEEXT_CMB_DropDown);
}
void MatchEditText();
void SyncEditText(int32_t iListItem);
diff --git a/xfa/fwl/cfwl_comboedit.cpp b/xfa/fwl/cfwl_comboedit.cpp
index 0b5beac..cad3231 100644
--- a/xfa/fwl/cfwl_comboedit.cpp
+++ b/xfa/fwl/cfwl_comboedit.cpp
@@ -6,18 +6,16 @@
#include "xfa/fwl/cfwl_comboedit.h"
-#include <memory>
#include <utility>
#include "xfa/fde/cfde_texteditengine.h"
#include "xfa/fwl/cfwl_combobox.h"
#include "xfa/fwl/cfwl_messagemouse.h"
-CFWL_ComboEdit::CFWL_ComboEdit(
- const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
- CFWL_Widget* pOuter)
- : CFWL_Edit(app, std::move(properties), pOuter) {}
+CFWL_ComboEdit::CFWL_ComboEdit(const CFWL_App* app,
+ const Properties& properties,
+ CFWL_Widget* pOuter)
+ : CFWL_Edit(app, properties, pOuter) {}
CFWL_ComboEdit::~CFWL_ComboEdit() = default;
@@ -33,11 +31,11 @@
void CFWL_ComboEdit::FlagFocus(bool bSet) {
if (bSet) {
- GetProperties()->m_dwStates |= FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates |= FWL_WGTSTATE_Focused;
return;
}
- GetProperties()->m_dwStates &= ~FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates &= ~FWL_WGTSTATE_Focused;
HideCaret(nullptr);
}
@@ -45,19 +43,19 @@
bool backDefault = true;
switch (pMessage->GetType()) {
case CFWL_Message::Type::kSetFocus: {
- GetProperties()->m_dwStates |= FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates |= FWL_WGTSTATE_Focused;
backDefault = false;
break;
}
case CFWL_Message::Type::kKillFocus: {
- GetProperties()->m_dwStates &= ~FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates &= ~FWL_WGTSTATE_Focused;
backDefault = false;
break;
}
case CFWL_Message::Type::kMouse: {
CFWL_MessageMouse* pMsg = static_cast<CFWL_MessageMouse*>(pMessage);
if ((pMsg->m_dwCmd == FWL_MouseCommand::LeftButtonDown) &&
- ((GetProperties()->m_dwStates & FWL_WGTSTATE_Focused) == 0)) {
+ ((m_Properties.m_dwStates & FWL_WGTSTATE_Focused) == 0)) {
SetSelected();
}
break;
diff --git a/xfa/fwl/cfwl_comboedit.h b/xfa/fwl/cfwl_comboedit.h
index 68e6caa..b6fd11a 100644
--- a/xfa/fwl/cfwl_comboedit.h
+++ b/xfa/fwl/cfwl_comboedit.h
@@ -7,22 +7,17 @@
#ifndef XFA_FWL_CFWL_COMBOEDIT_H_
#define XFA_FWL_CFWL_COMBOEDIT_H_
-#include <memory>
-
#include "xfa/fwl/cfwl_edit.h"
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
-
-class CFWL_ComboBox;
class CFWL_ComboEdit final : public CFWL_Edit {
public:
CFWL_ComboEdit(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter);
~CFWL_ComboEdit() override;
- // CFWL_Edit.
+ // CFWL_Edit:
void OnProcessMessage(CFWL_Message* pMessage) override;
void ClearSelected();
diff --git a/xfa/fwl/cfwl_combolist.cpp b/xfa/fwl/cfwl_combolist.cpp
index c6fb591..709c24a 100644
--- a/xfa/fwl/cfwl_combolist.cpp
+++ b/xfa/fwl/cfwl_combolist.cpp
@@ -6,7 +6,6 @@
#include "xfa/fwl/cfwl_combolist.h"
-#include <memory>
#include <utility>
#include "xfa/fwl/cfwl_combobox.h"
@@ -17,11 +16,10 @@
#include "xfa/fwl/cfwl_messagemouse.h"
#include "xfa/fwl/fwl_widgetdef.h"
-CFWL_ComboList::CFWL_ComboList(
- const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
- CFWL_Widget* pOuter)
- : CFWL_ListBox(app, std::move(properties), pOuter) {
+CFWL_ComboList::CFWL_ComboList(const CFWL_App* app,
+ const Properties& properties,
+ CFWL_Widget* pOuter)
+ : CFWL_ListBox(app, properties, pOuter) {
ASSERT(pOuter);
}
diff --git a/xfa/fwl/cfwl_combolist.h b/xfa/fwl/cfwl_combolist.h
index c275c72..cb7f086 100644
--- a/xfa/fwl/cfwl_combolist.h
+++ b/xfa/fwl/cfwl_combolist.h
@@ -7,16 +7,13 @@
#ifndef XFA_FWL_CFWL_COMBOLIST_H_
#define XFA_FWL_CFWL_COMBOLIST_H_
-#include <memory>
-
#include "xfa/fwl/cfwl_listbox.h"
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
class CFWL_ComboList final : public CFWL_ListBox {
public:
CFWL_ComboList(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter);
// CFWL_ListBox.
diff --git a/xfa/fwl/cfwl_datetimeedit.cpp b/xfa/fwl/cfwl_datetimeedit.cpp
index e93d3af..bb6c12e 100644
--- a/xfa/fwl/cfwl_datetimeedit.cpp
+++ b/xfa/fwl/cfwl_datetimeedit.cpp
@@ -6,18 +6,16 @@
#include "xfa/fwl/cfwl_datetimeedit.h"
-#include <memory>
#include <utility>
#include "xfa/fwl/cfwl_datetimepicker.h"
#include "xfa/fwl/cfwl_messagemouse.h"
#include "xfa/fwl/cfwl_widgetmgr.h"
-CFWL_DateTimeEdit::CFWL_DateTimeEdit(
- const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
- CFWL_Widget* pOuter)
- : CFWL_Edit(app, std::move(properties), pOuter) {}
+CFWL_DateTimeEdit::CFWL_DateTimeEdit(const CFWL_App* app,
+ const Properties& properties,
+ CFWL_Widget* pOuter)
+ : CFWL_Edit(app, properties, pOuter) {}
CFWL_DateTimeEdit::~CFWL_DateTimeEdit() = default;
@@ -30,8 +28,8 @@
CFWL_MessageMouse* pMouse = static_cast<CFWL_MessageMouse*>(pMessage);
if (pMouse->m_dwCmd == FWL_MouseCommand::LeftButtonDown ||
pMouse->m_dwCmd == FWL_MouseCommand::RightButtonDown) {
- if ((GetProperties()->m_dwStates & FWL_WGTSTATE_Focused) == 0)
- GetProperties()->m_dwStates |= FWL_WGTSTATE_Focused;
+ if ((m_Properties.m_dwStates & FWL_WGTSTATE_Focused) == 0)
+ m_Properties.m_dwStates |= FWL_WGTSTATE_Focused;
CFWL_DateTimePicker* pDateTime =
static_cast<CFWL_DateTimePicker*>(GetOuter());
diff --git a/xfa/fwl/cfwl_datetimeedit.h b/xfa/fwl/cfwl_datetimeedit.h
index e617ff4..36e9af3 100644
--- a/xfa/fwl/cfwl_datetimeedit.h
+++ b/xfa/fwl/cfwl_datetimeedit.h
@@ -7,20 +7,17 @@
#ifndef XFA_FWL_CFWL_DATETIMEEDIT_H_
#define XFA_FWL_CFWL_DATETIMEEDIT_H_
-#include <memory>
-
#include "xfa/fwl/cfwl_edit.h"
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
class CFWL_DateTimeEdit final : public CFWL_Edit {
public:
CFWL_DateTimeEdit(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter);
~CFWL_DateTimeEdit() override;
- // CFWL_Edit.
+ // CFWL_Edit:
void OnProcessMessage(CFWL_Message* pMessage) override;
};
diff --git a/xfa/fwl/cfwl_datetimepicker.cpp b/xfa/fwl/cfwl_datetimepicker.cpp
index 4a0addb..270ed3f 100644
--- a/xfa/fwl/cfwl_datetimepicker.cpp
+++ b/xfa/fwl/cfwl_datetimepicker.cpp
@@ -24,20 +24,20 @@
} // namespace
CFWL_DateTimePicker::CFWL_DateTimePicker(const CFWL_App* app)
- : CFWL_Widget(app, std::make_unique<CFWL_WidgetProperties>(), nullptr) {
- GetProperties()->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat;
+ : CFWL_Widget(app, Properties(), nullptr) {
+ m_Properties.m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat;
- auto monthProp = std::make_unique<CFWL_WidgetProperties>();
- monthProp->m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border;
- monthProp->m_dwStates = FWL_WGTSTATE_Invisible;
- m_pMonthCal = std::make_unique<CFWL_MonthCalendar>(
- GetOwnerApp(), std::move(monthProp), this);
+ Properties monthProp;
+ monthProp.m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border;
+ monthProp.m_dwStates = FWL_WGTSTATE_Invisible;
+ m_pMonthCal =
+ std::make_unique<CFWL_MonthCalendar>(GetOwnerApp(), monthProp, this);
m_pMonthCal->SetWidgetRect(
CFX_RectF(0, 0, m_pMonthCal->GetAutosizedWidgetRect().Size()));
- m_pEdit = std::make_unique<CFWL_DateTimeEdit>(
- GetOwnerApp(), std::make_unique<CFWL_WidgetProperties>(), this);
+ m_pEdit =
+ std::make_unique<CFWL_DateTimeEdit>(GetOwnerApp(), Properties(), this);
RegisterEventTarget(m_pMonthCal.get());
RegisterEventTarget(m_pEdit.get());
@@ -190,7 +190,7 @@
WideString CFWL_DateTimePicker::FormatDateString(int32_t iYear,
int32_t iMonth,
int32_t iDay) {
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_DTP_ShortDateFormat)
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_DTP_ShortDateFormat)
return WideString::Format(L"%d-%d-%d", iYear, iMonth, iDay);
return WideString::Format(L"%d Year %d Month %d Day", iYear, iMonth, iDay);
@@ -240,7 +240,7 @@
return;
uint32_t dwAdd = 0;
- switch (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_DTP_EditHAlignMask) {
+ switch (m_Properties.m_dwStyleExes & FWL_STYLEEXT_DTP_EditHAlignMask) {
case FWL_STYLEEXT_DTP_EditHCenter: {
dwAdd |= FWL_STYLEEXT_EDT_HCenter;
break;
@@ -254,7 +254,7 @@
break;
}
}
- switch (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_DTP_EditVAlignMask) {
+ switch (m_Properties.m_dwStyleExes & FWL_STYLEEXT_DTP_EditVAlignMask) {
case FWL_STYLEEXT_DTP_EditVCenter: {
dwAdd |= FWL_STYLEEXT_EDT_VCenter;
break;
@@ -268,7 +268,7 @@
break;
}
}
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_DTP_EditJustified)
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_DTP_EditJustified)
dwAdd |= FWL_STYLEEXT_EDT_Justified;
m_pEdit->ModifyStylesEx(dwAdd, FWL_STYLEEXT_EDT_HAlignMask |
@@ -300,7 +300,7 @@
}
bool CFWL_DateTimePicker::NeedsToShowButton() const {
- return GetProperties()->m_dwStates & FWL_WGTSTATE_Focused ||
+ return m_Properties.m_dwStates & FWL_WGTSTATE_Focused ||
m_pMonthCal->GetStates() & FWL_WGTSTATE_Focused ||
m_pEdit->GetStates() & FWL_WGTSTATE_Focused;
}
@@ -359,7 +359,7 @@
CFX_RectF rtInvalidate(m_BtnRect);
if (bSet) {
- GetProperties()->m_dwStates |= FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates |= FWL_WGTSTATE_Focused;
if (m_pEdit && !(m_pEdit->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly)) {
m_BtnRect =
CFX_RectF(m_WidgetRect.width, 0, m_fBtn, m_WidgetRect.height - 1);
@@ -368,7 +368,7 @@
pMsg->SetDstTarget(m_pEdit.get());
m_pEdit->GetDelegate()->OnProcessMessage(pMsg);
} else {
- GetProperties()->m_dwStates &= ~FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates &= ~FWL_WGTSTATE_Focused;
m_BtnRect = CFX_RectF();
if (IsMonthCalendarVisible())
ShowMonthCalendar(false);
diff --git a/xfa/fwl/cfwl_datetimepicker.h b/xfa/fwl/cfwl_datetimepicker.h
index 4b84d83..701f586 100644
--- a/xfa/fwl/cfwl_datetimepicker.h
+++ b/xfa/fwl/cfwl_datetimepicker.h
@@ -14,7 +14,6 @@
#include "xfa/fwl/cfwl_event.h"
#include "xfa/fwl/cfwl_monthcalendar.h"
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
#define FWL_STYLEEXT_DTP_ShortDateFormat (1L << 1)
#define FWL_STYLEEXT_DTP_EditHAlignMask (3L << 4)
diff --git a/xfa/fwl/cfwl_edit.cpp b/xfa/fwl/cfwl_edit.cpp
index 2492e4d..44224f2 100644
--- a/xfa/fwl/cfwl_edit.cpp
+++ b/xfa/fwl/cfwl_edit.cpp
@@ -45,16 +45,16 @@
} // namespace
CFWL_Edit::CFWL_Edit(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter)
- : CFWL_Widget(app, std::move(properties), pOuter),
+ : CFWL_Widget(app, properties, pOuter),
m_pEditEngine(std::make_unique<CFDE_TextEditEngine>()) {
m_pEditEngine->SetDelegate(this);
}
CFWL_Edit::~CFWL_Edit() {
m_pEditEngine->SetDelegate(nullptr);
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Focused)
HideCaret(nullptr);
}
@@ -64,7 +64,7 @@
CFX_RectF CFWL_Edit::GetWidgetRect() {
CFX_RectF rect = m_WidgetRect;
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
float scrollbarWidth = GetThemeProvider()->GetScrollBarWidth();
if (IsShowScrollBar(true)) {
rect.width += scrollbarWidth;
@@ -83,7 +83,7 @@
if (m_pEditEngine->GetLength() > 0) {
CFX_SizeF size = CalcTextSize(
m_pEditEngine->GetText(),
- !!(GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine));
+ !!(m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine));
rect = CFX_RectF(0, 0, size);
}
InflateWidgetRect(rect);
@@ -91,8 +91,8 @@
}
void CFWL_Edit::SetStates(uint32_t dwStates) {
- if ((GetProperties()->m_dwStates & FWL_WGTSTATE_Invisible) ||
- (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)) {
+ if ((m_Properties.m_dwStates & FWL_WGTSTATE_Invisible) ||
+ (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)) {
HideCaret(nullptr);
}
CFWL_Widget::SetStates(dwStates);
@@ -113,7 +113,7 @@
}
FWL_WidgetHit CFWL_Edit::HitTest(const CFX_PointF& point) {
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
if (IsShowScrollBar(true)) {
if (m_pVertScrollBar->GetWidgetRect().Contains(point))
return FWL_WidgetHit::VScrollBar;
@@ -248,14 +248,14 @@
void CFWL_Edit::OnCaretChanged() {
if (m_EngineRect.IsEmpty())
return;
- if ((GetProperties()->m_dwStates & FWL_WGTSTATE_Focused) == 0)
+ if ((m_Properties.m_dwStates & FWL_WGTSTATE_Focused) == 0)
return;
bool bRepaintContent = UpdateOffset();
UpdateCaret();
CFX_RectF rtInvalid;
bool bRepaintScroll = false;
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine) {
CFWL_ScrollBar* pScroll = UpdateScroll();
if (pScroll) {
rtInvalid = pScroll->GetWidgetRect();
@@ -286,7 +286,7 @@
}
void CFWL_Edit::OnTextChanged() {
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_VAlignMask)
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_VAlignMask)
UpdateVAlignment();
LayoutScrollBar();
@@ -315,10 +315,10 @@
param.m_pWidget = this;
param.m_iPart = CFWL_Part::Background;
param.m_bStaticBackground = false;
- param.m_dwStates = GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_ReadOnly
+ param.m_dwStates = m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_ReadOnly
? CFWL_PartState_ReadOnly
: CFWL_PartState_Normal;
- uint32_t dwStates = (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled);
+ uint32_t dwStates = (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled);
if (dwStates)
param.m_dwStates = CFWL_PartState_Disabled;
param.m_pGraphics = pGraphics;
@@ -343,7 +343,7 @@
void CFWL_Edit::DrawContent(CXFA_Graphics* pGraphics,
const CFX_Matrix* pMatrix) {
pGraphics->SaveGraphState();
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_CombText)
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_CombText)
pGraphics->SaveGraphState();
CFX_RectF rtClip = m_EngineRect;
@@ -356,7 +356,7 @@
mt.Concat(*pMatrix);
}
- bool bShowSel = !!(GetProperties()->m_dwStates & FWL_WGTSTATE_Focused);
+ bool bShowSel = !!(m_Properties.m_dwStates & FWL_WGTSTATE_Focused);
if (bShowSel && m_pEditEngine->HasSelection()) {
size_t sel_start;
size_t count;
@@ -384,7 +384,7 @@
CFX_RenderDevice* pRenderDev = pGraphics->GetRenderDevice();
RenderText(pRenderDev, rtClip, mt);
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_CombText) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_CombText) {
pGraphics->RestoreGraphState();
CXFA_GEPath path;
@@ -450,15 +450,15 @@
void CFWL_Edit::UpdateEditParams() {
m_pEditEngine->SetAvailableWidth(m_EngineRect.width);
m_pEditEngine->SetCombText(
- !!(GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_CombText));
+ !!(m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_CombText));
m_pEditEngine->EnableValidation(
- !!(GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_Validate));
+ !!(m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_Validate));
m_pEditEngine->EnablePasswordMode(
- !!(GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_Password));
+ !!(m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_Password));
uint32_t alignment = 0;
- switch (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_HAlignMask) {
+ switch (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_HAlignMask) {
case FWL_STYLEEXT_EDT_HNear: {
alignment |= CFX_TxtLineAlignment_Left;
break;
@@ -474,7 +474,7 @@
default:
break;
}
- switch (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_HAlignModeMask) {
+ switch (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_HAlignModeMask) {
case FWL_STYLEEXT_EDT_Justified: {
alignment |= CFX_TxtLineAlignment_Justified;
break;
@@ -485,13 +485,13 @@
m_pEditEngine->SetAlignment(alignment);
bool auto_hscroll =
- !!(GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_AutoHScroll);
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine) {
+ !!(m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_AutoHScroll);
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine) {
m_pEditEngine->EnableMultiLine(true);
m_pEditEngine->EnableLineWrap(!auto_hscroll);
m_pEditEngine->LimitVerticalScroll(
- (GetProperties()->m_dwStyles & FWL_WGTSTYLE_VScroll) == 0 &&
- (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_AutoVScroll) == 0);
+ (m_Properties.m_dwStyles & FWL_WGTSTYLE_VScroll) == 0 &&
+ (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_AutoVScroll) == 0);
} else {
m_pEditEngine->EnableMultiLine(false);
m_pEditEngine->EnableLineWrap(false);
@@ -584,14 +584,14 @@
float fOffsetY = 0.0f;
CFX_RectF contents_bounds = m_pEditEngine->GetContentsBoundingBox();
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_VCenter) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_VCenter) {
fOffsetY = (m_EngineRect.height - contents_bounds.height) / 2.0f;
if (fOffsetY < (fSpaceAbove + fSpaceBelow) / 2.0f &&
fSpaceAbove < fSpaceBelow) {
return;
}
fOffsetY += (fSpaceAbove - fSpaceBelow) / 2.0f;
- } else if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_VFar) {
+ } else if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_VFar) {
fOffsetY = (m_EngineRect.height - contents_bounds.height);
fOffsetY -= fSpaceBelow;
} else {
@@ -613,7 +613,7 @@
rtCaret.width = right - rtCaret.left;
}
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused && !rtCaret.IsEmpty())
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Focused && !rtCaret.IsEmpty())
ShowCaret(&rtCaret);
else
HideCaret(&rtCaret);
@@ -691,12 +691,12 @@
if (!bVert)
return false;
bool bShow =
- (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_ShowScrollbarFocus)
- ? (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused) ==
+ (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_ShowScrollbarFocus)
+ ? (m_Properties.m_dwStates & FWL_WGTSTATE_Focused) ==
FWL_WGTSTATE_Focused
: true;
- return bShow && (GetProperties()->m_dwStyles & FWL_WGTSTYLE_VScroll) &&
- (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine) &&
+ return bShow && (m_Properties.m_dwStyles & FWL_WGTSTYLE_VScroll) &&
+ (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine) &&
IsContentHeightOverflow();
}
@@ -730,7 +730,7 @@
InitVerticalScrollBar();
CFX_RectF rtVertScr;
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
rtVertScr = CFX_RectF(m_ClientRect.right() + kEditMargin,
m_ClientRect.top, fWidth, m_ClientRect.height);
} else {
@@ -752,7 +752,7 @@
InitHorizontalScrollBar();
CFX_RectF rtHoriScr;
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
rtHoriScr =
CFX_RectF(m_ClientRect.left, m_ClientRect.bottom() + kEditMargin,
m_ClientRect.width, fWidth);
@@ -772,8 +772,7 @@
}
void CFWL_Edit::LayoutScrollBar() {
- if ((GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_ShowScrollbarFocus) ==
- 0) {
+ if ((m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_ShowScrollbarFocus) == 0) {
return;
}
@@ -785,7 +784,7 @@
if (!m_pVertScrollBar) {
InitVerticalScrollBar();
CFX_RectF rtVertScr;
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
rtVertScr = CFX_RectF(m_ClientRect.right() + kEditMargin,
m_ClientRect.top, fWidth, m_ClientRect.height);
} else {
@@ -806,7 +805,7 @@
if (!m_pHorzScrollBar) {
InitHorizontalScrollBar();
CFX_RectF rtHoriScr;
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
rtHoriScr =
CFX_RectF(m_ClientRect.left, m_ClientRect.bottom() + kEditMargin,
m_ClientRect.width, fWidth);
@@ -836,22 +835,22 @@
if (m_pVertScrollBar)
return;
- auto prop = std::make_unique<CFWL_WidgetProperties>();
- prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Vert;
- prop->m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible;
+ Properties prop;
+ prop.m_dwStyleExes = FWL_STYLEEXT_SCB_Vert;
+ prop.m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible;
m_pVertScrollBar =
- std::make_unique<CFWL_ScrollBar>(GetOwnerApp(), std::move(prop), this);
+ std::make_unique<CFWL_ScrollBar>(GetOwnerApp(), prop, this);
}
void CFWL_Edit::InitHorizontalScrollBar() {
if (m_pHorzScrollBar)
return;
- auto prop = std::make_unique<CFWL_WidgetProperties>();
- prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Horz;
- prop->m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible;
+ Properties prop;
+ prop.m_dwStyleExes = FWL_STYLEEXT_SCB_Horz;
+ prop.m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible;
m_pHorzScrollBar =
- std::make_unique<CFWL_ScrollBar>(GetOwnerApp(), std::move(prop), this);
+ std::make_unique<CFWL_ScrollBar>(GetOwnerApp(), prop, this);
}
void CFWL_Edit::ShowCaret(CFX_RectF* pRect) {
@@ -921,9 +920,8 @@
if (m_pCaret)
return;
- m_pCaret = std::make_unique<CFWL_Caret>(
- GetOwnerApp(), std::make_unique<CFWL_WidgetProperties>(), this);
- m_pCaret->SetStates(GetProperties()->m_dwStates);
+ m_pCaret = std::make_unique<CFWL_Caret>(GetOwnerApp(), Properties(), this);
+ m_pCaret->SetStates(m_Properties.m_dwStates);
UpdateCursorRect();
}
@@ -1029,13 +1027,13 @@
void CFWL_Edit::OnFocusChanged(CFWL_Message* pMsg, bool bSet) {
bool bRepaint = false;
if (bSet) {
- GetProperties()->m_dwStates |= FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates |= FWL_WGTSTATE_Focused;
UpdateVAlignment();
UpdateOffset();
UpdateCaret();
- } else if (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused) {
- GetProperties()->m_dwStates &= ~FWL_WGTSTATE_Focused;
+ } else if (m_Properties.m_dwStates & FWL_WGTSTATE_Focused) {
+ m_Properties.m_dwStates &= ~FWL_WGTSTATE_Focused;
HideCaret(nullptr);
if (HasSelection()) {
@@ -1053,7 +1051,7 @@
}
void CFWL_Edit::OnLButtonDown(CFWL_MessageMouse* pMsg) {
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)
return;
m_bLButtonDown = true;
@@ -1162,8 +1160,8 @@
: m_pEditEngine->GetIndexAtEndOfLine(m_CursorPosition));
break;
case XFA_FWL_VKEY_Delete: {
- if ((GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_ReadOnly) ||
- (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)) {
+ if ((m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_ReadOnly) ||
+ (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)) {
break;
}
@@ -1187,8 +1185,8 @@
}
void CFWL_Edit::OnChar(CFWL_MessageKey* pMsg) {
- if ((GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_ReadOnly) ||
- (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)) {
+ if ((m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_ReadOnly) ||
+ (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)) {
return;
}
@@ -1210,7 +1208,7 @@
SetCursorPosition(m_CursorPosition + 1);
break;
case L'\r':
- if (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_EDT_WantReturn) {
+ if (m_Properties.m_dwStyleExes & FWL_STYLEEXT_EDT_WantReturn) {
m_pEditEngine->Insert(m_CursorPosition, L"\n");
SetCursorPosition(m_CursorPosition + 1);
}
diff --git a/xfa/fwl/cfwl_edit.h b/xfa/fwl/cfwl_edit.h
index d77413b..5e451ae 100644
--- a/xfa/fwl/cfwl_edit.h
+++ b/xfa/fwl/cfwl_edit.h
@@ -40,13 +40,12 @@
class CFWL_Edit;
class CFWL_MessageMouse;
-class CFWL_WidgetProperties;
class CFWL_Caret;
class CFWL_Edit : public CFWL_Widget, public CFDE_TextEditEngine::Delegate {
public:
CFWL_Edit(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter);
~CFWL_Edit() override;
diff --git a/xfa/fwl/cfwl_listbox.cpp b/xfa/fwl/cfwl_listbox.cpp
index f4ac843..f4de0b6 100644
--- a/xfa/fwl/cfwl_listbox.cpp
+++ b/xfa/fwl/cfwl_listbox.cpp
@@ -29,9 +29,9 @@
} // namespace
CFWL_ListBox::CFWL_ListBox(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter)
- : CFWL_Widget(app, std::move(properties), pOuter) {}
+ : CFWL_Widget(app, properties, pOuter) {}
CFWL_ListBox::~CFWL_ListBox() = default;
@@ -43,7 +43,7 @@
if (IsLocked())
return;
- switch (GetProperties()->m_dwStyleExes & FWL_STYLEEXT_LTB_AlignMask) {
+ switch (m_Properties.m_dwStyleExes & FWL_STYLEEXT_LTB_AlignMask) {
case FWL_STYLEEXT_LTB_LeftAlign:
m_iTTOAligns = FDE_TextAlignment::kCenterLeft;
break;
@@ -92,7 +92,7 @@
rtClip.width -= m_fScorllBarWidth;
pGraphics->SetClipRect(matrix.TransformRect(rtClip));
- if ((GetProperties()->m_dwStyles & FWL_WGTSTYLE_NoBackground) == 0)
+ if ((m_Properties.m_dwStyles & FWL_WGTSTYLE_NoBackground) == 0)
DrawBkground(pGraphics, &matrix);
DrawItems(pGraphics, &matrix);
@@ -215,7 +215,7 @@
}
bool CFWL_ListBox::IsMultiSelection() const {
- return GetProperties()->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection;
+ return m_Properties.m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection;
}
bool CFWL_ListBox::IsItemSelected(CFWL_ListItem* pItem) {
@@ -385,12 +385,12 @@
const CFX_Matrix* pMatrix) {
uint32_t dwItemStyles = pItem ? pItem->GetStates() : 0;
uint32_t dwPartStates = CFWL_PartState_Normal;
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)
dwPartStates = CFWL_PartState_Disabled;
else if (dwItemStyles & FWL_ITEMSTATE_LTB_Selected)
dwPartStates = CFWL_PartState_Selected;
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused &&
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Focused &&
dwItemStyles & FWL_ITEMSTATE_LTB_Focused) {
dwPartStates |= CFWL_PartState_Focused;
}
@@ -471,7 +471,7 @@
float iHeight = m_ClientRect.height;
bool bShowVertScr = false;
bool bShowHorzScr = false;
- if (!bShowVertScr && (GetProperties()->m_dwStyles & FWL_WGTSTYLE_VScroll))
+ if (!bShowVertScr && (m_Properties.m_dwStyles & FWL_WGTSTYLE_VScroll))
bShowVertScr = (fs.height > iHeight);
CFX_SizeF szRange;
@@ -497,9 +497,9 @@
pdfium::clamp(m_pVertScrollBar->GetPos(), 0.0f, szRange.height);
m_pVertScrollBar->SetPos(fPos);
m_pVertScrollBar->SetTrackPos(fPos);
- if ((GetProperties()->m_dwStyleExes &
- FWL_STYLEEXT_LTB_ShowScrollBarFocus) == 0 ||
- (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused)) {
+ if ((m_Properties.m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarFocus) ==
+ 0 ||
+ (m_Properties.m_dwStates & FWL_WGTSTATE_Focused)) {
m_pVertScrollBar->RemoveStates(FWL_WGTSTATE_Invisible);
}
m_pVertScrollBar->Update();
@@ -529,9 +529,9 @@
pdfium::clamp(m_pHorzScrollBar->GetPos(), 0.0f, szRange.height);
m_pHorzScrollBar->SetPos(fPos);
m_pHorzScrollBar->SetTrackPos(fPos);
- if ((GetProperties()->m_dwStyleExes &
- FWL_STYLEEXT_LTB_ShowScrollBarFocus) == 0 ||
- (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused)) {
+ if ((m_Properties.m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarFocus) ==
+ 0 ||
+ (m_Properties.m_dwStates & FWL_WGTSTATE_Focused)) {
m_pHorzScrollBar->RemoveStates(FWL_WGTSTATE_Invisible);
}
m_pHorzScrollBar->Update();
@@ -589,22 +589,22 @@
if (m_pVertScrollBar)
return;
- auto prop = std::make_unique<CFWL_WidgetProperties>();
- prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Vert;
- prop->m_dwStates = FWL_WGTSTATE_Invisible;
+ Properties prop;
+ prop.m_dwStyleExes = FWL_STYLEEXT_SCB_Vert;
+ prop.m_dwStates = FWL_WGTSTATE_Invisible;
m_pVertScrollBar =
- std::make_unique<CFWL_ScrollBar>(GetOwnerApp(), std::move(prop), this);
+ std::make_unique<CFWL_ScrollBar>(GetOwnerApp(), prop, this);
}
void CFWL_ListBox::InitHorizontalScrollBar() {
if (m_pHorzScrollBar)
return;
- auto prop = std::make_unique<CFWL_WidgetProperties>();
- prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Horz;
- prop->m_dwStates = FWL_WGTSTATE_Invisible;
+ Properties prop;
+ prop.m_dwStyleExes = FWL_STYLEEXT_SCB_Horz;
+ prop.m_dwStates = FWL_WGTSTATE_Invisible;
m_pHorzScrollBar =
- std::make_unique<CFWL_ScrollBar>(GetOwnerApp(), std::move(prop), this);
+ std::make_unique<CFWL_ScrollBar>(GetOwnerApp(), prop, this);
}
bool CFWL_ListBox::IsShowScrollBar(bool bVert) {
@@ -613,9 +613,8 @@
if (!pScrollbar || !pScrollbar->IsVisible())
return false;
- return !(GetProperties()->m_dwStyleExes &
- FWL_STYLEEXT_LTB_ShowScrollBarFocus) ||
- (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused);
+ return !(m_Properties.m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarFocus) ||
+ (m_Properties.m_dwStates & FWL_WGTSTATE_Focused);
}
void CFWL_ListBox::OnProcessMessage(CFWL_Message* pMessage) {
@@ -696,9 +695,9 @@
}
}
if (bSet)
- GetProperties()->m_dwStates |= (FWL_WGTSTATE_Focused);
+ m_Properties.m_dwStates |= (FWL_WGTSTATE_Focused);
else
- GetProperties()->m_dwStates &= ~(FWL_WGTSTATE_Focused);
+ m_Properties.m_dwStates &= ~(FWL_WGTSTATE_Focused);
RepaintRect(m_ClientRect);
}
diff --git a/xfa/fwl/cfwl_listbox.h b/xfa/fwl/cfwl_listbox.h
index c45e0a5..685d910 100644
--- a/xfa/fwl/cfwl_listbox.h
+++ b/xfa/fwl/cfwl_listbox.h
@@ -15,7 +15,6 @@
#include "xfa/fwl/cfwl_listbox.h"
#include "xfa/fwl/cfwl_listitem.h"
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
#define FWL_STYLEEXT_LTB_MultiSelection (1L << 0)
#define FWL_STYLEEXT_LTB_LeftAlign (0L << 4)
@@ -33,9 +32,9 @@
class CFWL_ListBox : public CFWL_Widget {
public:
- explicit CFWL_ListBox(const CFWL_App* pApp,
- std::unique_ptr<CFWL_WidgetProperties> properties,
- CFWL_Widget* pOuter);
+ CFWL_ListBox(const CFWL_App* pApp,
+ const Properties& properties,
+ CFWL_Widget* pOuter);
~CFWL_ListBox() override;
// CFWL_Widget
diff --git a/xfa/fwl/cfwl_monthcalendar.cpp b/xfa/fwl/cfwl_monthcalendar.cpp
index 49f9f74..5af4080 100644
--- a/xfa/fwl/cfwl_monthcalendar.cpp
+++ b/xfa/fwl/cfwl_monthcalendar.cpp
@@ -85,11 +85,10 @@
} // namespace
-CFWL_MonthCalendar::CFWL_MonthCalendar(
- const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
- CFWL_Widget* pOuter)
- : CFWL_Widget(app, std::move(properties), pOuter) {}
+CFWL_MonthCalendar::CFWL_MonthCalendar(const CFWL_App* app,
+ const Properties& properties,
+ CFWL_Widget* pOuter)
+ : CFWL_Widget(app, properties, pOuter) {}
CFWL_MonthCalendar::~CFWL_MonthCalendar() = default;
diff --git a/xfa/fwl/cfwl_monthcalendar.h b/xfa/fwl/cfwl_monthcalendar.h
index f57b443..6488a02 100644
--- a/xfa/fwl/cfwl_monthcalendar.h
+++ b/xfa/fwl/cfwl_monthcalendar.h
@@ -13,7 +13,6 @@
#include "core/fxcrt/cfx_datetime.h"
#include "xfa/fwl/cfwl_event.h"
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
#define FWL_ITEMSTATE_MCD_Flag (1L << 0)
#define FWL_ITEMSTATE_MCD_Selected (1L << 1)
@@ -23,7 +22,7 @@
class CFWL_MonthCalendar final : public CFWL_Widget {
public:
CFWL_MonthCalendar(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter);
~CFWL_MonthCalendar() override;
diff --git a/xfa/fwl/cfwl_picturebox.cpp b/xfa/fwl/cfwl_picturebox.cpp
index c1254a1..fafa67e 100644
--- a/xfa/fwl/cfwl_picturebox.cpp
+++ b/xfa/fwl/cfwl_picturebox.cpp
@@ -6,10 +6,8 @@
#include "xfa/fwl/cfwl_picturebox.h"
-#include <memory>
-
CFWL_PictureBox::CFWL_PictureBox(const CFWL_App* app)
- : CFWL_Widget(app, std::make_unique<CFWL_WidgetProperties>(), nullptr) {}
+ : CFWL_Widget(app, CFWL_Widget::Properties(), nullptr) {}
CFWL_PictureBox::~CFWL_PictureBox() = default;
diff --git a/xfa/fwl/cfwl_picturebox.h b/xfa/fwl/cfwl_picturebox.h
index e7e0a05..967af73 100644
--- a/xfa/fwl/cfwl_picturebox.h
+++ b/xfa/fwl/cfwl_picturebox.h
@@ -8,7 +8,6 @@
#define XFA_FWL_CFWL_PICTUREBOX_H_
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
class CFX_DIBitmap;
class CFWL_Widget;
diff --git a/xfa/fwl/cfwl_pushbutton.cpp b/xfa/fwl/cfwl_pushbutton.cpp
index 9e7d470..d0764d8 100644
--- a/xfa/fwl/cfwl_pushbutton.cpp
+++ b/xfa/fwl/cfwl_pushbutton.cpp
@@ -6,7 +6,6 @@
#include "xfa/fwl/cfwl_pushbutton.h"
-#include <memory>
#include <utility>
#include "xfa/fde/cfde_textout.h"
@@ -21,7 +20,7 @@
#include "xfa/fwl/ifwl_themeprovider.h"
CFWL_PushButton::CFWL_PushButton(const CFWL_App* app)
- : CFWL_Widget(app, std::make_unique<CFWL_WidgetProperties>(), nullptr) {}
+ : CFWL_Widget(app, Properties(), nullptr) {}
CFWL_PushButton::~CFWL_PushButton() = default;
@@ -31,7 +30,7 @@
void CFWL_PushButton::SetStates(uint32_t dwStates) {
if (dwStates & FWL_WGTSTATE_Disabled) {
- GetProperties()->m_dwStates = FWL_WGTSTATE_Disabled;
+ m_Properties.m_dwStates = FWL_WGTSTATE_Disabled;
return;
}
CFWL_Widget::SetStates(dwStates);
@@ -66,20 +65,20 @@
if (pMatrix)
param.m_matrix.Concat(*pMatrix);
param.m_PartRect = m_ClientRect;
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Focused)
param.m_pRtData = &m_CaptionRect;
GetThemeProvider()->DrawBackground(param);
}
uint32_t CFWL_PushButton::GetPartStates() {
uint32_t dwStates = CFWL_PartState_Normal;
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Focused)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Focused)
dwStates |= CFWL_PartState_Focused;
- if (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)
+ if (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)
dwStates = CFWL_PartState_Disabled;
- else if (GetProperties()->m_dwStates & FWL_STATE_PSB_Pressed)
+ else if (m_Properties.m_dwStates & FWL_STATE_PSB_Pressed)
dwStates |= CFWL_PartState_Pressed;
- else if (GetProperties()->m_dwStates & FWL_STATE_PSB_Hovered)
+ else if (m_Properties.m_dwStates & FWL_STATE_PSB_Hovered)
dwStates |= CFWL_PartState_Hovered;
return dwStates;
}
@@ -136,28 +135,28 @@
void CFWL_PushButton::OnFocusChanged(CFWL_Message* pMsg, bool bSet) {
if (bSet)
- GetProperties()->m_dwStates |= FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates |= FWL_WGTSTATE_Focused;
else
- GetProperties()->m_dwStates &= ~FWL_WGTSTATE_Focused;
+ m_Properties.m_dwStates &= ~FWL_WGTSTATE_Focused;
RepaintRect(m_ClientRect);
}
void CFWL_PushButton::OnLButtonDown(CFWL_MessageMouse* pMsg) {
m_bBtnDown = true;
- GetProperties()->m_dwStates |= FWL_STATE_PSB_Hovered;
- GetProperties()->m_dwStates |= FWL_STATE_PSB_Pressed;
+ m_Properties.m_dwStates |= FWL_STATE_PSB_Hovered;
+ m_Properties.m_dwStates |= FWL_STATE_PSB_Pressed;
RepaintRect(m_ClientRect);
}
void CFWL_PushButton::OnLButtonUp(CFWL_MessageMouse* pMsg) {
m_bBtnDown = false;
if (m_ClientRect.Contains(pMsg->m_pos)) {
- GetProperties()->m_dwStates &= ~FWL_STATE_PSB_Pressed;
- GetProperties()->m_dwStates |= FWL_STATE_PSB_Hovered;
+ m_Properties.m_dwStates &= ~FWL_STATE_PSB_Pressed;
+ m_Properties.m_dwStates |= FWL_STATE_PSB_Hovered;
} else {
- GetProperties()->m_dwStates &= ~FWL_STATE_PSB_Hovered;
- GetProperties()->m_dwStates &= ~FWL_STATE_PSB_Pressed;
+ m_Properties.m_dwStates &= ~FWL_STATE_PSB_Hovered;
+ m_Properties.m_dwStates &= ~FWL_STATE_PSB_Pressed;
}
if (m_ClientRect.Contains(pMsg->m_pos)) {
CFWL_Event wmClick(CFWL_Event::Type::Click, this);
@@ -170,29 +169,29 @@
bool bRepaint = false;
if (m_bBtnDown) {
if (m_ClientRect.Contains(pMsg->m_pos)) {
- if ((GetProperties()->m_dwStates & FWL_STATE_PSB_Pressed) == 0) {
- GetProperties()->m_dwStates |= FWL_STATE_PSB_Pressed;
+ if ((m_Properties.m_dwStates & FWL_STATE_PSB_Pressed) == 0) {
+ m_Properties.m_dwStates |= FWL_STATE_PSB_Pressed;
bRepaint = true;
}
- if (GetProperties()->m_dwStates & FWL_STATE_PSB_Hovered) {
- GetProperties()->m_dwStates &= ~FWL_STATE_PSB_Hovered;
+ if (m_Properties.m_dwStates & FWL_STATE_PSB_Hovered) {
+ m_Properties.m_dwStates &= ~FWL_STATE_PSB_Hovered;
bRepaint = true;
}
} else {
- if (GetProperties()->m_dwStates & FWL_STATE_PSB_Pressed) {
- GetProperties()->m_dwStates &= ~FWL_STATE_PSB_Pressed;
+ if (m_Properties.m_dwStates & FWL_STATE_PSB_Pressed) {
+ m_Properties.m_dwStates &= ~FWL_STATE_PSB_Pressed;
bRepaint = true;
}
- if ((GetProperties()->m_dwStates & FWL_STATE_PSB_Hovered) == 0) {
- GetProperties()->m_dwStates |= FWL_STATE_PSB_Hovered;
+ if ((m_Properties.m_dwStates & FWL_STATE_PSB_Hovered) == 0) {
+ m_Properties.m_dwStates |= FWL_STATE_PSB_Hovered;
bRepaint = true;
}
}
} else {
if (!m_ClientRect.Contains(pMsg->m_pos))
return;
- if ((GetProperties()->m_dwStates & FWL_STATE_PSB_Hovered) == 0) {
- GetProperties()->m_dwStates |= FWL_STATE_PSB_Hovered;
+ if ((m_Properties.m_dwStates & FWL_STATE_PSB_Hovered) == 0) {
+ m_Properties.m_dwStates |= FWL_STATE_PSB_Hovered;
bRepaint = true;
}
}
@@ -202,8 +201,8 @@
void CFWL_PushButton::OnMouseLeave(CFWL_MessageMouse* pMsg) {
m_bBtnDown = false;
- GetProperties()->m_dwStates &= ~FWL_STATE_PSB_Hovered;
- GetProperties()->m_dwStates &= ~FWL_STATE_PSB_Pressed;
+ m_Properties.m_dwStates &= ~FWL_STATE_PSB_Hovered;
+ m_Properties.m_dwStates &= ~FWL_STATE_PSB_Pressed;
RepaintRect(m_ClientRect);
}
diff --git a/xfa/fwl/cfwl_pushbutton.h b/xfa/fwl/cfwl_pushbutton.h
index 67403a6..7f83a74 100644
--- a/xfa/fwl/cfwl_pushbutton.h
+++ b/xfa/fwl/cfwl_pushbutton.h
@@ -8,7 +8,6 @@
#define XFA_FWL_CFWL_PUSHBUTTON_H_
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
#define FWL_STATE_PSB_Hovered (1 << FWL_WGTSTATE_MAX)
#define FWL_STATE_PSB_Pressed (1 << (FWL_WGTSTATE_MAX + 1))
diff --git a/xfa/fwl/cfwl_scrollbar.cpp b/xfa/fwl/cfwl_scrollbar.cpp
index 000c10d..1a7bbde 100644
--- a/xfa/fwl/cfwl_scrollbar.cpp
+++ b/xfa/fwl/cfwl_scrollbar.cpp
@@ -27,11 +27,10 @@
} // namespace
-CFWL_ScrollBar::CFWL_ScrollBar(
- const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
- CFWL_Widget* pOuter)
- : CFWL_Widget(app, std::move(properties), pOuter) {}
+CFWL_ScrollBar::CFWL_ScrollBar(const CFWL_App* app,
+ const Properties& properties,
+ CFWL_Widget* pOuter)
+ : CFWL_Widget(app, properties, pOuter) {}
CFWL_ScrollBar::~CFWL_ScrollBar() = default;
@@ -80,7 +79,7 @@
CFWL_ThemeBackground param;
param.m_pWidget = this;
param.m_iPart = bLower ? CFWL_Part::LowerTrack : CFWL_Part::UpperTrack;
- param.m_dwStates = (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)
+ param.m_dwStates = (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)
? CFWL_PartState_Disabled
: (bLower ? m_iMinTrackState : m_iMaxTrackState);
param.m_pGraphics = pGraphics;
@@ -95,7 +94,7 @@
CFWL_ThemeBackground param;
param.m_pWidget = this;
param.m_iPart = bMinBtn ? CFWL_Part::ForeArrow : CFWL_Part::BackArrow;
- param.m_dwStates = (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)
+ param.m_dwStates = (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)
? CFWL_PartState_Disabled
: (bMinBtn ? m_iMinButtonState : m_iMaxButtonState);
param.m_pGraphics = pGraphics;
@@ -110,7 +109,7 @@
CFWL_ThemeBackground param;
param.m_pWidget = this;
param.m_iPart = CFWL_Part::Thumb;
- param.m_dwStates = (GetProperties()->m_dwStates & FWL_WGTSTATE_Disabled)
+ param.m_dwStates = (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled)
? CFWL_PartState_Disabled
: m_iThumbButtonState;
param.m_pGraphics = pGraphics;
diff --git a/xfa/fwl/cfwl_scrollbar.h b/xfa/fwl/cfwl_scrollbar.h
index 83899b0..da29b3d 100644
--- a/xfa/fwl/cfwl_scrollbar.h
+++ b/xfa/fwl/cfwl_scrollbar.h
@@ -14,9 +14,6 @@
#include "core/fxcrt/unowned_ptr.h"
#include "xfa/fwl/cfwl_eventscroll.h"
#include "xfa/fwl/cfwl_widget.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
-
-class CFWL_Widget;
#define FWL_STYLEEXT_SCB_Horz (0L << 0)
#define FWL_STYLEEXT_SCB_Vert (1L << 0)
@@ -25,7 +22,7 @@
public CFX_Timer::CallbackIface {
public:
CFWL_ScrollBar(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter);
~CFWL_ScrollBar() override;
@@ -60,7 +57,7 @@
private:
bool IsVertical() const {
- return !!(GetProperties()->m_dwStyleExes & FWL_STYLEEXT_SCB_Vert);
+ return !!(m_Properties.m_dwStyleExes & FWL_STYLEEXT_SCB_Vert);
}
void DrawTrack(CXFA_Graphics* pGraphics,
bool bLower,
diff --git a/xfa/fwl/cfwl_widget.cpp b/xfa/fwl/cfwl_widget.cpp
index aeb819f..9708768 100644
--- a/xfa/fwl/cfwl_widget.cpp
+++ b/xfa/fwl/cfwl_widget.cpp
@@ -33,14 +33,12 @@
#define FWL_WGT_CalcMultiLineDefWidth 120.0f
CFWL_Widget::CFWL_Widget(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter)
- : m_pOwnerApp(app),
+ : m_Properties(properties),
+ m_pOwnerApp(app),
m_pWidgetMgr(app->GetWidgetMgr()),
- m_pProperties(std::move(properties)),
m_pOuter(pOuter) {
- ASSERT(m_pWidgetMgr);
- ASSERT(m_pProperties);
m_pWidgetMgr->InsertWidget(m_pOuter, this);
}
@@ -80,21 +78,14 @@
void CFWL_Widget::ModifyStyles(uint32_t dwStylesAdded,
uint32_t dwStylesRemoved) {
- m_pProperties->m_dwStyles =
- (m_pProperties->m_dwStyles & ~dwStylesRemoved) | dwStylesAdded;
-}
-
-uint32_t CFWL_Widget::GetStylesEx() const {
- return m_pProperties->m_dwStyleExes;
-}
-uint32_t CFWL_Widget::GetStates() const {
- return m_pProperties->m_dwStates;
+ m_Properties.m_dwStyles &= ~dwStylesRemoved;
+ m_Properties.m_dwStyles |= dwStylesAdded;
}
void CFWL_Widget::ModifyStylesEx(uint32_t dwStylesExAdded,
uint32_t dwStylesExRemoved) {
- m_pProperties->m_dwStyleExes =
- (m_pProperties->m_dwStyleExes & ~dwStylesExRemoved) | dwStylesExAdded;
+ m_Properties.m_dwStyleExes &= ~dwStylesExRemoved;
+ m_Properties.m_dwStyleExes |= dwStylesExAdded;
}
static void NotifyHideChildWidget(CFWL_WidgetMgr* widgetMgr,
@@ -109,7 +100,7 @@
}
void CFWL_Widget::SetStates(uint32_t dwStates) {
- m_pProperties->m_dwStates |= dwStates;
+ m_Properties.m_dwStates |= dwStates;
if (IsVisible())
return;
@@ -123,11 +114,10 @@
NotifyHideChildWidget(widgetMgr, child, noteDriver);
child = widgetMgr->GetNextSiblingWidget(child);
}
- return;
}
void CFWL_Widget::RemoveStates(uint32_t dwStates) {
- m_pProperties->m_dwStates &= ~dwStates;
+ m_Properties.m_dwStates &= ~dwStates;
}
FWL_WidgetHit CFWL_Widget::HitTest(const CFX_PointF& point) {
@@ -172,28 +162,28 @@
}
bool CFWL_Widget::IsEnabled() const {
- return (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) == 0;
+ return (m_Properties.m_dwStates & FWL_WGTSTATE_Disabled) == 0;
}
bool CFWL_Widget::HasBorder() const {
- return !!(m_pProperties->m_dwStyles & FWL_WGTSTYLE_Border);
+ return !!(m_Properties.m_dwStyles & FWL_WGTSTYLE_Border);
}
bool CFWL_Widget::IsVisible() const {
- return !(m_pProperties->m_dwStates & FWL_WGTSTATE_Invisible);
+ return !(m_Properties.m_dwStates & FWL_WGTSTATE_Invisible);
}
bool CFWL_Widget::IsOverLapper() const {
- return (m_pProperties->m_dwStyles & FWL_WGTSTYLE_WindowTypeMask) ==
+ return (m_Properties.m_dwStyles & FWL_WGTSTYLE_WindowTypeMask) ==
FWL_WGTSTYLE_OverLapper;
}
bool CFWL_Widget::IsPopup() const {
- return !!(m_pProperties->m_dwStyles & FWL_WGTSTYLE_Popup);
+ return !!(m_Properties.m_dwStyles & FWL_WGTSTYLE_Popup);
}
bool CFWL_Widget::IsChild() const {
- return !!(m_pProperties->m_dwStyles & FWL_WGTSTYLE_Child);
+ return !!(m_Properties.m_dwStyles & FWL_WGTSTYLE_Child);
}
CFWL_Widget* CFWL_Widget::GetOutmost() const {
@@ -357,6 +347,12 @@
void CFWL_Widget::OnDrawWidget(CXFA_Graphics* pGraphics,
const CFX_Matrix& matrix) {}
+CFWL_Widget::Properties::Properties() = default;
+
+CFWL_Widget::Properties::Properties(const Properties& that) = default;
+
+CFWL_Widget::Properties::~Properties() = default;
+
CFWL_Widget::ScopedUpdateLock::ScopedUpdateLock(CFWL_Widget* widget)
: widget_(widget) {
widget_->LockUpdate();
diff --git a/xfa/fwl/cfwl_widget.h b/xfa/fwl/cfwl_widget.h
index c475aa9..9fe3a53 100644
--- a/xfa/fwl/cfwl_widget.h
+++ b/xfa/fwl/cfwl_widget.h
@@ -7,8 +7,6 @@
#ifndef XFA_FWL_CFWL_WIDGET_H_
#define XFA_FWL_CFWL_WIDGET_H_
-#include <memory>
-
#include "core/fxcrt/fx_coordinates.h"
#include "core/fxcrt/fx_system.h"
#include "core/fxcrt/observed_ptr.h"
@@ -16,7 +14,7 @@
#include "xfa/fde/cfde_data.h"
#include "xfa/fwl/cfwl_themepart.h"
#include "xfa/fwl/cfwl_widgetmgr.h"
-#include "xfa/fwl/cfwl_widgetproperties.h"
+#include "xfa/fwl/fwl_widgetdef.h"
#include "xfa/fwl/fwl_widgethit.h"
#include "xfa/fwl/ifwl_widgetdelegate.h"
@@ -59,6 +57,17 @@
virtual void GetBorderColorAndThickness(FX_ARGB* cr, float* fWidth) = 0;
};
+ class Properties {
+ public:
+ Properties();
+ Properties(const Properties& that);
+ ~Properties();
+
+ uint32_t m_dwStyles = FWL_WGTSTYLE_Child;
+ uint32_t m_dwStyleExes = 0;
+ uint32_t m_dwStates = 0;
+ };
+
class ScopedUpdateLock {
public:
explicit ScopedUpdateLock(CFWL_Widget* widget);
@@ -103,8 +112,8 @@
CFWL_Widget* GetOutmost() const;
void ModifyStyles(uint32_t dwStylesAdded, uint32_t dwStylesRemoved);
- uint32_t GetStylesEx() const;
- uint32_t GetStates() const;
+ uint32_t GetStylesEx() const { return m_Properties.m_dwStyleExes; }
+ uint32_t GetStates() const { return m_Properties.m_dwStates; }
CFX_PointF TransformTo(CFWL_Widget* pWidget, const CFX_PointF& point);
CFX_Matrix GetMatrix() const;
@@ -127,7 +136,7 @@
protected:
CFWL_Widget(const CFWL_App* app,
- std::unique_ptr<CFWL_WidgetProperties> properties,
+ const Properties& properties,
CFWL_Widget* pOuter);
bool IsEnabled() const;
@@ -137,10 +146,6 @@
float GetCXBorderSize() const;
float GetCYBorderSize() const;
CFX_RectF GetRelativeRect() const;
- CFWL_WidgetProperties* GetProperties() { return m_pProperties.get(); }
- const CFWL_WidgetProperties* GetProperties() const {
- return m_pProperties.get();
- }
CFX_SizeF CalcTextSize(const WideString& wsText,
bool bMultiLine);
void CalcTextRect(const WideString& wsText,
@@ -155,6 +160,7 @@
CFWL_Part iPartBorder,
const CFX_Matrix& pMatrix);
+ Properties m_Properties;
CFX_RectF m_WidgetRect;
private:
@@ -176,7 +182,6 @@
uint64_t m_nEventKey = 0;
UnownedPtr<const CFWL_App> const m_pOwnerApp;
UnownedPtr<CFWL_WidgetMgr> const m_pWidgetMgr;
- std::unique_ptr<CFWL_WidgetProperties> m_pProperties;
CFWL_Widget* const m_pOuter;
AdapterIface* m_pAdapterIface = nullptr;
UnownedPtr<IFWL_WidgetDelegate> m_pDelegate;
diff --git a/xfa/fwl/cfwl_widgetproperties.cpp b/xfa/fwl/cfwl_widgetproperties.cpp
deleted file mode 100644
index f592d7b..0000000
--- a/xfa/fwl/cfwl_widgetproperties.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "xfa/fwl/cfwl_widgetproperties.h"
-
-CFWL_WidgetProperties::CFWL_WidgetProperties() = default;
-
-CFWL_WidgetProperties::CFWL_WidgetProperties(
- const CFWL_WidgetProperties& that) = default;
-
-CFWL_WidgetProperties::~CFWL_WidgetProperties() = default;
diff --git a/xfa/fwl/cfwl_widgetproperties.h b/xfa/fwl/cfwl_widgetproperties.h
deleted file mode 100644
index 8d3c8ec..0000000
--- a/xfa/fwl/cfwl_widgetproperties.h
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef XFA_FWL_CFWL_WIDGETPROPERTIES_H_
-#define XFA_FWL_CFWL_WIDGETPROPERTIES_H_
-
-#include "core/fxcrt/fx_system.h"
-#include "xfa/fwl/fwl_widgetdef.h"
-
-class CFWL_WidgetProperties {
- public:
- CFWL_WidgetProperties();
- CFWL_WidgetProperties(const CFWL_WidgetProperties& that);
- ~CFWL_WidgetProperties();
-
- uint32_t m_dwStyles = FWL_WGTSTYLE_Child;
- uint32_t m_dwStyleExes = 0;
- uint32_t m_dwStates = 0;
-};
-
-#endif // XFA_FWL_CFWL_WIDGETPROPERTIES_H_
diff --git a/xfa/fxfa/cxfa_fflistbox.cpp b/xfa/fxfa/cxfa_fflistbox.cpp
index 76a28c6..655311a 100644
--- a/xfa/fxfa/cxfa_fflistbox.cpp
+++ b/xfa/fxfa/cxfa_fflistbox.cpp
@@ -44,7 +44,7 @@
RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
auto pNew = std::make_unique<CFWL_ListBox>(
- GetFWLApp(), std::make_unique<CFWL_WidgetProperties>(), nullptr);
+ GetFWLApp(), CFWL_Widget::Properties(), nullptr);
CFWL_ListBox* pListBox = pNew.get();
pListBox->ModifyStyles(FWL_WGTSTYLE_VScroll | FWL_WGTSTYLE_NoBackground,
0xFFFFFFFF);
diff --git a/xfa/fxfa/cxfa_ffnumericedit.cpp b/xfa/fxfa/cxfa_ffnumericedit.cpp
index dae089c..da60a3a 100644
--- a/xfa/fxfa/cxfa_ffnumericedit.cpp
+++ b/xfa/fxfa/cxfa_ffnumericedit.cpp
@@ -29,7 +29,7 @@
RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
auto pNewEdit = std::make_unique<CFWL_Edit>(
- GetFWLApp(), std::make_unique<CFWL_WidgetProperties>(), nullptr);
+ GetFWLApp(), CFWL_Widget::Properties(), nullptr);
CFWL_Edit* pWidget = pNewEdit.get();
SetNormalWidget(std::move(pNewEdit));
pWidget->SetAdapterIface(this);
diff --git a/xfa/fxfa/cxfa_ffpasswordedit.cpp b/xfa/fxfa/cxfa_ffpasswordedit.cpp
index b0ece33..7d222b7 100644
--- a/xfa/fxfa/cxfa_ffpasswordedit.cpp
+++ b/xfa/fxfa/cxfa_ffpasswordedit.cpp
@@ -28,7 +28,7 @@
RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
auto pNewEdit = std::make_unique<CFWL_Edit>(
- GetFWLApp(), std::make_unique<CFWL_WidgetProperties>(), nullptr);
+ GetFWLApp(), CFWL_Widget::Properties(), nullptr);
CFWL_Edit* pWidget = pNewEdit.get();
SetNormalWidget(std::move(pNewEdit));
pWidget->SetAdapterIface(this);
diff --git a/xfa/fxfa/cxfa_fftextedit.cpp b/xfa/fxfa/cxfa_fftextedit.cpp
index c2833b8..b8579c2 100644
--- a/xfa/fxfa/cxfa_fftextedit.cpp
+++ b/xfa/fxfa/cxfa_fftextedit.cpp
@@ -49,7 +49,7 @@
RetainPtr<CXFA_ContentLayoutItem> retain_layout(m_pLayoutItem.Get());
auto pNewWidget = std::make_unique<CFWL_Edit>(
- GetFWLApp(), std::make_unique<CFWL_WidgetProperties>(), nullptr);
+ GetFWLApp(), CFWL_Widget::Properties(), nullptr);
CFWL_Edit* pFWLEdit = pNewWidget.get();
SetNormalWidget(std::move(pNewWidget));
pFWLEdit->SetAdapterIface(this);