diff --git a/protocol/meson.build b/protocol/meson.build
index e87cf46..3975813 100644
--- a/protocol/meson.build
+++ b/protocol/meson.build
@@ -11,6 +11,10 @@ protocols = [
'stable/xdg-shell/xdg-shell.xml'),
]
+if get_option('tests')
+ protocols += 'xdg-dialog-v1.xml'
+endif
+
gen_client_header = generator(prog_wayland_scanner,
output: ['@BASENAME@-client.h'],
arguments: ['-c', 'client-header', '@INPUT@', '@BUILD_DIR@/@BASENAME@-client.h'])
@@ -28,8 +32,10 @@ server_protocol_srcs = []
foreach protocol : protocols
client_header = gen_client_header.process(protocol)
- server_header = gen_server_header.process(protocol)
code = gen_private_code.process(protocol)
client_protocol_srcs += [client_header, code]
- server_protocol_srcs += [server_header, code]
+ if get_option('tests')
+ server_header = gen_server_header.process(protocol)
+ server_protocol_srcs += [server_header, code]
+ endif
endforeach
diff --git a/protocol/xdg-dialog-v1.xml b/protocol/xdg-dialog-v1.xml
new file mode 100644
index 0000000..fb3fc14
--- /dev/null
+++ b/protocol/xdg-dialog-v1.xml
@@ -0,0 +1,110 @@
+
+
+
+ Copyright © 2023 Carlos Garnacho
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the next
+ paragraph) shall be included in all copies or substantial portions of the
+ Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+
+
+
+ The xdg_wm_dialog_v1 interface is exposed as a global object allowing
+ to register surfaces with a xdg_toplevel role as "dialogs" relative to
+ another toplevel.
+
+ The compositor may let this relation influence how the surface is
+ placed, displayed or interacted with.
+
+ Warning! The protocol described in this file is currently in the testing
+ phase. Backward compatible changes may be added together with the
+ corresponding interface version bump. Backward incompatible changes can
+ only be done by creating a new major version of the extension.
+
+
+
+
+
+
+
+
+ Destroys the xdg_wm_dialog_v1 object. This does not affect
+ the xdg_dialog_v1 objects generated through it.
+
+
+
+
+
+ Creates a xdg_dialog_v1 object for the given toplevel. See the interface
+ description for more details.
+
+ Compositors must raise an already_used error if clients attempt to
+ create multiple xdg_dialog_v1 objects for the same xdg_toplevel.
+
+
+
+
+
+
+
+
+ A xdg_dialog_v1 object is an ancillary object tied to a xdg_toplevel. Its
+ purpose is hinting the compositor that the toplevel is a "dialog" (e.g. a
+ temporary window) relative to another toplevel (see
+ xdg_toplevel.set_parent). If the xdg_toplevel is destroyed, the xdg_dialog_v1
+ becomes inert.
+
+ Through this object, the client may provide additional hints about
+ the purpose of the secondary toplevel. This interface has no effect
+ on toplevels that are not attached to a parent toplevel.
+
+
+
+
+ Destroys the xdg_dialog_v1 object. If this object is destroyed
+ before the related xdg_toplevel, the compositor should unapply its
+ effects.
+
+
+
+
+
+ Hints that the dialog has "modal" behavior. Modal dialogs typically
+ require to be fully addressed by the user (i.e. closed) before resuming
+ interaction with the parent toplevel, and may require a distinct
+ presentation.
+
+ Clients must implement the logic to filter events in the parent
+ toplevel on their own.
+
+ Compositors may choose any policy in event delivery to the parent
+ toplevel, from delivering all events unfiltered to using them for
+ internal consumption.
+
+
+
+
+
+ Drops the hint that this dialog has "modal" behavior. See
+ xdg_dialog_v1.set_modal for more details.
+
+
+
+
diff --git a/test/mock-server/mock-server.h b/test/mock-server/mock-server.h
index 4af0960..b8ff5fe 100644
--- a/test/mock-server/mock-server.h
+++ b/test/mock-server/mock-server.h
@@ -12,6 +12,7 @@
#include "test-common.h"
#include
#include "xdg-shell-server.h"
+#include "xdg-dialog-v1-server.h"
#include "wlr-layer-shell-unstable-v1-server.h"
extern struct wl_display* display;
diff --git a/test/mock-server/overrides.c b/test/mock-server/overrides.c
index 9bd1a9b..3ac561f 100644
--- a/test/mock-server/overrides.c
+++ b/test/mock-server/overrides.c
@@ -371,4 +371,5 @@ void init()
default_global_create(display, &wl_subcompositor_interface, 1);
default_global_create(display, &xdg_wm_base_interface, 2);
default_global_create(display, &zwlr_layer_shell_v1_interface, 4);
+ default_global_create(display, &xdg_wm_dialog_v1_interface, 1);
}