summaryrefslogtreecommitdiff
path: root/fpdfsdk/pwl/cpwl_scroll_bar.h
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-10-25 23:25:58 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-10-25 23:25:58 +0000
commit6fe32f898af3eea875fd01a6d18f719d17dd72f3 (patch)
treef63a1a03d3fffc3e4e765442df9805b526660765 /fpdfsdk/pwl/cpwl_scroll_bar.h
parented7da31f67e93c8923669ad496126aa005a8d3a2 (diff)
downloadpdfium-6fe32f898af3eea875fd01a6d18f719d17dd72f3.tar.xz
Make CPWL_Wnd own its pAttachedData.
This requires moving it out of CreateParams, since that must be a copyable struct, and implies that currently there is some questionable sharing going on. To resolve this, introduce a Clone() method so that each window gets its own copy. Make GetAttachedData() return a const pointer, so that callers can't free it behind our back. Tidy initializations along the way. Change-Id: Iadc97688b4692bf4fafefe8cff88af88672f7110 Reviewed-on: https://pdfium-review.googlesource.com/c/44590 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'fpdfsdk/pwl/cpwl_scroll_bar.h')
-rw-r--r--fpdfsdk/pwl/cpwl_scroll_bar.h20
1 files changed, 12 insertions, 8 deletions
diff --git a/fpdfsdk/pwl/cpwl_scroll_bar.h b/fpdfsdk/pwl/cpwl_scroll_bar.h
index 3592423a7d..40660db1f6 100644
--- a/fpdfsdk/pwl/cpwl_scroll_bar.h
+++ b/fpdfsdk/pwl/cpwl_scroll_bar.h
@@ -7,6 +7,8 @@
#ifndef FPDFSDK_PWL_CPWL_SCROLL_BAR_H_
#define FPDFSDK_PWL_CPWL_SCROLL_BAR_H_
+#include <memory>
+
#include "core/fxcrt/unowned_ptr.h"
#include "fpdfsdk/pwl/cpwl_wnd.h"
@@ -44,7 +46,8 @@ enum PWL_SBBUTTON_TYPE { PSBT_MIN, PSBT_MAX, PSBT_POS };
class CPWL_SBButton final : public CPWL_Wnd {
public:
- CPWL_SBButton(PWL_SCROLLBAR_TYPE eScrollBarType,
+ CPWL_SBButton(std::unique_ptr<PrivateData> pAttachedData,
+ PWL_SCROLLBAR_TYPE eScrollBarType,
PWL_SBBUTTON_TYPE eButtonType);
~CPWL_SBButton() override;
@@ -59,7 +62,7 @@ class CPWL_SBButton final : public CPWL_Wnd {
private:
PWL_SCROLLBAR_TYPE m_eScrollBarType;
PWL_SBBUTTON_TYPE m_eSBButtonType;
- bool m_bMouseDown;
+ bool m_bMouseDown = false;
};
struct PWL_FLOATRANGE {
@@ -114,7 +117,8 @@ struct PWL_SCROLL_PRIVATEDATA {
class CPWL_ScrollBar final : public CPWL_Wnd {
public:
- explicit CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType);
+ CPWL_ScrollBar(std::unique_ptr<PrivateData> pAttachedData,
+ PWL_SCROLLBAR_TYPE sbType);
~CPWL_ScrollBar() override;
// CPWL_Wnd:
@@ -171,11 +175,11 @@ class CPWL_ScrollBar final : public CPWL_Wnd {
UnownedPtr<CPWL_SBButton> m_pMaxButton;
UnownedPtr<CPWL_SBButton> m_pPosButton;
PWL_SCROLL_PRIVATEDATA m_sData;
- bool m_bMouseDown;
- bool m_bMinOrMax;
- bool m_bNotifyForever;
- float m_nOldPos;
- float m_fOldPosButton;
+ bool m_bMouseDown = false;
+ bool m_bMinOrMax = false;
+ bool m_bNotifyForever = true;
+ float m_nOldPos = 0.0f;
+ float m_fOldPosButton = 0.0f;
};
#endif // FPDFSDK_PWL_CPWL_SCROLL_BAR_H_