| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Update text input support to upstream text-input protocol v2 from
wayland-protocols. Remove support for input-method protocol for now.
Map text-input protocol on compositor side to the Qt input method API,
this allows to use any qt platform input method on compositor side
(especially qtvirtualkeyboard). Add support for qtvirtualkeyboard to
pure-qml example.
Implement all missing functions of the text-input protocol.
Change-Id: I597451ff65454a63dff86026b6a8d1ffbe07ce02
Done-with: Zeno Endemann <zeno.endemann@kdab.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
|
|
|
|
|
|
|
| |
This patch adds a new QWaylandSurfaceGrabber class. The user can use it
to grab a surface's content, and get a QImage with the data.
Change-Id: I25dd72a8ba39201cd91addbfc976b93ca1e05112
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
|
|
|
|
|
|
| |
These methods have no implementation for a good reason: Wayland
now has official support for subsurfaces.
Change-Id: I5b2fe2a66878db0bcc1c3773bacc834dbd922d44
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
|
|
|
|
|
|
|
| |
Glob all generated files.
Change-Id: I1adf0243c08074685f76496d800840a88d608c69
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
It appears to be a leftover from when QWaylandSurface::ping existed
(which forwarded the ping event to the wl_shell interface for the client
corresponding to the wl_surface).
There is no guarantee that the wl_surface has a role that supports some
form of ping, so it doesn't make much sense to keep the signal.
Change-Id: I83a0ef5785dcf94d02c37b0a1535c3c0b0913709
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
|
|
|
|
| |
Change-Id: I698e1fb2578109190210da1bc47d699c21863a46
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Use onShellSurfaceCreated instead of onCreateShellSurface.
A QWaylandWlShellSurface is no longer created in
QWaylandWlShellSurfaceItem::componentComplete
Change-Id: I7a0dbbacddc17ab32ed0e4d16e717fcefb221947
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Erik Larsson <erik@ortogonal.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tests the following functionality:
* xdg_shell can be found and bound using the registry
* xdg_surfaces can be created
* window geometry is handled correctly (not including subsurfaces)
* app_id
Change-Id: I76942da2b245f91fe567059e175fe9ceb98edb6a
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes QWaylandShellPrivate::shell_get_shell_surface behave
similarly to QWaylandCompositorPrivate::compositor_create_surface.
First, a signal is emitted letting a compositor implementation create
its own subclass of QWaylandShellSurface if desired. If it's not
created, a plain QWaylandShellSurface is created instead.
It also makes the API more consistent, as the creation of shell surfaces
now mimick the creation of surfaces and xdg surfaces.
qwindow-compositor has been updated to take advantage of the new API
Change-Id: I7c7262dd253dc37843e8e471a4ead5f6e87b0ced
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
|
|
|
|
|
| |
Change-Id: I61788e26134928327a0e07ddbff39eacd3573516
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
|\
| |
| |
| | |
Change-Id: I31f4c29c985301d28d5c8d0501761c7d4fb7fda6
|
| |
| |
| |
| |
| | |
Change-Id: I69c8fa49baebc29d8a22426394ce0a72627b9ad6
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QShapedPixmapWindow is used as a drag-and-drop icon. This caused two roles
(wl_data_device-icon and wl_shell_surface) to be assigned to the same surface,
resulting in a protocol error.
This bug hasn't been encountered before because QShapedPixmapWindow sets
X11BypassWindowManagerHint, which was previously used to determine whether to
create a shell surface or not.
Task-number: QTBUG-52052
Change-Id: I1d79f3ec8ad08e0be1551c39df6232876dc2ac2e
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Erik Larsson <erik@ortogonal.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The implementation of attached() method was removed in commit 'Fix SHM
drawing logic' (19260d9846861212881e374229798b3863d1a78d) but the
definition in the header file was not.
Change-Id: Ib850bc7101a661882078be95011d75660f621622
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* QWaylandShell -> QWaylandWlShell
* QWaylandShellSurface -> QWaylandWlShellSurface
* QWaylandQuickShellSurfaceItem -> QWaylandQuickWlShellSurfaceItem
* Shell -> WlShell (QML)
* ShellSurface -> WlShellSurface (QML)
* ShellSurfaceItem -> WlShellSurfaceItem (QML)
This is done to avoid confusion with XdgShell and will hopefully help
clarify that some of the examples only support wl_shell and not
xdg_shell.
Additionally, this makes "Shell" an available name in the compositor
API, which may in turn enable the creation of a more general abstraction
hiding the details of the shell backends (i.e. xdg_shell, wl_shell, and
eventually ivi_shell).
Change-Id: Iebac1f36505084bfaaea68838005d54db6c55e21
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The implementation will wait for the frame callback before firing
the update event.
Change-Id: Ieea748fda7c2aeb62cc40f35dbd122864c09f7cd
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Tests did not pass because WAYLAND_DISPLAY only affects clients, not
compositors. Compositor display name can be set either using the command
line argument "--wayland-socket-name" or
QWaylandCompositor::setSocketName. The latter was chosen here.
Change-Id: I524b5c92ec9959486373875850b4f192b62423e0
Reviewed-by: Erik Larsson <erik@ortogonal.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The compositor is always built regardless of this config flag.
Consequently some of the documentation and configuration was
contradicting and confusing.
* Removes the mentions of the flag from the README
* Always build compositor tests
* Always build plugins
Update readme
Change-Id: I37b7d1f0250beb17780834928114ecefdf17684e
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I64174607a48b50c8371f53699568a96474dc10c6
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Erik Larsson <erik@ortogonal.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Clearing the popup list erroneously got moved inside the foreach loop.
Change-Id: I8696c1c4281207230f5afa3a05d22881d93794c6
Reviewed-by: Erik Larsson <erik@ortogonal.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Also make sure that the generated *::Resource::fromResource() code
returns null if it doesn't own the resource or if the interface is
wrong.
Change-Id: I904e0dd49dd6e535ef8cab6687c6869e1000048d
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|\ \ |
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/compositor/compositor_api/qwaylandcompositor.h
src/compositor/compositor_api/qwaylandquickcompositor.h
src/compositor/compositor_api/qwaylandsurfaceitem.h
src/compositor/windowmanagerprotocol/waylandwindowmanagerintegration_p.h
Change-Id: I094128be314d2c3d4fe350fa7a162e37da34ae10
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
... or equivalent.
QtBase 5.6 headers already compile that way, so let the other
modules follow suit.
Change-Id: Iddf561087189ece6dd34b42605842dfafdbd8b4e
Task-number: QTBUG-45291
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
| | |\
| | | |
| | | |
| | | | |
Change-Id: If2caca2463ef6815d2cc9a8f05ccd78c867c95d2
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
qwaylandinputdeviceintegration_p.h:64:85: error: ‘uint32_t’ has not been declared
Change-Id: Ic747cc2ab45e4dc6bb70ffff143843d1ed4a341b
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
So far QtWayland did not support custom bitmap/pixmap QCursors.
This change adds support for them by creating a QWaylandShmBuffer and
copying the pixmap data into that buffer. The internal API to set
cursors images is changed to not only rely on wl_cursor_image, but also
allow to just set the buffer with a specific size and a hot spot.
The created WaylandShmBuffer is passed around as a shared pointer, so
that it can be automatically cleaned up once the cursor image is no
longer used on any seat.
Task-number: QTBUG-51604
Change-Id: I1f1ee87f03186c3d564468d3e8ea2a3141d7e2fb
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The code used sizeof(state) when it should have been sizeof(*state).
Change-Id: Id1714a5e90e6c58850023424726de26719a69046
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This allows the input method to capture keys, for example to implement
the Compose key or to navigate in a virtual keyboard.
Change-Id: Ic0ab318e84401ac339881eadd5eb992a2d57f9e3
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
xdg-shell is an extension to the wayland protocol providing
functionality suited towards traditional desktop environments.
Most of the examples from Weston now require xdg-shell, ivi-shell or
some other custom extension. In order for our compositor-api to support
those examples and many real-world applications, we needed a compositor
implementation of xdg-shell.
This commit adds a class QWaylandXdgShell, along with
QWaylandXdgSurface and QWaylandXdgPopup. These clases are used almost
exactly like the corresponding QWaylandShell* variants.
qwindow-compositor has been updated to use the new functionality.
qwindow-compositor now only sets focus on surfaces that have a role.
weston-terminal was crashing because we set keyboard focus on the cursor
surface.
Keyboard focus handling has been slightly changed. Most of the
functionality has been moved from QWaylandKeyboard::setFocus to
QWaylandInputDevice::setKeyboardFocus. This is done in order to track
where the keyboard focus should have been, in case the input device
(seat) does not currently have a keyboard capability.
If a keyboard capability is later set on the input device, its focus
will automatically be set to the value stored in QWaylandInputDevice.
The reason for the change in keyboard focus handling is that we need to
know if an xdgSurface has keyboard focus in order to know whether to
send the Activated state in configure events. The Activated state tells
the client to draw itself as having focus (i.e. title bar not grayed out).
Change-Id: I1b1ca9a4223e87f5ade1e0f4c975979a400c38cb
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: I7ef64e5dd5e87e62ec83fc05076a5c2e93d11638
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Recent changes to the QML API have not been accompanied with the
corresponding auto-generated updates to plugins.qmltypes
Change-Id: Ided52d2d3d3c51da1f69eacc69442c064794fa8a
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Problem: If you dragged in one client, then closed that client, opened
another one and tried to drag again, the compositor would crash.
Solution: Reset the drag focus when dropping or canceling the drag
operation.
Change-Id: I0ab78b0a3e9d2889db225b7ca45957b5148bb3a0
Reviewed-by: Erik Larsson <erik@ortogonal.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
Change-Id: I17509ffbd6b87d356057d162caf866be68c10469
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Complete the API for keyboard rate and delay that was previously
implemented sending the information to clients.
Back then this wasn't possible for lack of Wayland >= 1.6 on
the CI system.
Change-Id: I95bab22bf4eea6549d2f8a762341c6485a24665c
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is a copy of the key mapping in the XCB plugin. The only difference
is the Launch* keys, which will be changed in Qt6 in the XCB plugin.
Here we don't need to wait for that since the mapping is new.
This also change the mapping of the following keys, which was incorrect:
XKB_KEY_XF86AudioRewind: Qt::Key_MediaPrevious -> Qt::Key_AudioRewind
XKB_KEY_XF86AudioForward: Qt::Key_MediaNext -> Qt::Key_AudioForward
XKB_KEY_XF86Phone: Qt::Key_ToggleCallHangup -> Qt::Key_Phone
Change-Id: I30308da8529dba5b139fc599314c9465573b848e
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The compositor automatically finds a free socket name using
wl_display_add_socket_auto. Also fix the order in which the compositor
uses --wayland-socket-name or the content of the socketName property.
The documentation states the content of the socketName property should
be used before the content of --wayland-socket-name.
The commit also removes the reference to the WAYLAND_DISPLAY
environment variable from the docs.
Change-Id: I33dff4e4627d95f5894a5a1e2f308d747f449691
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Fix compilation errors and make all compositor tests runnable with the
new compositor API. Some input handling tests are reworked so they are
able to function with the new compositor API.
Also make sure client and cmake tests are built even if not compiled
with a wayland-compositor.
Change-Id: I0f03e2c04f2736860f770b6100ccfa3300ff8da4
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: I89b1dd4f6b6f03f54a9126dd5f67b0cdc9a006ad
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Clients can request null as the cursor surface in order to hide the
cursor. Added a null pointer check so it doesn't crash.
Change-Id: I9a0081ea9edd74c504bd55e385a6854024ab0c8a
Reviewed-by: Erik Larsson <erik@ortogonal.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Id2126e6e0e37d0cd64c4dc8476b97e8d0d16b24b
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This simplifies the client-side API for Wayland extensions by
introducing QWaylandClientExtension/QWaylandClientExtensionTemplate
classes. These classes takes care of the initialization of the extension
if it matches the interface name.
Change-Id: I7c4fb34563563af4be072cdebda54954b79cddbe
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This makes sure QtWayland is only built if a Wayland version >= 1.6.0 is
found. Upgraded from 1.4.0.
Change-Id: Ibbd965f9e25ae9fd15d9367431574c5c1ff8b7ce
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If a client sent a set_cursor request with a mapped surface,
qwindow-compositor did not call updateCursor until the next time the
surface was committed, which resulted in cursors with incorrect pixmaps
and hotspots.
This is solved by adding a check to see if the surface in set_cursor is
already mapped, and if so, update the cursor immediately.
The issue did not affect Qt clients, since commits are sent after
set_cursor.
Change-Id: I8b2555b68e9517e04f5bb8c5affe09d84bc97c0c
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Erik Larsson <erik@ortogonal.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
|
|\ \ \ |
|
| |\| |
| | | |
| | | |
| | | | |
Change-Id: Iada0e076ee33e8d39ecc4f40edfd9764ba610c03
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The old logic didn't care to listen for wl_buffer.release events
so it always drew in the same buffer, potentially resulting in
tearing if the compositor was scanning out the buffer at the same time.
Instead properly cycle between a few buffers and don't reuse the same
one until the release event was received.
The old code also used to throttle the redraws, unless the buffer was
changing, that is unless the window was getting resized. This is now
lost, and no throttling is ever done. Doing it properly, by waiting
for the frame callback before committing the new buffer shows very
noticeable lags with many applications when resizing, because they
paint many times per resize event, so they fall behind the cursor.
A proper fix will be to implement the support for requestUpdate(),
and using it in the applications.
Change-Id: I02732c34769a5c75a6ad68c095bae916e4b274d3
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Check the surface hasn't been deleted before initiating the ping so
that an invalid resource isn't dereferenced when printing a warning
after the operation inevitably fails.
Change-Id: I18c82de280d5a7a5339e3179c2bba49800626bb6
Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: If46406b4129b464e8ccfa0b4cf6ff2989402ca74
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
this fixes static builds by ensuring that all dependencies are exported.
Task-number: QTBUG-51071
Change-Id: Ie9e89fa47696244e8ee478ed1a019765c835533e
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
|