aboutsummaryrefslogtreecommitdiffstats
path: root/sway/desktop/xdg_shell_v6.c
diff options
context:
space:
mode:
authorLibravatar emersion <contact@emersion.fr>2018-07-22 22:20:07 +0100
committerLibravatar emersion <contact@emersion.fr>2018-07-22 22:20:07 +0100
commit238c8afc74241efdc44d1cf88322d322ce1226d9 (patch)
tree67496961350dfc7959a74e33be428efb5e567698 /sway/desktop/xdg_shell_v6.c
parentMerge pull request #2296 from RyanDwyer/floating-modifier (diff)
downloadsway-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.c26
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
226static 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
234static 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
227static void handle_new_popup(struct wl_listener *listener, void *data) { 241static 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
304static void handle_map(struct wl_listener *listener, void *data) { 320static 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
349static void handle_destroy(struct wl_listener *listener, void *data) { 373static void handle_destroy(struct wl_listener *listener, void *data) {