| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ieb2f9706ac707ff878165d3f9001e4a28b8ff1ce
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This allows writing template functions like this
template<typename return_type>
return_type *fromResource(struct ::wl_resource *resource) {
if (auto *r = return_type::Resource::fromResource(resource))
return static_cast<return_type *>(r->object());
return nullptr;
}
Letting us easily cast a wl_resource to a wrapper type, i.e.:
wl_resource *resource = ...
auto *surfacePrivate = fromResource<QWaylandSurfacePrivate>(resource);
This can hopefully let us reduce some boilerplate in the future.
Change-Id: I41630f35b3472baa39d88d89c1c6503cc0e6584a
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I6cc70da737d07a87e2b396e35f64adfeffc565bd
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is used when creating new grabbed popups to ensure they are only
created on the topmost grabbing popup as per the specification.
Non-grabbing popups don't have this restriction.
Change-Id: I8e2b8cd0f091688c847f81f2e5d33ce2f0df96a1
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It's valid to create a non-grabbing XDG-popup, such as a tooltip, before an input event.
The current guard should only apply for grabbing popups, otherwise tooltips created early
are turned into XDG-toplevels resulting in incorrect positioning.
Change-Id: I5bb59a68964ef2375c81e8b4e1a73361b9d2cbcc
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Size is confusingly returning the surface size in buffer coordinates and not
surface coordinates. Create a new property bufferSize and deprecated size in
order to make it less ambiguous.
[ChangeLog][Compositor] QWaylandSurface::size has been deprecated. Use
bufferSize or destinationSize instead.
Change-Id: I7985e4cc1b8d627f922680c1800d2687d710d7b3
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Several properties were using pixel coordinates and surface coordinates without
converting.
[ChangeLog][Compositor] QWaylandSurface::destinationSize has been added which
returns the size of the surface that will be displayed on the screen in surface
coordinates.
[ChangeLog][Compositor] Fixed a bug where QWaylandSurface::inputRegionContains
would return true for some points outside surfaces with buffer scale > 1.
[ChangeLog][Compositor] Fixed a bug which caused ShellSurfaceItems for surfaces
with buffer scale > 1 to move too much when resizing interactively.
It also gets rid of all calls to QWaylandSurface::size, which confusingly
returns the size of the surface's buffer in pixel coordinates. Most properties
now use destionationSize's surface coordinates consistently. Hopefully,
QWaylandSurface::size can be renamed or removed in Qt 6.
Change-Id: I007256a8df7759cf74fbfd51624fa1f90c083336
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Use logging categories, and print error code when eglInitialize fails.
Change-Id: Iacba3b74a5dad23aba2309919fac7662967c94d7
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] Added support for fullscreen-shell unstable v1.
The fullscreen_shell_unstable_v1 interface displays a single surface
per output and it is used for nested compositors, where each output
is rendered in a surface that is then displayed by the main
compositor.
For example weston could be the main compositor and a QML compositor
could be launched as a client using this shell integration to
display it inside weston.
Change-Id: I037679a283ff03cb4bdf4b3fed59945090ec9250
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I8e32b267a4cc5a4cfc462f7819a378573e179134
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Nothing is wrong, so we shouldn't pollute stderr.
Change-Id: I05538c8e5199f97ebb1a1233e866f3a93179b799
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
|\|
| |
| |
| | |
Change-Id: I1d9281750b06f7584e55759994dc6fcbcc5b2455
|
| |\
| | |
| | |
| | | |
Change-Id: Ic7b7999f42b1867982b9410efb5224d68e9443f8
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Only send expose event when the geometry actually changed.
Change-Id: Ic06986ce5d11e0ff7a842303f57093b8ff25b9f6
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
QBackingStore::flush is sometimes called with an unxeposed window, in that
case, don't attach the buffer to the wl_surface immediately, as that causes
protocol errors with xdg_shell.
Flushed buffers are instead stored until we get the first configure event.
[ChangeLog][QPA plugin][xdg-shell] Fixed a bug where buffers were sometimes
attached and committed before the first configure event, causing protocol
errors.
Fixes: QTBUG-71345
Change-Id: If9409d97bd25f6b13940c56141920a664c349c8e
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The code for isNormal was wrong, so set_toplevel (which clears fullscreen
state) would be sent unless the window was both maximized and fullscreen. Fixed
it and made it a little bit more readable.
Change-Id: Icaa52d3a058df064a0bd1164119af3f511cb4220
Fixes: QTBUG-71350
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
| |
| |
| |
| |
| | |
Change-Id: I649149e2cee24f8296bf24a22ee8bb865feea9c6
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I36baa27b69b755f81de9cda94113d338f06c34a1
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][Compositor] Fixed a bug where some signals on QWaylandSurface were
emitted before all double buffered state had been applied.
Restructures QWaylandSurface::commit so no signals are emitted until all state
mutations are completed.
Adds a test to confirm that pending state is applied at once.
Also fixes opaqueRegion, which is documented to be double buffered as well, but
the old implementation set it immediately.
Change-Id: I1c4dfea7c83dd9ee84dc8c03e6d92e2924bf2fad
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] Clients now follow the keyboard key repeat delay and
interval configured by the compositor.
Change-Id: I8a88d341a2bb648d70f95494fe19e941273ae31b
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is mostly a copy of XCB's atspi brige loading, only it creates the
original QPlatformAccessility() instance if the atspi bridge is not
available, to match the current behavior.
This also moves accesibility module to be lazy-loaded to match both Mir
and XCB QPAs.
Change-Id: I7b7ccadbec3760ab8a9449124db0db3f28c1f355
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ib4c65db63c2f3119fc7c157d4353c4e0ecebefb0
|
| |
| |
| |
| |
| | |
Change-Id: I588ccc782f593ec83a87f75bd88d98f873366395
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
kwin and perhaps other compositors sometimes send questionable configure events
with state set to maximized and size == {0,0}.
Previously, we would then restore the m_normalSize, which would give us a
maximized window with the size of a windowed (normal) one.
A size of zero usually means that it's up to the client to decide, which makes
sense for non-maximized windows, but not so much for maximized ones. This is
what the protocol spec says about the maximized state:
The surface is maximized. The window geometry specified in the configure
event must be obeyed by the client.
It's fixed in the dev version of kwin, but until then, let's be on the safe
side and only resize the window if things make sense.
[ChangeLog][QPA plugin] Fixed a bug where maximized windows would resize to
their unmaximized size if the compositor sent an invalid configure event.
Change-Id: I2371b29c82426ac48cd1c18c14c3dd0fe4f2250e
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
cursorSize was a static which was multiplied with the dpr each time
loadCursorSize was called resulting in a bigger and bigger cursor size.
Fix it by making the static constant.
Change-Id: Ie23cf0cc0d6c13721feecebe214d7c794be35077
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
| |
| |
| |
| |
| |
| |
| | |
Similarly to how we don't do it for xdg_shell or wl_shell.
Change-Id: I61cd453858c9fdff148364f4dfb85c345943725c
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Whilst wayland can't actually move the window in a QWindow::setGeometry
call the previous behavior was to keep it so that it appeared to the
client that it had moved.
The new behavior is non-consistent, QWindow::setPosition will update
QWindow::position until the first configure call is received at which
point it will move back to 0,0. This then generates a QMoveEvent for the
window that hasn't moved.
This patch keeps the QWindow::position consistent with the user request
and doesn't generate move events.
Change-Id: Ifb1433b3902d44c1b2e43036bc1805a6e00128fb
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some compositors don't advertise wl_data_device_manager support, and the client
has no control over this, so the assertion doesn't make sense. Returning
nullptr in that case should be fine.
Change-Id: If0b145326d074ea4ebf8f5a12654962d56012a2d
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
wl_proxy_marshal_constructor_versioned was added in libwayland v1.10.0, use the
old way with wl_proxy_marshal_constructor for older versions instead.
Change-Id: I4514212e0b44ecbf200769759667186f71b279b6
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I44df8aa9117e12280f6397f7d75dc10959905302
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
wayland-client.h and wayland-server.h includes protocol generated for the
version of wayland.xml corresponding to the libwayland version. This becomes a
problem when we want to support a version of wayland.xml that's newer than the
system libwayland.
The solution is to include wayland-client-core.h and wayland-client-server.h
instead. These headers don't include any wayland-scanner generated code, so we
can safely compile and link code generated against the version of wayland.xml
that we ship.
[ChangeLog] Code generated by qtwaylandscanner now includes
wayland-client-core.h and wayland-server-core.h instead of wayland-client.h and
wayland-server.h. This might break source compatibility for code using custom
wayland extensions.
Fixes: QTBUG-70553
Change-Id: Ice0cdb60ecc4f936acc0e158b96f7978549f62c1
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I4bd7389958fcee8b16d131625280c7d125894212
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-70264
Change-Id: Idd4c6b2b7bb032241555a08e2b3e420b1312aa35
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Fixes a crash due to dangling pointer dereference in
QWaylandQuickItem::inputMethodQuery.
Change-Id: Id379779f23221e7de17423f75c3d78d7e794b7b9
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
It's an implementation detail, so shouldn't be exposed as a property.
Change-Id: Ib0a5b7dd92403cf45e1067710d1aad330a7a340f
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If makeCurrent was called before the window was exposed, it would disable
resizing, which would block the window from applying the configure which the
client needs to ack in order to be exposed.
Fixes the issue by locking resizing only if the window is exposed.
Change-Id: I0e6b30bc4b08886fb95d502cac0b735d4bb732d2
Fixes: QTBUG-70646
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I66c91dfde14a7c252a02777cfcf0396b1d05e854
|
| |
| |
| |
| |
| |
| | |
Fixes: QTBUG-70494
Change-Id: Iaa4990fe9d39a1f9fb81f5e5f19039aa2e52dcac
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
This allows the compositor to reclaim unused graphics memory
when a buffer is no longer used by clients.
Change-Id: Ia0269608019c5120da8c091c81e165411b563554
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
qLcWaylandCompositorHardwareIntegration, "qt.waylandcompositor.hardwareintegration"
Change-Id: I977ccc53f51b24b58acee08c424b806868550eac
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][Compositor] Add new categorized logging namespace
"qt.waylandcompositor" and rename "qt.compositor.input.methods"
to "qt.waylandcompositor.inputmethods"
Change-Id: Id861e527e3eb8582fdc96f8497fad0cba0766847
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When we switch to only including core wayland headers, wl_resource will be an
opaque type. Use the getters and setter functions instead.
Task-number: QTBUG-70553
Change-Id: I7d84d48a4ee3586f231a331cd15716686dcee775
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][Compositor] Fixed a bug where xdg-shell popups were misplaced when
devicePixelRatio was not 1.
The fix is to use the more robust QWaylandQuickItem::mapFromSurface instead.
Also made wl-shell use mapFromSurface, although it already accounted for
devicePixelRatio.
Fixes: QTBUG-70662
Change-Id: I8be3ea76d6bcfd6d6974d532d160c20e44499382
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][Compositor] Added QWaylandQuickItem::mapFromSurface which converts
points in Wayland surface coordinates to points in QQuickItem coordinates.
i.e. the inverse of the existing QWaylandQuickItem::mapToSurface.
Task-number: QTBUG-70662
Change-Id: I11123c2c5394d7d9b7b8fdfcfd325592597a6b50
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] Shell integrations are now features that can be enabled
or disabled at build time.
Change-Id: I1c48bb5d444074ac25331cb1ca8a9f49ebcd9805
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA plugin] The private window decoration API method,
QWaylandAbstractDecoration::startResize, now takes Qt::Edges argument instead
of a wl_shell_surface_resize enum. This will break window decoration plugins
written for older versions of Qt Wayland.
Change-Id: I4fc9aab949e91efd48a4943f8e116f51dfc373b8
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
|\|
| |
| |
| | |
Change-Id: I27420ad626a0c6a18b9a11c6ffdc102006fe78e0
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The old xdg-shell-unstable-v5.xml was malformed, and was missing some
<description> tags.
The updated version passes wayland-scanner run with --strict. Hopefully we can
start to use it soon.
Otherwise, it's just documentation fixes.
Change-Id: Id28ad7196643156cd22407e12ed7ff1e7fb34ce6
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since we're using the deprecated ways of including wayland (wayland-server.h
instead of wayland-server-core.h), we can't upgrade wayland.xml to a version
that's newer than the system libwayland. Our minimum supported version is 1.6.
This reverts commit 4d2106d4b6ed1a088834a8fec9c6a47e5a67d4e8.
Fixes: QTBUG-70528
Change-Id: I102cb215a40a1aaaeba6f463200eefc3be653c52
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Generally we prefer not to use abbreviated names. It now also matches what's
in other Qt modules.
Change-Id: I67d54961bebf93760780be54761c6122069f1e1d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|