vcl/unx/gtk3/gtkframe.cxx | 10 ++++++++++ vcl/win/window/salframe.cxx | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-)
New commits: commit c1b14f94ca800577eb79eec3cc69b764017a6e25 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Jan 24 12:33:45 2023 +0000 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Thu Feb 2 11:29:14 2023 +0000 tdf#152404 crash with ibus-mozc with ctrl+alt+c during ExtTextInput Change-Id: I86e19387d93a57c3ad263f0c2dc9222a5f3480be Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146078 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx index 864e8934c7ad..1d72e46ff21a 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 6a7eecdb71b1..dc804a76ab35 100644 --- a/vcl/win/window/salframe.cxx +++ b/vcl/win/window/salframe.cxx @@ -3424,8 +3424,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