summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2023-01-24 12:33:45 +0000
committerCaolán McNamara <caolanm@redhat.com>2023-01-24 21:16:13 +0000
commitd8b60e66bf1847989f6ff3c06ea214cef059ecaf (patch)
tree4d8c4bca87afc10d916fcbfcb85112a4b59a6429 /vcl
parent639d092bc258f079f0c1655265347c94d0c51ab1 (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.cxx10
-rw-r--r--vcl/win/window/salframe.cxx4
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