summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fpdfsdk/pwl/cpwl_edit.cpp12
-rw-r--r--fpdfsdk/pwl/cpwl_wnd.cpp5
2 files changed, 16 insertions, 1 deletions
diff --git a/fpdfsdk/pwl/cpwl_edit.cpp b/fpdfsdk/pwl/cpwl_edit.cpp
index a6f6f2ac86..4558e432ac 100644
--- a/fpdfsdk/pwl/cpwl_edit.cpp
+++ b/fpdfsdk/pwl/cpwl_edit.cpp
@@ -340,14 +340,26 @@ void CPWL_Edit::OnSetFocus() {
}
void CPWL_Edit::OnKillFocus() {
+ ObservedPtr observed_ptr = ObservedPtr(this);
CPWL_ScrollBar* pScroll = GetVScrollBar();
if (pScroll && pScroll->IsVisible()) {
pScroll->SetVisible(false);
+ if (!observed_ptr)
+ return;
+
Move(m_rcOldWindow, true, true);
}
+ if (!observed_ptr)
+ return;
m_pEdit->SelectNone();
+ if (!observed_ptr)
+ return;
+
SetCaret(false, CFX_PointF(), CFX_PointF());
+ if (!observed_ptr)
+ return;
+
SetCharSet(FX_CHARSET_ANSI);
m_bFocus = false;
}
diff --git a/fpdfsdk/pwl/cpwl_wnd.cpp b/fpdfsdk/pwl/cpwl_wnd.cpp
index 53c692dada..e26df4d199 100644
--- a/fpdfsdk/pwl/cpwl_wnd.cpp
+++ b/fpdfsdk/pwl/cpwl_wnd.cpp
@@ -44,7 +44,7 @@ PWL_CREATEPARAM::PWL_CREATEPARAM()
PWL_CREATEPARAM::PWL_CREATEPARAM(const PWL_CREATEPARAM& other) = default;
-class CPWL_MsgControl {
+class CPWL_MsgControl : public CFX_Observable<CPWL_MsgControl> {
friend class CPWL_Wnd;
public:
@@ -96,9 +96,12 @@ class CPWL_MsgControl {
}
void KillFocus() {
+ ObservedPtr observed_ptr = ObservedPtr(this);
if (!m_aKeyboardPath.empty())
if (CPWL_Wnd* pWnd = m_aKeyboardPath[0])
pWnd->OnKillFocus();
+ if (!observed_ptr)
+ return;
m_pMainKeyboardWnd = nullptr;
m_aKeyboardPath.clear();