diff options
author | Caolán McNamara <caolanm@redhat.com> | 2023-01-24 12:33:45 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2023-01-24 21:16:13 +0000 |
commit | d8b60e66bf1847989f6ff3c06ea214cef059ecaf (patch) | |
tree | 4d8c4bca87afc10d916fcbfcb85112a4b59a6429 /vcl | |
parent | 639d092bc258f079f0c1655265347c94d0c51ab1 (diff) |
tdf#152404 crash with ibus-mozc with ctrl+alt+c during ExtTextInput
Change-Id: I86e19387d93a57c3ad263f0c2dc9222a5f3480be
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146065
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/unx/gtk3/gtkframe.cxx | 10 | ||||
-rw-r--r-- | vcl/win/window/salframe.cxx | 4 |
2 files changed, 12 insertions, 2 deletions
diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx index e9127b23e659..0a030c83b14b 100644 --- a/vcl/unx/gtk3/gtkframe.cxx +++ b/vcl/unx/gtk3/gtkframe.cxx @@ -451,6 +451,16 @@ bool GtkSalFrame::doKeyCallback( guint state, bool bStopProcessingKey; if (bDown) { + // tdf#152404 Commit uncommitted text before dispatching key shortcuts. In + // certain cases such as pressing Control-Alt-C in a Writer document while + // there is uncommitted text will call GtkSalFrame::EndExtTextInput() which + // will dispatch a SalEvent::EndExtTextInput event. Writer's handler for that + // event will delete the uncommitted text and then insert the committed text + // but LibreOffice will crash when deleting the uncommitted text because + // deletion of the text also removes and deletes the newly inserted comment. + if (m_pIMHandler && !m_pIMHandler->m_aInputEvent.maText.isEmpty() && (aEvent.mnCode & (KEY_MOD1 | KEY_MOD2))) + m_pIMHandler->doCallEndExtTextInput(); + bStopProcessingKey = CallCallbackExc(SalEvent::KeyInput, &aEvent); // #i46889# copy AlternateKeyCode handling from generic plugin if (!bStopProcessingKey) diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx index 4a1a7f1a88d6..474e48560fb9 100644 --- a/vcl/win/window/salframe.cxx +++ b/vcl/win/window/salframe.cxx @@ -3417,8 +3417,8 @@ static void UnsetAltIfAltGr(SalKeyEvent& rKeyEvt, sal_uInt16 nModCode) } // tdf#152404 Commit uncommitted text before dispatching key shortcuts. In -// certain cases such as pressing Command-Option-C in a Writer document while -// there is uncommitted text will call AquaSalFrame::EndExtTextInput() which +// certain cases such as pressing Control-Alt-C in a Writer document while +// there is uncommitted text will call WinSalFrame::EndExtTextInput() which // will dispatch a SalEvent::EndExtTextInput event. Writer's handler for that // event will delete the uncommitted text and then insert the committed text // but LibreOffice will crash when deleting the uncommitted text because |