Client: Adjust for window border when setting text-input cursor rect
set_cursor_rectangle takes wl_surface coordinates, but we sent window coordinates. Fixes: QTBUG-77987 Change-Id: Ia0bf98f9749723128bec27c3c607d1ccde2d5fd3 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
This commit is contained in:
parent
47340e8c6f
commit
c357505f3a
@ -119,7 +119,8 @@ void QWaylandTextInput::updateState(Qt::InputMethodQueries queries, uint32_t fla
|
||||
if (!QGuiApplication::focusWindow() || !QGuiApplication::focusWindow()->handle())
|
||||
return;
|
||||
|
||||
struct ::wl_surface *surface = static_cast<QWaylandWindow *>(QGuiApplication::focusWindow()->handle())->object();
|
||||
auto *window = static_cast<QWaylandWindow *>(QGuiApplication::focusWindow()->handle());
|
||||
auto *surface = window->object();
|
||||
if (!surface || (surface != m_surface))
|
||||
return;
|
||||
|
||||
@ -157,8 +158,10 @@ void QWaylandTextInput::updateState(Qt::InputMethodQueries queries, uint32_t fla
|
||||
|
||||
if (queries & Qt::ImCursorRectangle) {
|
||||
const QRect &cRect = event.value(Qt::ImCursorRectangle).toRect();
|
||||
const QRect &tRect = QGuiApplication::inputMethod()->inputItemTransform().mapRect(cRect);
|
||||
set_cursor_rectangle(tRect.x(), tRect.y(), tRect.width(), tRect.height());
|
||||
const QRect &windowRect = QGuiApplication::inputMethod()->inputItemTransform().mapRect(cRect);
|
||||
const QMargins margins = window->frameMargins();
|
||||
const QRect &surfaceRect = windowRect.translated(margins.left(), margins.top());
|
||||
set_cursor_rectangle(surfaceRect.x(), surfaceRect.y(), surfaceRect.width(), surfaceRect.height());
|
||||
}
|
||||
|
||||
if (queries & Qt::ImPreferredLanguage) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user