diff options
author | emersion <contact@emersion.fr> | 2018-07-13 21:53:56 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-08-06 15:20:30 +0100 |
commit | 700941dde8d270b7986bd592fcb42333e7626718 (patch) | |
tree | a7596009b90165dbd34b01598a704a2801a7e73c /sway/decoration.c | |
parent | Merge pull request #2422 from ggreer/compiler-errors (diff) | |
download | sway-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.c | 41 |
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 | |||
7 | static 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 | |||
15 | static 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 | |||
26 | void 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 | } | ||