From 2285d9ee08dd83a3edddee9e9cbbec4d60a2a30a Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Wed, 18 Oct 2023 01:43:46 +0600 Subject: [PATCH] iBus: Fixed crash when iBus was provided by fcitx daemon --- .../DBusIme/IBus/IBusX11TextInputMethod.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.FreeDesktop/DBusIme/IBus/IBusX11TextInputMethod.cs b/src/Avalonia.FreeDesktop/DBusIme/IBus/IBusX11TextInputMethod.cs index e96172e5a6..3ab83b8591 100644 --- a/src/Avalonia.FreeDesktop/DBusIme/IBus/IBusX11TextInputMethod.cs +++ b/src/Avalonia.FreeDesktop/DBusIme/IBus/IBusX11TextInputMethod.cs @@ -52,8 +52,7 @@ namespace Avalonia.FreeDesktop.DBusIme.IBus private void OnUpdatePreedit(Exception? arg1, (DBusVariantItem text, uint cursor_pos, bool visible) preeditComponents) { - - if (preeditComponents.text.Value is DBusStructItem { Count: >= 3 } structItem && + if (preeditComponents.text is { Value: DBusStructItem { Count: >= 3 } structItem } && structItem[2] is DBusStringItem stringItem) { _preeditText = stringItem.Value; @@ -63,11 +62,17 @@ namespace Avalonia.FreeDesktop.DBusIme.IBus : 0; _preeditShown = true; - - if (Client?.SupportsPreedit == true) - Client.SetPreeditText( - _preeditText, _preeditCursor); } + else + { + _preeditText = null; + _preeditShown = false; + _preeditCursor = 0; + } + + if (Client?.SupportsPreedit == true) + Client.SetPreeditText( + _preeditShown ? _preeditText : null, _preeditCursor); } private void OnForwardKey(Exception? e, (uint keyval, uint keycode, uint state) k)