diff options
author | emersion <contact@emersion.fr> | 2018-07-22 22:20:07 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-07-22 22:20:07 +0100 |
commit | 238c8afc74241efdc44d1cf88322d322ce1226d9 (patch) | |
tree | 67496961350dfc7959a74e33be428efb5e567698 /sway/desktop/xdg_shell_v6.c | |
parent | Merge pull request #2296 from RyanDwyer/floating-modifier (diff) | |
download | sway-238c8afc74241efdc44d1cf88322d322ce1226d9.tar.gz sway-238c8afc74241efdc44d1cf88322d322ce1226d9.tar.zst sway-238c8afc74241efdc44d1cf88322d322ce1226d9.zip |
Handle set_{title,app_id} for xdg-shell and zxdg-shell-v6
This allows to update the title even if the view doesn't commit.
This is useful e.g. when a terminal sets its toplevel title to
the currently running command and when the view isn't visible.
Diffstat (limited to 'sway/desktop/xdg_shell_v6.c')
-rw-r--r-- | sway/desktop/xdg_shell_v6.c | 26 |
1 files changed, 25 insertions, 1 deletions
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) { |