| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
See xkbcommon/xkbcommon-compat.h
Change-Id: I2a70e14481db227fc0be657fbcf4f6550d62e7e8
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Use smart pointers from xkbcommon_support-private.
- Avoid unnecessary strdup()/free() calls.
- Don't recreate context. And move it into qwaylandcompositor so
it can be shared between seats. It contains things like a logging
level and include paths.
Change-Id: Ibea29f2874cc147a8e08f15192831fa42ca58f48
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
src/client/qwaylanddisplay_p.h
Change-Id: Ie84862aa41623c11abd8f882f428054f30062c77
|
| |
| |
| |
| |
| | |
Change-Id: I1d4bceeb87b7e95b7b4b9c9885e06052bd7536e9
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Because some shells don't allow attaching buffers before configure, we need to
not be exposed until we know that we don't want a shell surface.
Change-Id: Ida7101a99f953d02cf6401e4ea8d28cfabd6e102
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Use smart pointers from xkbcommon_support-private.
- Remove needless strdup() calls.
- Don't recreate context. And move it into qwaylanddisplay so it can
be shared in future between several keyboards. It contains things like
a logging level and include paths.
Change-Id: I5d1f667e710046e6b62aa2caf82fdb2decc24520
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The existing solution was parsing compose tables on startup, it is
better to lazy initialize the compose table/state on a first key press,
instead of doing it on an application startup. This logic is inside of
the compose input plugin.
The existing code did not utilize correctly how Qt handles complex text
input. It used libxkbcommon-compose APIs to compose user input and then
passed the same input again to QPlatformInputContext (from
QWaylandInputDevice::Keyboard::sendKey), which was erroneous. This also
means that code was forcing "xkb compose", and did not respect QT_IM_MODULE
at client-side.
From commit that added compose key handling (57c4af2b18c0fb1d266b245a107fa6cb876b9d9e):
"We should expand on it in the future to handle things like resetting
the compose state on text field switching".
This is now handled by properly utilizing Qt IM framework.
Converted QWaylandInputDevice::Keyboard::sendKey into a class member function
to avoid adding one more arg (mXkbContext) to the already long argument list.
That whole function should be simplified, but that is out-of-scope for this
patch.
The reworked code uses qxkbcommon support library to reduce code duplication
between platforms and to unify behavior.
Some users might mistakenly think that this patch introduces a regression
with Qt on KDE, but it is actually a KWin/Wayland compositor bug:
https://bugs.kde.org/show_bug.cgi?id=405388
The work around on KDE is to use QT_IM_MODULE at client-side to select
input method, as KWin compositor over the wire supports only the qtvirtualkeyboard
module. Setting this envvar is not someting out of the ordinary for users
on Linux. Input method handling at compositor-side is new feature and
clearly not very well supported yet.
Task-number: QTBUG-65503
Change-Id: Ie511d950396fa2fb6cbe6672996cee9791f3ab11
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The shell integration is initialized lazily, so it's not possible to send ping
events to the client before the first window has been initialized.
This adds a simple window to the pong test.
Change-Id: I13b4a9cb802b7abe18bfc23cf8c75eb873ded3ca
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
The surface(), may be a leftover cursor surface from earlier tests. Check for
an xdgSurface instead, as those are verified to be cleaned up between tests.
Change-Id: I6a2b402130814e896d335787fcb90fd8d57cafb7
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
windowGeometry is an existing method in QPlatformWindow with an entirely
different meaning to the newly added
QWaylandWindow::windowGeometry.
This led to the existing call in resizeFromApplyConfigure calling the
wrong method.
Change-Id: Ib344cf09178e77e5b4d5427325d840346663ec9d
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Updating this topic to only mention QtWayland. The general Wayland overview is now
moved to "Wayland and Qt".
Task-number: AUTOSUITE-679
Change-Id: Ica86edc3ffd162ea722fd97e2b47a18d702bb463
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the platform integration provides the wl_display, it should be the platform
integration's responsibility to destroy it as well.
Task-number: QTBUG-74879
Change-Id: I18999a5bd8cdc2900cac86f156f2adaaebf86158
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: I16bc2e214dda4c8d6c9fc3568af60068815fc558
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the public API has inheritance relationships, this should be
reflected in the private classes too.
Otherwise the d_func will cast to a wrong type, leading to crashes.
Change-Id: Iad2dccad4b63326e6b108a44c708ab51f0784678
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| | |
Fixes: QTBUG-72696
Change-Id: I43f0a02a4447238aa93142981d22597c452790fd
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This allows to drop all the StateGuard code, reduce OpenGL state changes
when blitting and to also support windows that requested an OpenGL Core
context.
Change-Id: Ie507a14a04b3d26cdf31f68973057553fa8493bf
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is an ammendment to 01e1df90a7debd333314720fdd5cf6cd9964d796 in
qtbase.
Task-number: QTBUG-74816
Change-Id: I493ff0f64f765683d2398c32626ada28d7f202b5
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|\ \
| | |
| | |
| | | |
refs/staging/5.13
|
| |\ \
| | |/
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
Change-Id: Ic6c2ec0c4d0a0d4e0c94857020d3804ce9cf9ff6
|
| | |
| | |
| | |
| | | |
Change-Id: I628b1d9c25ed6fb2fb62563a214040797df0758f
|
|/ /
| |
| |
| |
| |
| |
| | |
* Added some missing documentation
Change-Id: I214b108c084aeff501bed85845153aa80fa61e6d
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use qCWarning instead of qWarning if logging into a category. This
fixes compilation with QT_NO_WARNING_OUPUT, but in addition also
avoids unnecessary string formatting if the category is disabled.
Fixes: QTBUG-74359
Change-Id: I0e316a833f3f7d4a9122377a1154e739bcb080b1
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I146dd41d54889af694b829bf1e6d47e03e892b27
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Commit 2824a71e5c28ec1843edc056f2c17c6274378f1d silenced the qdoc
warning about the bufferLocked property, but it did not fix the
underlying problem that the existing documentation would be shown.
This patch reverts the change and fixes it by making the \property
command match the name of the property, not the getter. Similarly, the
\qmlproperty annotation was missing entirely.
Change-Id: I66281ea4df0162b14ebfab15f1cc18162ea0e8ef
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I57e89057a238064e1270d036b656d261b85e50e7
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
* In the header file, this was uint32_t
Change-Id: I5c2e343a2f8ec04b71ef4db577062b5c76f64c72
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: I6d63f7390a3d26ce8c63c8e5de63b673d6831395
|
| |\
| | |
| | |
| | | |
Change-Id: Ib5989d03612370116193266742e26094700be5c9
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Iec24d90c7b6fb4c2eb88b440bbf104d6ef94a25b
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The previous implementation had gaps in several places.
[ChangeLog][QPA plugin] Fixed a bug where the window decoration's damaged area
didn't cover the entire decoration. This meant some compositors would not
redraw those areas.
Change-Id: Ic72663dde301936635b2a1cfa90570a53227e8ea
Fixes: QTBUG-74341
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If unbind is not called, some drivers may try to do cleanup that depends on a
valid wl_display in eglTerminate. Arguably, this could/should also have been
fixed in the affected drivers. There is a display_destroy signal that the
driver should listen to, to avoid using dangling wl_display and wl_global
pointers.
However, by using eglUnbindWaylandDisplayWL we can force the cleanup to happen
before wl_display_destroy. Which is what this patch does.
Change-Id: Id9062de896b723838bcecac3902031e6b172a6de
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The old implementation used QQuickItem::width and height, which changes with
the devicePixelRatio. We now use the new property, QWaylandSurface::bufferSize,
instead, which is the actual pixel size of the buffer.
Change-Id: I430f46746ed2b8f0330e0d220718f58004b3bd2e
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-73739
Task-number: QTBUG-74042
Change-Id: I2074321978f0c32aabeb0d3d4873c5d12d09946d
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
...and also add revision info for the bufferSizeChanged signal.
Change-Id: I2b8e9bea7cafc70c078e74b191c3c87b322ff216
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Revisioning API in QML serves two purposes:
- Making sure QML code developed against an older version of Qt doesn't
change its behavior when run with newer versions. This can otherwise
happen due to QML being interpreted, and QML's liberal scoping rules.
- Allowing developers to target an older version of Qt, but developing
a newer version by explicitly asking for an older import.
Change-Id: I837cd449028c4b84c33afa97bcf6c1149801facd
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-73524
Change-Id: Ie9a13aeae52a7576699147e5515e2ed32a3a4d1c
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When the cursor focus' wl_surface is destroyed, or the pointer leaves a
surface, we have to reset the enter serial to avoid sending illegal set_cursor
requests.
Change-Id: I0c886e4123acb4aebd325b07bf15b9d3fa8589da
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ieec4a97d901f236d2cec003d8b35e2f95b1b2aea
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Let's simplify all those pointer()->surfaceCursor() calls.
Change-Id: I83c51f460fa2313a0b84c8c64509d48027156443
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Not all setups or themes have cursors with a matching DPI. In such cases,
wl_cursor_load_theme will then return a theme that is the closest resolution it
can get.
With the previous implementation, cursors themes without a high dpi version
would become become really tiny on high DPI displays.
This patch prevents it by setting a lower wl_surface.scale for those themes.
This also implements proper tracking of the cursor surface's entered outputs
(i.e. if the entered surface is destroyed, the scale is reset, and similarly
the following sequence of events should also be handled:
wl_surface.enter(wl_output@1)
wl_surface.enter(wl_output@2)
wl_surface.leave(wl_output@2)
In the old implementation, we would be stuck with the scale from wl_output@2,
but now we now should correctly get the scale of wl_output@1.
[ChangeLog][QPA plugin] Cursors on high DPI screens are now scaled up if the
cursor theme does not have an appropriate high resolution version.
Change-Id: Ic87d00e35612b5afdf8c2e3a4463fcfef1f1f09d
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
|\ \ \
| |/ /
| | |
| | | |
Change-Id: I4c99725971d7c15448ca3f01306ae869af9ef057
|
| |/
| |
| |
| |
| |
| | |
Change-Id: I9ff6ac4e33e89691e06965515a54e91a831b7a0a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Also refactors the mocking code for data device manager and implements its
isClean method to verify there are no leaks after each test.
MockCompositor::DataDevice now persists across get_data_device requests.
Task-number: QTBUG-73825
Change-Id: Ib5866e0c54d021e12557f9a96f27950010f2611b
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] Fixed a leak of wl_data_offers.
Data offers would previously leak when a surface with keyboard focus was
destroyed... or if it was hidden... or if it changed type, and so on.
Make keyboard focus follow a wl_surface instead of a QWaylandWindow.
This also fixes a couple of other minor issues, such as the mRepeatTimer not
stopping when a wl_surface was destroyed.
Ideally, we would have a QWaylandSurface class separate from the
QWaylandWindow, but that's out of scope for this fix.
Fixes: QTBUG-73825
Change-Id: I56e502512c3959e3fcdb63744adc4a7698e3d53d
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: Ifb1c6c64abbb5c453092eeb1aff91572b57de410
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The call to flushWindowSystemEvents() sometimes caused new popups to be shown
in the middle of hiding another. I.e. if multiple events show and hide
surfaces, they would be shown/hidden in opposite order of their corresponding
events. QMenus sometimes suffered from this (can be seen with the qopenglwidget
example from qtbase).
When the flush was added 5 years ago in 50f43a0c5, it was to "reduce the
chances of seeing a bad frame". I don't see any rendering artifacts, though,
and I can't find any bug report on it. So let's hope it's safe to remove the
hack.
[ChangeLog][QPA plugin] Fixed a crash that sometimes happened when switching
popups.
Also adds more info to the workaround warning message that appears when a popup
grab is attempted and there already is another grabbing popup that is not the
parent.
Fixes: QTBUG-73524
Change-Id: Ibfcbb48c4bbe295c2be1a30add2d7e05cad398c5
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch is mostly a cleanup to prepare for implementations of
xcursor-configuration, but also fixes a couple of issues.
Most of the logic has now been moved out of QWaylandDisplay and QWaylandCursor
and into QWaylandInputDevice and QWaylandInputDevice::Pointer. QWaylandDisplay
now only contains mechanisms for avoiding loading the same theme multiple
times.
There is now only one setCursor method on QWaylandInputDevice, accepting a
QCursor and storing its values so changing scale factor doesn't require calling
setCursor again. QWaylandInputDevice::Pointer::updateCursor() is called
instead.
Cursor buffer scale is now set according to enter/leave events of the cursor
surface itself instead of the current window, this fixes incorrect buffer
scales for cursors on windows that span multiple outputs. The window buffer
scale can still be passed into the seat as a fallback until the first enter
event is received.
This also fixes a bug where the QWaylandBuffer of a bitmap cursor could be
deleted while it was being used as a cursor.
[ChangeLog][QPA plugin] Fixed a bug where the DPI of bitmap cursors were not
sent to the compositor, leading to the compositor incorrectly scaling the
cursor up or down.
[ChangeLog][QPA plugin] Fixed a bug where bitmap cursor hotspots were off when
the screen scale factor was different from the bitmap cursor device pixel
ratio.
Task-number: QTBUG-68571
Change-Id: I747a47ffff01b7b5f6a0ede3552ab37884c4fa60
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
The QVector m_surface is modified in both threads.
Change-Id: I1818a5e1307d191f1613513b86703eaa7bda3c6e
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: I1b00775ff2d9ede97dbcd9f9deb9f2a947cf1ae5
|
| |
| |
| |
| |
| |
| | |
Change-Id: I5024e50af6e403e9373181948b36548bc0862f9b
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|