client: Fix text-input set_cursor_rectangle coordinates
They should be converted to native ones and shouldn't contain server-side decorations Pick-to: 6.7 6.6 6.5 Change-Id: Ia701edc22b68bec2fa46e95d7a812621142dcde0 Reviewed-by: David Edmundson <davidedmundson@kde.org>
This commit is contained in:
parent
f1df592c96
commit
b19408d069
@ -10,6 +10,7 @@
|
||||
#include <QtCore/qloggingcategory.h>
|
||||
#include <QtGui/QGuiApplication>
|
||||
#include <QtGui/private/qguiapplication_p.h>
|
||||
#include <QtGui/private/qhighdpiscaling_p.h>
|
||||
#include <QtGui/qpa/qplatformintegration.h>
|
||||
#include <QtGui/qevent.h>
|
||||
#include <QtGui/qwindow.h>
|
||||
@ -127,8 +128,9 @@ void QWaylandTextInputv1::updateState(Qt::InputMethodQueries queries, uint32_t f
|
||||
if (queries & Qt::ImCursorRectangle) {
|
||||
const QRect &cRect = event.value(Qt::ImCursorRectangle).toRect();
|
||||
const QRect &windowRect = QGuiApplication::inputMethod()->inputItemTransform().mapRect(cRect);
|
||||
const QMargins margins = window->frameMargins();
|
||||
const QRect &surfaceRect = windowRect.translated(margins.left(), margins.top());
|
||||
const QRect &nativeRect = QHighDpi::toNativePixels(windowRect, QGuiApplication::focusWindow());
|
||||
const QMargins margins = window->clientSideMargins();
|
||||
const QRect &surfaceRect = nativeRect.translated(margins.left(), margins.top());
|
||||
set_cursor_rectangle(surfaceRect.x(), surfaceRect.y(), surfaceRect.width(), surfaceRect.height());
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <QtCore/qloggingcategory.h>
|
||||
#include <QtGui/QGuiApplication>
|
||||
#include <QtGui/private/qguiapplication_p.h>
|
||||
#include <QtGui/private/qhighdpiscaling_p.h>
|
||||
#include <QtGui/qpa/qplatformintegration.h>
|
||||
#include <QtGui/qevent.h>
|
||||
#include <QtGui/qwindow.h>
|
||||
@ -134,8 +135,9 @@ void QWaylandTextInputv2::updateState(Qt::InputMethodQueries queries, uint32_t f
|
||||
if (queries & Qt::ImCursorRectangle) {
|
||||
const QRect &cRect = event.value(Qt::ImCursorRectangle).toRect();
|
||||
const QRect &windowRect = QGuiApplication::inputMethod()->inputItemTransform().mapRect(cRect);
|
||||
const QMargins margins = window->frameMargins();
|
||||
const QRect &surfaceRect = windowRect.translated(margins.left(), margins.top());
|
||||
const QRect &nativeRect = QHighDpi::toNativePixels(windowRect, QGuiApplication::focusWindow());
|
||||
const QMargins margins = window->clientSideMargins();
|
||||
const QRect &surfaceRect = nativeRect.translated(margins.left(), margins.top());
|
||||
set_cursor_rectangle(surfaceRect.x(), surfaceRect.y(), surfaceRect.width(), surfaceRect.height());
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
#include <QtCore/qloggingcategory.h>
|
||||
#include <QtGui/qguiapplication.h>
|
||||
#include <QtGui/private/qhighdpiscaling_p.h>
|
||||
#include <QtGui/qevent.h>
|
||||
#include <QtGui/qwindow.h>
|
||||
#include <QTextCharFormat>
|
||||
@ -236,8 +237,9 @@ void QWaylandTextInputv3::updateState(Qt::InputMethodQueries queries, uint32_t f
|
||||
if (queries & Qt::ImCursorRectangle) {
|
||||
const QRect &cRect = event.value(Qt::ImCursorRectangle).toRect();
|
||||
const QRect &windowRect = QGuiApplication::inputMethod()->inputItemTransform().mapRect(cRect);
|
||||
const QMargins margins = window->frameMargins();
|
||||
const QRect &surfaceRect = windowRect.translated(margins.left(), margins.top());
|
||||
const QRect &nativeRect = QHighDpi::toNativePixels(windowRect, QGuiApplication::focusWindow());
|
||||
const QMargins margins = window->clientSideMargins();
|
||||
const QRect &surfaceRect = nativeRect.translated(margins.left(), margins.top());
|
||||
if (surfaceRect != m_cursorRect) {
|
||||
set_cursor_rectangle(surfaceRect.x(), surfaceRect.y(), surfaceRect.width(), surfaceRect.height());
|
||||
m_cursorRect = surfaceRect;
|
||||
|
Loading…
x
Reference in New Issue
Block a user