diff options
author | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2016-05-01 22:05:20 +0200 |
---|---|---|
committer | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2016-05-01 22:08:46 +0200 |
commit | ae5164f1d4b4e81cc14578e92ddab224dced5a22 (patch) | |
tree | 82cef47c5341f25e116b111d936409a36eb59eac | |
parent | Merge pull request #625 from 1ace/fix/buffer-overflow (diff) | |
download | sway-ae5164f1d4b4e81cc14578e92ddab224dced5a22.tar.gz sway-ae5164f1d4b4e81cc14578e92ddab224dced5a22.tar.zst sway-ae5164f1d4b4e81cc14578e92ddab224dced5a22.zip |
Update view title of tabbed/stacked windows
-rw-r--r-- | sway/border.c | 13 | ||||
-rw-r--r-- | sway/handlers.c | 26 |
2 files changed, 26 insertions, 13 deletions
diff --git a/sway/border.c b/sway/border.c index d261d006..0d1be970 100644 --- a/sway/border.c +++ b/sway/border.c | |||
@@ -406,19 +406,6 @@ void render_view_borders(wlc_handle view) { | |||
406 | return; | 406 | return; |
407 | } | 407 | } |
408 | 408 | ||
409 | if (c->border_type == B_NORMAL) { | ||
410 | // update window title | ||
411 | const char *new_name = wlc_view_get_title(view); | ||
412 | |||
413 | if (new_name) { | ||
414 | if (!c->name || strcmp(c->name, new_name) != 0) { | ||
415 | free(c->name); | ||
416 | c->name = strdup(new_name); | ||
417 | update_view_border(c); | ||
418 | } | ||
419 | } | ||
420 | } | ||
421 | |||
422 | if (c->border && c->border->buffer) { | 409 | if (c->border && c->border->buffer) { |
423 | wlc_pixels_write(WLC_RGBA8888, &c->border->geometry, c->border->buffer); | 410 | wlc_pixels_write(WLC_RGBA8888, &c->border->geometry, c->border->buffer); |
424 | } | 411 | } |
diff --git a/sway/handlers.c b/sway/handlers.c index 0e8e82a2..b82456e2 100644 --- a/sway/handlers.c +++ b/sway/handlers.c | |||
@@ -387,6 +387,31 @@ static void handle_view_state_request(wlc_handle view, enum wlc_view_state_bit s | |||
387 | return; | 387 | return; |
388 | } | 388 | } |
389 | 389 | ||
390 | static void handle_view_properties_updated(wlc_handle view, uint32_t mask) { | ||
391 | if (mask == WLC_BIT_PROPERTY_TITLE) { | ||
392 | swayc_t *c = swayc_by_handle(view); | ||
393 | if (!c) { | ||
394 | return; | ||
395 | } | ||
396 | |||
397 | // update window title | ||
398 | const char *new_name = wlc_view_get_title(view); | ||
399 | |||
400 | if (new_name) { | ||
401 | if (!c->name || strcmp(c->name, new_name) != 0) { | ||
402 | free(c->name); | ||
403 | c->name = strdup(new_name); | ||
404 | swayc_t *p = swayc_tabbed_stacked_parent(c); | ||
405 | if (p) { | ||
406 | update_view_border(get_focused_view(p)); | ||
407 | } else if (c->border_type == B_NORMAL) { | ||
408 | update_view_border(c); | ||
409 | } | ||
410 | } | ||
411 | } | ||
412 | } | ||
413 | } | ||
414 | |||
390 | static void handle_binding_command(struct sway_binding *binding) { | 415 | static void handle_binding_command(struct sway_binding *binding) { |
391 | struct sway_binding *binding_copy = binding; | 416 | struct sway_binding *binding_copy = binding; |
392 | bool reload = false; | 417 | bool reload = false; |
@@ -752,6 +777,7 @@ void register_wlc_handlers() { | |||
752 | wlc_set_view_render_pre_cb(handle_view_pre_render); | 777 | wlc_set_view_render_pre_cb(handle_view_pre_render); |
753 | wlc_set_view_request_geometry_cb(handle_view_geometry_request); | 778 | wlc_set_view_request_geometry_cb(handle_view_geometry_request); |
754 | wlc_set_view_request_state_cb(handle_view_state_request); | 779 | wlc_set_view_request_state_cb(handle_view_state_request); |
780 | wlc_set_view_properties_updated_cb(handle_view_properties_updated); | ||
755 | wlc_set_keyboard_key_cb(handle_key); | 781 | wlc_set_keyboard_key_cb(handle_key); |
756 | wlc_set_pointer_motion_cb(handle_pointer_motion); | 782 | wlc_set_pointer_motion_cb(handle_pointer_motion); |
757 | wlc_set_pointer_button_cb(handle_pointer_button); | 783 | wlc_set_pointer_button_cb(handle_pointer_button); |