aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Mikkel Oscar Lyderik <mikkeloscar@gmail.com>2016-05-01 22:05:20 +0200
committerLibravatar Mikkel Oscar Lyderik <mikkeloscar@gmail.com>2016-05-01 22:08:46 +0200
commitae5164f1d4b4e81cc14578e92ddab224dced5a22 (patch)
tree82cef47c5341f25e116b111d936409a36eb59eac
parentMerge pull request #625 from 1ace/fix/buffer-overflow (diff)
downloadsway-ae5164f1d4b4e81cc14578e92ddab224dced5a22.tar.gz
sway-ae5164f1d4b4e81cc14578e92ddab224dced5a22.tar.zst
sway-ae5164f1d4b4e81cc14578e92ddab224dced5a22.zip
Update view title of tabbed/stacked windows
Requires Cloudef/wlc@80bf003 Fix #623
-rw-r--r--sway/border.c13
-rw-r--r--sway/handlers.c26
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
390static 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
390static void handle_binding_command(struct sway_binding *binding) { 415static 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);