diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-09-09 10:15:01 +0100 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-09-09 13:29:57 +0200 |
commit | 65fb647b3b95ebc6023b6e02c5fc2a130842eac7 (patch) | |
tree | 98748163f9b5e7fa02d334b026eebde85a73f566 /sc | |
parent | ec23228a3a2fc4e8868f7f04b838313be59ad719 (diff) |
Resolves: tdf#144376 focus into protected ScTextWnd shouldn't be possible
the expectations are that this isn't possible and if it happens then
under windows there is a QueryCharPosition which will trigger the
deletion of the ScTextWnd EditView due to that expectation before it is
then unconditionally dereferenced
Change-Id: Ied5d8031ae7d74669a2958dbcdec87843a26d384
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121841
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/app/inputwin.cxx | 7 | ||||
-rw-r--r-- | sc/source/ui/inc/inputwin.hxx | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx index fadce637d2c5..1643d212e8ac 100644 --- a/sc/source/ui/app/inputwin.cxx +++ b/sc/source/ui/app/inputwin.cxx @@ -1575,12 +1575,17 @@ bool ScTextWnd::MouseMove( const MouseEvent& rMEvt ) return m_xEditView && m_xEditView->MouseMove(rMEvt); } +bool ScTextWnd::CanFocus() const +{ + return SC_MOD()->IsEditMode(); +} + bool ScTextWnd::MouseButtonDown( const MouseEvent& rMEvt ) { if (!HasFocus()) { StartEditEngine(); - if ( SC_MOD()->IsEditMode() ) + if (CanFocus()) TextGrabFocus(); } diff --git a/sc/source/ui/inc/inputwin.hxx b/sc/source/ui/inc/inputwin.hxx index ab806987b78c..92ecbfcd990d 100644 --- a/sc/source/ui/inc/inputwin.hxx +++ b/sc/source/ui/inc/inputwin.hxx @@ -125,6 +125,7 @@ protected: virtual bool MouseButtonUp( const MouseEvent& rMEvt ) override; virtual bool Command( const CommandEvent& rCEvt ) override; virtual bool KeyInput(const KeyEvent& rKEvt) override; + virtual bool CanFocus() const override; virtual void GetFocus() override; virtual bool StartDrag() override; |