aboutsummaryrefslogtreecommitdiffstats
path: root/sway/decoration.c
diff options
context:
space:
mode:
authorLibravatar emersion <contact@emersion.fr>2018-07-13 21:53:56 +0100
committerLibravatar emersion <contact@emersion.fr>2018-08-06 15:20:30 +0100
commit700941dde8d270b7986bd592fcb42333e7626718 (patch)
treea7596009b90165dbd34b01598a704a2801a7e73c /sway/decoration.c
parentMerge pull request #2422 from ggreer/compiler-errors (diff)
downloadsway-700941dde8d270b7986bd592fcb42333e7626718.tar.gz
sway-700941dde8d270b7986bd592fcb42333e7626718.tar.zst
sway-700941dde8d270b7986bd592fcb42333e7626718.zip
Listen to server-decoration mode changes
Diffstat (limited to 'sway/decoration.c')
-rw-r--r--sway/decoration.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/sway/decoration.c b/sway/decoration.c
new file mode 100644
index 00000000..73b3f45d
--- /dev/null
+++ b/sway/decoration.c
@@ -0,0 +1,41 @@
1#include <stdlib.h>
2#include "sway/decoration.h"
3#include "sway/server.h"
4#include "sway/tree/view.h"
5#include "log.h"
6
7static void server_decoration_handle_destroy(struct wl_listener *listener,
8 void *data) {
9 struct sway_server_decoration *deco =
10 wl_container_of(listener, deco, destroy);
11 wl_list_remove(&deco->destroy.link);
12 free(deco);
13}
14
15static void server_decoration_handle_mode(struct wl_listener *listener,
16 void *data) {
17 struct sway_server_decoration *deco =
18 wl_container_of(listener, deco, mode);
19 struct sway_view *view =
20 view_from_wlr_surface(deco->wlr_server_decoration->surface);
21
22 // TODO
23 wlr_log(WLR_ERROR, "%p %d", view, deco->wlr_server_decoration->mode);
24}
25
26void handle_server_decoration(struct wl_listener *listener, void *data) {
27 struct wlr_server_decoration *wlr_deco = data;
28
29 struct sway_server_decoration *deco = calloc(1, sizeof(*deco));
30 if (deco == NULL) {
31 return;
32 }
33
34 deco->wlr_server_decoration = wlr_deco;
35
36 wl_signal_add(&wlr_deco->events.destroy, &deco->destroy);
37 deco->destroy.notify = server_decoration_handle_destroy;
38
39 wl_signal_add(&wlr_deco->events.mode, &deco->mode);
40 deco->mode.notify = server_decoration_handle_mode;
41}