| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
| |
Change-Id: I55a7b579babfa99707e3e4b4cf15c34f48459825
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
| |
It requires libwayland 1.8 and we're supposed to support versions as old as 1.6
Task-number: QTBUG-70528
Change-Id: Iff4c2542d103d53aba8db99ecceddfccb79cfcb6
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
|
| |
And make OpenGL a requirement, in order to make builds without OpenGL work
again.
Fixes: QTBUG-69779
Change-Id: Iff1153b0aaca8e115f47c59c2ceb028e638e3fe9
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
|
| |
[ChangeLog][Compositor] Features for server buffer integrations have
been renamed. "drm-egl-server" is now "wayland-drm-egl-server-buffer"
and "libhybris-egl-server" is "wayland-libhybris-egl-server-buffer".
Change-Id: I06a9d1b1c9219c88045fe966be134ff072cd756e
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
We can't trust QWindow::isActive, because it relies on focusWindow, which may
be updated too late, and there might also be multiple active toplevel windows
at once on Wayland. Even though Qt doesn't support multiple seats, we should
still draw the decorations of active windows correctly.
This implements QPlatformWindow::isActive and uses it in the decorations.
Change-Id: I34d79b354e2d26694533e2319a26f24085212243
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|\
| |
| |
| | |
Change-Id: Ib6d23655a5c9ee059a9560e862d38746f508caee
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, windows that were hidden and shown again would have the old list of
entered screens. Aside from occasionally getting the current screen wrong,
this also polluted the log with bogus warnings about unexpected enter events.
This problem could be seen quite easily by opening, closing and opening a menu.
[ChangeLog][QPA plugin] Fixed a bug where a window that was hidden and then
shown on different screen would still think it was on the first screen.
Change-Id: I1b27433ea6607a218384d814ae4c16b9c4395948
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] Added client-side support for the
xdg-decoration-unstable-v1 Wayland extension. Qt clients will now let the
compositor draw the window decorations if configured through this extension.
Note: The env var QT_WAYLAND_DISABLE_WINDOWDECORATION is still supported, but
works on a higher level, and for all shell integrations, while xdg-decoration
only works with xdg-shell stable.
Task-number: QTBUG-69746
Change-Id: I9dd0331bbd8d624c6be54ed23ee3b96446d5820d
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
|\|
| |
| |
| | |
Change-Id: Ia9584a185a3d7a68a4333890ade535585ba33fee
|
| |
| |
| |
| |
| |
| | |
Change-Id: Ifd6d4956eeed663e45219b428dfe562e7a82e626
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In Qt we call flush() when we think the window might need to be
updated. It is also possible to trigger a flush while painting.
Two fixes:
1) If there are attempted flushes between beginPaint() and endPaint,
queue them up, and do them in endPaint().
2) Make sure we only commit the buffer once: after that the
compositor owns the buffer, and it can repaint on its own.
Change-Id: Ibf61068fa95760eb67dbc0b1d0534854114ea528
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] Font and UI scaling is now based on the screen scale
factor rather than the physical DPI. The logical DPI is set to 96 unless
overridden by the the environment variable QT_WAYLAND_FORCE_DPI, which may be
set to a specific DPI or to "physical" to get the old behavior.
Change-Id: Ife417bf5537b0f6c9ecceffea46937951770b150
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, we would send one leave event each time the mouse was moved on the
decorations.
Change-Id: I57bd6e57261447db8a8c5ab45dc8f3fdfed33a49
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
XdgOutput is an extension of wl_output with the benefit of having the
logical size of a screen as an explicit parameter, instead of clients
inferring it from modeSize / scale. This is useful as it allows
compositors to implement fractional scaling whilst clients can still
fill the screen.
In the future XdgOutputV2 will support a more useful name and ID that
we can use.
[ChangeLog][QPA plugin] Added support for xdg-output-unstable-v1
Change-Id: I2e1e64ad6cb497a1cbb7b7b170f28ac92231c2c4
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I4c25009c207ab36219976e75343a9b6398d3a42d
|
| |
| |
| |
| |
| |
| |
| |
| | |
The logging category is exported, so the name should be
specific.
Change-Id: Iffdc89875ef9e3091009780edc614fee10c05532
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Compositors that only update damaged regions would show the old content of the
decorations.
[ChangeLog][QPA plugin] Fixed the window decorations sometimes not updating on
some compositors.
Change-Id: I75ab40e159bf165152a58e438dd7f70e7f9e9b22
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ia2f708fc668a802f4468efd0765f36aab0944e10
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |\
| | |
| | |
| | | |
Change-Id: Idd23894d256f83518f2cd25d7c13f5a09c7d577e
|
| | |\
| | | |
| | | |
| | | | |
Change-Id: I3d3cc001320febd64529f0997b88efd69303fa30
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Avoids protocol errors on Weston, gnome-shell and wlroots-based
compositors.
[ChangeLog][QPA Plugin] Fixed a protocol error that sometimes happened
when showing popups such as nested menus on xdg-shell unstable v6.
Task-number: QTBUG-67988
Change-Id: I037aec94fba3d177dd0392e5a216a604bc65ac4f
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-68834
Change-Id: Iced478d12b56fc360c0d824cf5876855d887f9a2
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
QWaylandInputDevice::setCursor(wl_buffer, QPoint, QSize, bufferscale) assumes a
hotspot and a size in surface coordinates, while wl_cursor_image uses pixel
coordinates.
Divide by bufferScale to get the correct values.
This breaks hidpi cursors on kwin 5.13.1 and earlier, where buffer scale for
cursor surfaces are ignored.
Change-Id: I7c86bc541ccf5fb878facebbe93d2b1f842dfc5c
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This shouldn't change any behavior, but lets the shell integrations choose
if they want to use the extremely hacky QWaylandWindow::transientParent().
Hint: Not all shells need the hacks, and not all shells need them in all cases,
and some shells may need even more hacks.
Change-Id: Id105e4feb83cc9c14dcf07dcca55fcd5e63d4a2b
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Problem: When the cursor entered the window decorations,
QWaylandWindow::restoreMouseCursor would be called from the pointer
enter handler messing up the cursor from the decorations, making the
resize border seemingly hard to hit.
Don't restore the cursor unless inside the window contents.
[ChangeLog][QPA plugin] Fixed a bug where the arrow cursor would be
shown instead of the resize cursor when hovering over the window
decoration border.
Change-Id: I2fabd8d626deaa7006734a4d5c6d10d6c0114466
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|\| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
.qmake.conf
Change-Id: I6596d1a127cc93e53ec30cd881da1810cb8076d5
|
| | |/
| |/|
| | |
| | |
| | | |
Change-Id: I98aadd5019e913bf0adcf0122b7b209981926278
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |/
| |
| |
| |
| |
| |
| |
| | |
It will cause libwayland to terminate the application.
Task-number: QTBUG-68715
Change-Id: I1d1830453da224bec8bf4c5d6ab087c0e05328a8
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Since qtbase/9f27bfb3, users of QInternalMimeData should include
qinternalmimedata_p.h.
Change-Id: I531d5fa318f55497b955b03c7e25d51a6f87ba05
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] QT_WAYLAND_SHELL_INTEGRATION environment variable
now accepts a semicolon-separated list of shell integrations.
Change-Id: I91364f53ea584bfbd9693b5ea58df07226c3e2c6
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] Added support for xdg-shell stable.
Mostly a copy of xdg_shell unstable v6 with prefixes and suffixes
removed. Otherwise, this is what changed:
- The global is now named "xdg_wm_base", since "xdg_shell" was taken by
xdg-shell <= v5.
- Anchors and gravities are not bitfields anymore.
Task-number: QTBUG-66783
Change-Id: I8ca881aae52cc07b22ff5e26df13a9a1566f58f4
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] The xdg-shell-v6 shell integration has been
moved to a plugin.
Change-Id: I548d19590ddbc8ad3e791301359a6de17ac9dcd8
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
...and out of QWaylandCursor. Encapsulates the ugly details of wayland
cursor themes, and presents a simple interface.
A theme is created with a given size and theme name. wl_cursor_images for a
theme can be acquired through:
wl_cursor_image *QWaylandCursorTheme::cursorImage(Qt::CursorShape shape);
Change-Id: Ia6fc6f2997133ca25c1610ecdf075ecb5c4edbfa
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Now cursor themes load once per device pixel ratio, and not once per screen.
Task-number: QTBUG-67796
Change-Id: I4c253e65a791d69e7d510c4228989390a4343110
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I8a1570eac9bbe418283522624002f8a03dd60c95
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
glibc 2.27 #defined it as just "1U" instead of the kernel "0x0001U".
Same value, but because the tokens are different, this triggers a
warning.
Change-Id: I052407b777ec43f78378fffd153112449de8cf4f
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Remove the "dummy" request, which seems to be just leftover test code.
- Rename the event from "qtkey" to "key". We've already prefixed the
global interface, no need to also prefix the event.
- Prefix the global with `zqt_` and suffix it with "_v1". If we make
backwards incompatible changes, we should bump the suffix, rename the
xml-file and reset the version number.
- Add some documentation to the xml file.
- Add notice about (lack of) compatibility guarantees.
- Four spaces for indentation
Task-number: QTBUG-68423
Change-Id: I78f0eaff4cac22f27318ba32c83c83feb2de857a
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] The wl-shell shell integration has been moved to a
plugin.
This also adds API so shell integrations can return native resources for
windows, as it was needed in order to continue to supporting wl_shell_surface.
Change-Id: Ibc68ffcc5b0c6993d8f4e078f663e4d67340e1a5
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If nothing is trying to access QWaylandScreen::cursor() leave the platform
cursor uninitialized. This in turn avoids initializing cursor themes, which may
use a significant amount of shared memory depending on the cursor size, number
of screens and screen DPI.
Task-number: QTBUG-67796
Change-Id: Ifd062cb52c4889adcaadeb00bea928b8e84a2182
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Adapt the cursor size to the screen's devicePixelRatio, so we are not
forced to have a tiny cursor on a high dpi screen or a huge cursor on
external low-dpi displays.
Change-Id: I3712dc64e5c5e2e05d0dc5943bd49ba5c1335cd3
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
| |
| |
| |
| |
| | |
Change-Id: I57ead68f2c243c14015afeddc9721866b3dd01f1
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is the first step in deprecating xdg-shell unstable v5 and making the good
names available for the good names for xdg-shell stable.
Shell initialization has been refactored slightly, so the
QWaylandShellIntegrationFactory actually tries to initialize the shell
integration before returning it. Similarly for the factory method of non-plugin
shells.
Change-Id: I85e60594c4fc03c6f302c04316110aed428d28dc
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The implementation was broken because it:
1. Didn't activate popups.
2. Activated toplevels with keyboard focus twice.
3. Tried to cast to xdg-shell-v5 classes, so windows were never deactivated.
Change-Id: If492ebdbcd10a3214424f7bf6ac01e7ba8704bbf
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
For details see qtbase/10b3286313c78fa380b5fe676a7c14f3ae84f017
Change-Id: I197b2c158a0ffcb21cab973169c6257afa3d2c06
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The problem:
The code in QWaylandWindow::setWindowStateInternal made many assumptions about
how the shell surface responded to new window states, and when and if they were
applied. Particularly:
- The shell integrations support different subsets of Qt::WindowStates, so it
doesn't make sense to map from states to setFullscreen, setNormal, etc. in
QWaylandWindow because it really depends on the shell integration how it
should be handled.
- Some states are not supported/unknown on some shells and should immediately be
rejected.
- On some shells, particularly those where the current state is unknown, flags
need to be resent even though they didn't change.
- Should handleWindowStatesChanged be called immediately (client decides) or
should it wait for a configure event (compositor decides)? I.e. the mState
variable only makes sense for some shells.
Furthermore, when state changes come from the compositors, some shell
integrations require that a configure event is acked by the client and that the
next committed buffer's size and content matches that configure event.
Previously, we would just ack immediately and still send a buffer with the old
size before a correct frame was drawn. i.e. sending incorrect acks, which would
lead to protocol errors on some compositors.
Additionally, QWaylandWindow::createDecoration() also assumed that windows
should have decorations unless they are fullscreen. This is not always the
case, particularly on ivi-application and probably on future shell integrations
for embedded or tiling window managers etc.
The Solution:
The responsibility of mapping requested window states to Wayland requests have
been moved to the QWaylandShellSurface implementation. QWaylandWindow now calls
a new virtual, QWaylandShellSurface::requestWindowStates(Qt::WindowStates),
instead of trying to be smart about it. The virtual getters and setters for
window states have now been removed from the QWaylandShellSurface interface.
It's now also the shell surface implementation's responsibility to call
QWaylandWindow::handleWindowStatesChanged if and when it knows a new state is
effective.
QWaylandWindow::configure has been replaced with
QWaylandWindow::applyConfigureWhenPossible(), which causes another new virtual,
QWaylandShellSurface::applyConfigure(), to be called whenever we're free to
resize and change the states of the next buffer (this is when states should be
acked). This means that shells that use acked states need to store the pending
states themselves, call applyConfigureWhenPossible(), wait for applyConfigure()
to be called, call resizeFromApplyConfigure() and handleWindowStatesChanged(),
and finally ack the applied state.
Acked state for xdg-shell v5 and v6 has now been implemented, which also means
we've now:
[ChangeLog][QPA plugin] Implemented support for maximizing, minimizing, and
setting fullscreen with xdg-shell unstable v6.
[ChangeLog][QPA plugin] QWindow::isActive now follows configure events on
xdg-shell unstable v6 (like v5).
QWaylandWindow::createDecoration queries QWaylandShellSurface::wantsDecoration
before creating window decorations, instead of using the previously unreliable
QWaylandWindow::isFullscreen().
[ChangeLog][QPA plugin] Window decorations are now automatically disabled for
ivi-application.
The refactor also removes a couple of hacks:
- QWindowSystemInterface::flushWindowSystemEvents() was called in
QWaylandWindow::setWindowStates. Since this hack was introduced, the events
now have oldState and newState members, and their values seem to make sense
(ensured in the tests).
- The hack for unminimizing on xdg-shell v5 in QWaylandWindow::createDecoration
was not needed anymore.
Finally, tests have been added for xdg-shell v6 to ensure that the right Wayland
requests are sent, that we respond to configure events from the compositor, and
that the Qt events and signals emitted on the client side make sense.
Task-number: QTBUG-53702
Task-number: QTBUG-63417
Task-number: QTBUG-63748
Task-number: QTBUG-66928
Change-Id: Ib4c36b69105750f9dbdcc78adcf71e2e994cc70d
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|/
|
|
|
|
|
|
|
| |
This is because bff59f87ba11cac1dfa710f021522372de7a776f in qtbase.
Task-number: QTBUG-67480
Change-Id: I2bb89f94ecc1d78e8919cd16e7bf9d8877baf121
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a popup was shown without any input events happening first, it would cause
nullptr dereferences in both xdg-shell v5 and v6.
Fixes crashes in:
- tst_QAccessibility::comboBoxTest
- tst_QAccessibility::menuTest
- tst_QWindow::touchInterruptedByPopup
- tst_QFocusEvent::checkReason_Popup
Task-number: QTBUG-67150
Change-Id: Ib3e06326f71e4ab5f74727cb4f79626a21c34d55
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Return false for the WindowActivation capability to ensure we don't run tests
that require it.
Change-Id: Ia24d6eef02d462a25f3d50597debda9e062b3955
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
|
|
|
|
| |
Change-Id: Ice040dad70d0bcaf8bd101da5956ae75e211fe91
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
|
|
|
|
|
| |
Change-Id: Ic42119e47afc7bda72eb985fe86d1343a762c274
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|