From eeaf852d48158351dc06f8ca52dd115ce7473979 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Thu, 28 Oct 2021 13:13:58 +0200 Subject: [PATCH] client: emit QInputMethod::visibleChanged() for qt_text_input_method_v1 Also emit keyboardRectangleChanged() when necessary. This amends 6578795ab5de18d1a39c3a31c619a4414eca7453 . Pick-to: 6.2 Fixes: QTBUG-96298 Done-With: Paul Olav Tvete Change-Id: I5095f9b921f85851c7525d45fe6f8fe219c963fb Reviewed-by: Inho Lee Reviewed-by: David Edmundson Reviewed-by: Qt CI Bot --- .../wayland/qwaylandinputmethodcontext.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/plugins/platforms/wayland/qwaylandinputmethodcontext.cpp b/src/plugins/platforms/wayland/qwaylandinputmethodcontext.cpp index 4e81e1cd973..f8c91411587 100644 --- a/src/plugins/platforms/wayland/qwaylandinputmethodcontext.cpp +++ b/src/plugins/platforms/wayland/qwaylandinputmethodcontext.cpp @@ -43,6 +43,7 @@ #include #include +#include QT_BEGIN_NAMESPACE @@ -64,7 +65,10 @@ QWaylandTextInputMethod::~QWaylandTextInputMethod() void QWaylandTextInputMethod::text_input_method_v1_visible_changed(int32_t visible) { - m_isVisible = visible; + if (m_isVisible != visible) { + m_isVisible = visible; + QGuiApplicationPrivate::platformIntegration()->inputContext()->emitInputPanelVisibleChanged(); + } } void QWaylandTextInputMethod::text_input_method_v1_locale_changed(const QString &localeName) @@ -79,10 +83,14 @@ void QWaylandTextInputMethod::text_input_method_v1_input_direction_changed(int32 void QWaylandTextInputMethod::text_input_method_v1_keyboard_rectangle_changed(wl_fixed_t x, wl_fixed_t y, wl_fixed_t width, wl_fixed_t height) { - m_keyboardRect = QRectF(wl_fixed_to_double(x), - wl_fixed_to_double(y), - wl_fixed_to_double(width), - wl_fixed_to_double(height)); + const QRectF keyboardRectangle(wl_fixed_to_double(x), + wl_fixed_to_double(y), + wl_fixed_to_double(width), + wl_fixed_to_double(height)); + if (m_keyboardRect != keyboardRectangle) { + m_keyboardRect = keyboardRectangle; + QGuiApplicationPrivate::platformIntegration()->inputContext()->emitKeyboardRectChanged(); + } } void QWaylandTextInputMethod::text_input_method_v1_start_input_method_event(uint32_t serial, int32_t surrounding_text_offset)