summaryrefslogtreecommitdiff
path: root/fpdfsdk/pdfwindow/cpwl_combo_box.cpp
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2017-06-09 01:04:52 -0700
committerChromium commit bot <commit-bot@chromium.org>2017-06-13 16:41:09 +0000
commit3516256c28c29d13e9092e7bb3ea3b417d3bb6df (patch)
tree543765e8a5a5376d4dcdd7bfcc464d2c0fe88c7f /fpdfsdk/pdfwindow/cpwl_combo_box.cpp
parent19e6bcffdbf88cf2413699e6cfbd493ca3cba0a8 (diff)
downloadpdfium-3516256c28c29d13e9092e7bb3ea3b417d3bb6df.tar.xz
Implement CPWL_ComboBox::OnDestroy() to manage unowned pointers.
CPWL_ComboBox's unowned pointers to other CPWL_Wnds need to be released at the right time. Also release the unowned pointer for CPWL_Wnd's vertical scroll bar at the right time. BUG=729041 Change-Id: I06a1da35fcb18dae8faf9cd4fbc0b75d38f115b0 Reviewed-on: https://pdfium-review.googlesource.com/6418 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fpdfsdk/pdfwindow/cpwl_combo_box.cpp')
-rw-r--r--fpdfsdk/pdfwindow/cpwl_combo_box.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/fpdfsdk/pdfwindow/cpwl_combo_box.cpp b/fpdfsdk/pdfwindow/cpwl_combo_box.cpp
index 42786806d0..b69f98906e 100644
--- a/fpdfsdk/pdfwindow/cpwl_combo_box.cpp
+++ b/fpdfsdk/pdfwindow/cpwl_combo_box.cpp
@@ -182,14 +182,7 @@ bool CPWL_CBButton::OnLButtonUp(const CFX_PointF& point, uint32_t nFlag) {
return true;
}
-CPWL_ComboBox::CPWL_ComboBox()
- : m_pEdit(nullptr),
- m_pButton(nullptr),
- m_pList(nullptr),
- m_bPopup(false),
- m_bBottom(true),
- m_nSelectItem(-1),
- m_pFillerNotify(nullptr) {}
+CPWL_ComboBox::CPWL_ComboBox() {}
CPWL_ComboBox::~CPWL_ComboBox() {}
@@ -202,6 +195,17 @@ void CPWL_ComboBox::OnCreate(PWL_CREATEPARAM& cp) {
cp.dwFlags &= ~PWS_VSCROLL;
}
+void CPWL_ComboBox::OnDestroy() {
+ // Until cleanup takes place in the virtual destructor for CPWL_Wnd
+ // subclasses, implement the virtual OnDestroy method that does the
+ // cleanup first, then invokes the superclass OnDestroy ... gee,
+ // like a dtor would.
+ m_pList.Release();
+ m_pButton.Release();
+ m_pEdit.Release();
+ CPWL_Wnd::OnDestroy();
+}
+
void CPWL_ComboBox::SetFocus() {
if (m_pEdit)
m_pEdit->SetFocus();