Commit graph

501 commits

Author SHA1 Message Date
Sebastian Kügler
461e37d65e server side of new outputmanagement protocol
This implements the server part of the screen management protocol. The
protocol is implemented as a wayland protocol.

It provides the following mechanisms:
- a list of outputs, close to wl_output, with additional properties for
  enabled, uuid, edid, etc.. These OutputDevices correspond to a
  connected output that can be enabled by the compositor, but is not
  necessarily currently used for rendering.
- a global OutputManagement, which allows creating config objects, one
  per client. The client can make changes to the outputs through
  setScale(outputdevice*, scale) for example.
- an OutputConfiguration resource, that can be handed to a client and
  used for configuration. Changes are double buffered here. Only after
  OutputConfiguration.apply() has been called, the changes are relayed
  over the global OutputManagement.

The compositor is responsible to handle changes.

For a more detailed description, see the API docs in especially
outputconfiguration.h.

REVIEW:125942
2015-11-04 15:36:52 +01:00
Martin Gräßlin
219b1b755c [server] Flush client after sending a frameRendered callback 2015-11-04 14:50:15 +01:00
Marco Martin
df22d2ac31 add a static PlasmaShellSurfaceInterface::get(wl_resource*)
to get the associated plasmashell surface from anywhere having
the associated resource
2015-11-04 13:21:37 +01:00
Marco Martin
72316718df task geometries to wayland for minimize effect
this exposes the geometry of taskbar entries in
plasma-windowmanagement, in order to make the
minimize effects possible.
unlike on X11, it takes relative positions and
it has one geometry per panel, making possible
to have multiple taskbars working.
REVIEW:125871
2015-11-04 13:16:50 +01:00
Martin Gräßlin
79f410263b Support request resizing on ShellSurface
Implemented in both client and server side.

REVIEW: 125836
2015-10-29 10:24:58 +01:00
Martin Gräßlin
c72313be16 Support request moving on ShellSurface
Implemented in both client and server side.

REVIEW: 125828
2015-10-29 10:24:48 +01:00
Martin Gräßlin
8f7893b385 [server] Add support for flags on transient ShellSurfaceInterface
A transient surface can indicate through the flags that it does not
want to accept keyboard focus. This is now exposed through a dedicated
method.

REVIEW: 125552
2015-10-08 12:48:08 +02:00
Martin Gräßlin
65444264a9 [server] ShellSurface's transient is a dedicated mode
So far transient was a mutual exclusive mode causing a transient window
to not be able to be fullscreen. This seems wrong. Let's have transient
still as a dedicated mode allowing the window to be maximized and/or
fullscreen. Only popup stays a dedicated mode.

REVIEW: 125468
2015-10-01 10:54:31 +02:00
Marco Martin
27667222a4 introduce SkipTaskbar
support the skipTaskbar property in the window model
that property is set client side by
PlasmaShell::setSkipTaskbar
REVIEW:125453
2015-09-30 16:52:57 +02:00
Marco Martin
ac4ef26990 fake a movement before sending a click
this makes the touch to mouse clicks mapping for xwayland
clients be a bit more reliable in accepting and correctly managing events
2015-09-28 15:18:19 +02:00
Martin Gräßlin
7021be3ae2 Add Mainpage.dox to triggeri apidocs generation 2015-09-19 17:16:54 +02:00
Martin Gräßlin
efaa5c5233 [tools] Simulate a panel tooltip
On entered on the panel window we show a tooltip at the entered
position and make it follow the mouse.
2015-09-17 11:50:01 +02:00
Sebastian Kügler
239e702f0f Fix Typo in Surface::inputIsInfitine
- add correctly named method
- forward the wrongly named one
- adjust autotests

REVIEW:125260
2015-09-16 16:45:09 +02:00
Martin Gräßlin
2bd8a8b98a Add support for transient to ShellSurface(Interface)
On client side a setTransient method is added which wraps the semantic
of wl_shell_surface_set_transient.

On server side both set_transient and set_popup are implemented, though
for popup only the transient part is implemented. In particular the grab
is not yet handled and also no popup done is provided.

For the transient on server side the flags are ignored. Main reason is
that Qt does not use the flag, so testing whether it works is tricky
(needs a test application).

REVIEW: 125223
2015-09-16 08:25:37 +02:00
Martin Gräßlin
265504a088 Increase version requirements for wl_data_device_release
* wl_data_device_manager -> version 2
* wl_data_device -> version 2
* Wayland -> version 1.7

Unfortunately the client side is not yet completely correct. We
need to call wl_data_device_release only if we have a data device
of version 2. But there is no easy way to test this. To change we
will need to introduce a client side version tracking.

BUG: 352663
2015-09-15 08:44:42 +02:00
Martin Gräßlin
38d155ff5e Fix typo 2015-09-10 16:32:45 +02:00
Martin Gräßlin
6ac9f402a0 [server] Add more documentation 2015-09-10 13:36:42 +02:00
Martin Gräßlin
4ea7f34564 [server] Less warnings please 2015-09-10 11:09:38 +02:00
Martin Gräßlin
71fd67cca7 [server] Move static methods into anonymous namespace 2015-09-10 09:45:31 +02:00
Martin Gräßlin
bbfdf3f72a [server] Make s_version a static member of private class
Follows a useful change added in the kwaylandScanner tool the
s_version becomes part of the Private class.

Also fixes the related generation in the tool.
2015-09-10 09:23:36 +02:00
Martin Gräßlin
b7e9ffdf06 [server] Install slide_interface.h
CCMAIL: notmart@gmail.com
2015-09-10 08:19:39 +02:00
Marco Martin
9a23a1c406 fix autotest 2015-09-09 18:24:08 +02:00
Martin Gräßlin
f789f9df7f Add documentation for the namespaces
This triggers Doxygen into generating the Namespace list, so that
we have a good separation of Client and Server documentation.
2015-09-09 18:16:02 +02:00
Sebastian Kügler
28df14c441 small fixes for kwaylandScanner
* fix initializer type -- was hardcoded, seems like an oversight
* add semicolons after class declarations -- one less thing to fix in the
  resulting code

REVIEW:125110
2015-09-09 17:52:43 +02:00
Martin Gräßlin
423f4e7c2f [autotests] Extend tests for Dpms
REVIEW: 125018
2015-09-09 17:47:36 +02:00
Martin Gräßlin
23f4a63908 [tests] Add an example for the Dpms interface
Uses QWidgets to render a very small UI.
* lists each Output
* for each output shows whether dpms is supported
* and which dpms mode it's in
* and provides a button to change the mode
2015-09-09 17:46:40 +02:00
Martin Gräßlin
c4bf620253 [server] Add a DpmsManagerInterface
Adding support for a org_kde_kwin_dpms interface. On server side
Dpms is mostly bound to the OutputInterface exposing just a very
small manager. Whether Dpms is supported and which mode is used is
tracked directly on the OutputInterface.
2015-09-09 17:43:08 +02:00
Martin Gräßlin
9d6df1f92a [server] Add a static OutputInterface::get(wl_resource*)
Allows to retrieve the OutputInterface* for a given native wl_resource.
To support this we need to track the resources bound for each Output.
2015-09-09 17:42:19 +02:00
Marco Martin
4b9ee54d66 Interface for a Slide effect
a kwayland interface plus autotests for
the slide KWin effect, marks a window the direction
it wants to slide from and the offset from the screen edge
2015-09-09 17:37:36 +02:00
Martin Gräßlin
0676d53961 [server] Another round of docu improvements 2015-09-09 17:31:13 +02:00
Martin Gräßlin
5e3bb70612 Fix doxygen generation
Doxygen doesn't like our callback listener at all. We need to hide
it from doxygen, otherwise docu doesn't get generated.
2015-09-09 16:39:50 +02:00
Martin Gräßlin
30122f1e05 API doc improvements 2015-09-09 13:49:58 +02:00
Martin Gräßlin
a074f84cf1 Add dedicated destructor requests to blur and contrast interface
Better resource management.

REVIEW: 125114
2015-09-09 09:42:32 +02:00
Martin Gräßlin
dd5c39d2a6 Implement release for wl_data_device
Callback added to server and client calls release instead of destroy.
2015-09-09 09:34:51 +02:00
Martin Gräßlin
7cd58b27fa [server] Implement raise/lower in QtExtendedSurfaceInterface 2015-09-09 09:17:05 +02:00
Martin Gräßlin
cfd0227a01 Fix typos
REVIEW: 125100
2015-09-08 10:19:24 +02:00
Martin Gräßlin
f4091f4869 [tools] Generation of server boilerplate code 2015-09-07 14:50:37 +02:00
Martin Gräßlin
ecb5e64b67 [server] Clean up headers of BlurInterface and ContrastInterface
* remove unused forward declarations
* remove unused included
2015-09-07 10:56:34 +02:00
Martin Gräßlin
c93f6e84a6 [tools] Generate CamelCase request names and arguments 2015-09-07 10:46:27 +02:00
Martin Gräßlin
7a69d3cc40 [tools] Generate boiler plate of requests on client side
In the header for each request a method is created, with following
features:
* ignores requests working as destructor
* adjusts return type for requests containing newId
* adds QObject *parent = nullptr for requests containing newId
* adds the arguements
* turns arguments from wayland into Qt types

In the cpp the same logic is applied. Methods are not properly
implemented and won't compile in the case of returning.
2015-09-07 10:10:37 +02:00
Martin Gräßlin
7a52d15eca [tools] Generator can parse xml protocol description to generate code
* parses the protocol
* can derive file name to generate from protocol name
* detects which interface is a global and which one is referenced
* generates client code for global and for resource
* comes with a mapping.txt file to translate wl -> KWayland
2015-09-04 13:58:14 +02:00
Volker Krause
51018e8e38 compile 2015-09-03 18:40:04 +02:00
Marco Martin
b99f95e3e2 support OnScreenDisplay window type
plasmashell needs some of their windows as on screen display
ideally only the shell will be allowed to use them
REVIEW:125036
2015-09-03 18:16:26 +02:00
Marco Martin
47d7a79f9d add missing files for the contrast effect 2015-09-03 16:27:20 +02:00
Marco Martin
1f4beb0334 Wayland protocol for background contrast
new wayland protocol used to define regions behind a window
in which the kwin background contrast effect should be applied
REVIEW:125030
2015-09-03 16:12:23 +02:00
Martin Gräßlin
62ddb960c4 Add a small tool to generate the boilerplate for Wayland interfaces
The small tool added here allows to automate the process of generating
the boiler plate for an interface. Currently it's able to generate the
Client side code representing a wl_global.

The tool does not get installed, so run it from build directory:
Example usage:
./kwaylandScanner -c Foo -f foo -g wl_foo

This will generate a wrapper for the wl_foo interface in files:
foo.h and foo.cpp
The class is called KWayland::Client::Foo.

The tool will be extended. Following things are on the TODO list:
* parse xml to get the Wayland names
* add listener (if needed)
* generate code for Wayland interfaces representing Resources
* generate the Server boiler plate

CCMAIL: mart@kde.org
CCMAIL: sebas@kde.org
2015-09-03 11:58:15 +02:00
Martin Gräßlin
66838ccf33 Fix compiler warnings 2015-09-02 16:20:10 +02:00
Martin Gräßlin
8dc1e73f5d [server] Use WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION 2015-09-02 16:14:16 +02:00
Martin Gräßlin
13bf4c9484 Implement repeat info on wl_keyboard protocol
* Raises wl_seat supported version to 4 in both server and client
* Raises wl_keyboard supported version to 4 in wl_keyboard
* wl_pointer and wl_touch are still on version 3
* Raises minimum Wayland version to 1.6
2015-09-02 16:04:14 +02:00
Marco Martin
4c3aa31cd3 Blur protocol in KWayland
a protocol to activate the blur behind windows and to
optionally set a sub region of the window where to apply
the blur to, in case the window is shaped
REVIEW:125015
2015-09-02 14:42:57 +02:00