diff options
-rw-r--r-- | include/sway/tree/view.h | 4 | ||||
-rw-r--r-- | sway/desktop/xdg_shell.c | 26 | ||||
-rw-r--r-- | sway/desktop/xdg_shell_v6.c | 26 |
3 files changed, 54 insertions, 2 deletions
diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h index 1dfb218b..3bdfe252 100644 --- a/include/sway/tree/view.h +++ b/include/sway/tree/view.h | |||
@@ -110,6 +110,8 @@ struct sway_xdg_shell_v6_view { | |||
110 | struct wl_listener request_resize; | 110 | struct wl_listener request_resize; |
111 | struct wl_listener request_maximize; | 111 | struct wl_listener request_maximize; |
112 | struct wl_listener request_fullscreen; | 112 | struct wl_listener request_fullscreen; |
113 | struct wl_listener set_title; | ||
114 | struct wl_listener set_app_id; | ||
113 | struct wl_listener new_popup; | 115 | struct wl_listener new_popup; |
114 | struct wl_listener map; | 116 | struct wl_listener map; |
115 | struct wl_listener unmap; | 117 | struct wl_listener unmap; |
@@ -124,6 +126,8 @@ struct sway_xdg_shell_view { | |||
124 | struct wl_listener request_resize; | 126 | struct wl_listener request_resize; |
125 | struct wl_listener request_maximize; | 127 | struct wl_listener request_maximize; |
126 | struct wl_listener request_fullscreen; | 128 | struct wl_listener request_fullscreen; |
129 | struct wl_listener set_title; | ||
130 | struct wl_listener set_app_id; | ||
127 | struct wl_listener new_popup; | 131 | struct wl_listener new_popup; |
128 | struct wl_listener map; | 132 | struct wl_listener map; |
129 | struct wl_listener unmap; | 133 | struct wl_listener unmap; |
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c index 706b35c3..62c3abc8 100644 --- a/sway/desktop/xdg_shell.c +++ b/sway/desktop/xdg_shell.c | |||
@@ -225,10 +225,24 @@ static void handle_commit(struct wl_listener *listener, void *data) { | |||
225 | transaction_notify_view_ready(view, xdg_surface->configure_serial); | 225 | transaction_notify_view_ready(view, xdg_surface->configure_serial); |
226 | } | 226 | } |
227 | 227 | ||
228 | view_update_title(view, false); | ||
229 | view_damage_from(view); | 228 | view_damage_from(view); |
230 | } | 229 | } |
231 | 230 | ||
231 | static void handle_set_title(struct wl_listener *listener, void *data) { | ||
232 | struct sway_xdg_shell_view *xdg_shell_view = | ||
233 | wl_container_of(listener, xdg_shell_view, set_title); | ||
234 | struct sway_view *view = &xdg_shell_view->view; | ||
235 | view_update_title(view, false); | ||
236 | view_execute_criteria(view); | ||
237 | } | ||
238 | |||
239 | static void handle_set_app_id(struct wl_listener *listener, void *data) { | ||
240 | struct sway_xdg_shell_view *xdg_shell_view = | ||
241 | wl_container_of(listener, xdg_shell_view, set_app_id); | ||
242 | struct sway_view *view = &xdg_shell_view->view; | ||
243 | view_execute_criteria(view); | ||
244 | } | ||
245 | |||
232 | static void handle_new_popup(struct wl_listener *listener, void *data) { | 246 | static void handle_new_popup(struct wl_listener *listener, void *data) { |
233 | struct sway_xdg_shell_view *xdg_shell_view = | 247 | struct sway_xdg_shell_view *xdg_shell_view = |
234 | wl_container_of(listener, xdg_shell_view, new_popup); | 248 | wl_container_of(listener, xdg_shell_view, new_popup); |
@@ -304,6 +318,8 @@ static void handle_unmap(struct wl_listener *listener, void *data) { | |||
304 | wl_list_remove(&xdg_shell_view->request_fullscreen.link); | 318 | wl_list_remove(&xdg_shell_view->request_fullscreen.link); |
305 | wl_list_remove(&xdg_shell_view->request_move.link); | 319 | wl_list_remove(&xdg_shell_view->request_move.link); |
306 | wl_list_remove(&xdg_shell_view->request_resize.link); | 320 | wl_list_remove(&xdg_shell_view->request_resize.link); |
321 | wl_list_remove(&xdg_shell_view->set_title.link); | ||
322 | wl_list_remove(&xdg_shell_view->set_app_id.link); | ||
307 | } | 323 | } |
308 | 324 | ||
309 | static void handle_map(struct wl_listener *listener, void *data) { | 325 | static void handle_map(struct wl_listener *listener, void *data) { |
@@ -349,6 +365,14 @@ static void handle_map(struct wl_listener *listener, void *data) { | |||
349 | xdg_shell_view->request_resize.notify = handle_request_resize; | 365 | xdg_shell_view->request_resize.notify = handle_request_resize; |
350 | wl_signal_add(&xdg_surface->toplevel->events.request_resize, | 366 | wl_signal_add(&xdg_surface->toplevel->events.request_resize, |
351 | &xdg_shell_view->request_resize); | 367 | &xdg_shell_view->request_resize); |
368 | |||
369 | xdg_shell_view->set_title.notify = handle_set_title; | ||
370 | wl_signal_add(&xdg_surface->toplevel->events.set_title, | ||
371 | &xdg_shell_view->set_title); | ||
372 | |||
373 | xdg_shell_view->set_app_id.notify = handle_set_app_id; | ||
374 | wl_signal_add(&xdg_surface->toplevel->events.set_app_id, | ||
375 | &xdg_shell_view->set_app_id); | ||
352 | } | 376 | } |
353 | 377 | ||
354 | static void handle_destroy(struct wl_listener *listener, void *data) { | 378 | static void handle_destroy(struct wl_listener *listener, void *data) { |
diff --git a/sway/desktop/xdg_shell_v6.c b/sway/desktop/xdg_shell_v6.c index 201b5b1e..7fb85410 100644 --- a/sway/desktop/xdg_shell_v6.c +++ b/sway/desktop/xdg_shell_v6.c | |||
@@ -220,10 +220,24 @@ static void handle_commit(struct wl_listener *listener, void *data) { | |||
220 | transaction_notify_view_ready(view, xdg_surface_v6->configure_serial); | 220 | transaction_notify_view_ready(view, xdg_surface_v6->configure_serial); |
221 | } | 221 | } |
222 | 222 | ||
223 | view_update_title(view, false); | ||
224 | view_damage_from(view); | 223 | view_damage_from(view); |
225 | } | 224 | } |
226 | 225 | ||
226 | static void handle_set_title(struct wl_listener *listener, void *data) { | ||
227 | struct sway_xdg_shell_v6_view *xdg_shell_v6_view = | ||
228 | wl_container_of(listener, xdg_shell_v6_view, set_title); | ||
229 | struct sway_view *view = &xdg_shell_v6_view->view; | ||
230 | view_update_title(view, false); | ||
231 | view_execute_criteria(view); | ||
232 | } | ||
233 | |||
234 | static void handle_set_app_id(struct wl_listener *listener, void *data) { | ||
235 | struct sway_xdg_shell_v6_view *xdg_shell_v6_view = | ||
236 | wl_container_of(listener, xdg_shell_v6_view, set_app_id); | ||
237 | struct sway_view *view = &xdg_shell_v6_view->view; | ||
238 | view_execute_criteria(view); | ||
239 | } | ||
240 | |||
227 | static void handle_new_popup(struct wl_listener *listener, void *data) { | 241 | static void handle_new_popup(struct wl_listener *listener, void *data) { |
228 | struct sway_xdg_shell_v6_view *xdg_shell_v6_view = | 242 | struct sway_xdg_shell_v6_view *xdg_shell_v6_view = |
229 | wl_container_of(listener, xdg_shell_v6_view, new_popup); | 243 | wl_container_of(listener, xdg_shell_v6_view, new_popup); |
@@ -299,6 +313,8 @@ static void handle_unmap(struct wl_listener *listener, void *data) { | |||
299 | wl_list_remove(&xdg_shell_v6_view->request_fullscreen.link); | 313 | wl_list_remove(&xdg_shell_v6_view->request_fullscreen.link); |
300 | wl_list_remove(&xdg_shell_v6_view->request_move.link); | 314 | wl_list_remove(&xdg_shell_v6_view->request_move.link); |
301 | wl_list_remove(&xdg_shell_v6_view->request_resize.link); | 315 | wl_list_remove(&xdg_shell_v6_view->request_resize.link); |
316 | wl_list_remove(&xdg_shell_v6_view->set_title.link); | ||
317 | wl_list_remove(&xdg_shell_v6_view->set_app_id.link); | ||
302 | } | 318 | } |
303 | 319 | ||
304 | static void handle_map(struct wl_listener *listener, void *data) { | 320 | static void handle_map(struct wl_listener *listener, void *data) { |
@@ -344,6 +360,14 @@ static void handle_map(struct wl_listener *listener, void *data) { | |||
344 | xdg_shell_v6_view->request_resize.notify = handle_request_resize; | 360 | xdg_shell_v6_view->request_resize.notify = handle_request_resize; |
345 | wl_signal_add(&xdg_surface->toplevel->events.request_resize, | 361 | wl_signal_add(&xdg_surface->toplevel->events.request_resize, |
346 | &xdg_shell_v6_view->request_resize); | 362 | &xdg_shell_v6_view->request_resize); |
363 | |||
364 | xdg_shell_v6_view->set_title.notify = handle_set_title; | ||
365 | wl_signal_add(&xdg_surface->toplevel->events.set_title, | ||
366 | &xdg_shell_v6_view->set_title); | ||
367 | |||
368 | xdg_shell_v6_view->set_app_id.notify = handle_set_app_id; | ||
369 | wl_signal_add(&xdg_surface->toplevel->events.set_app_id, | ||
370 | &xdg_shell_v6_view->set_app_id); | ||
347 | } | 371 | } |
348 | 372 | ||
349 | static void handle_destroy(struct wl_listener *listener, void *data) { | 373 | static void handle_destroy(struct wl_listener *listener, void *data) { |