diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-09-27 22:44:57 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-09-27 22:51:37 +1000 |
commit | 21ff87d72b44604d348cf71da3175b85ac5b2f75 (patch) | |
tree | de0ecfd66fd3a6957e0f8a2eb5038c785b3965c2 /sway/tree/container.c | |
parent | Rename view_set_csd_from_client to view_update_csd_from_client (diff) | |
download | sway-21ff87d72b44604d348cf71da3175b85ac5b2f75.tar.gz sway-21ff87d72b44604d348cf71da3175b85ac5b2f75.tar.zst sway-21ff87d72b44604d348cf71da3175b85ac5b2f75.zip |
Improve CSD logic
This does the following:
* Removes the xdg-decoration surface_commit listener. I was under the
impression the client could ignore the server's preference and set
whatever decoration they like using this protocol, but I don't think
that's right.
* Adds a listener for the xdg-decoration request_mode signal. The
protocol states that the server should respond to this with its
preference. We'll always respond with SSD here.
* Makes it so tiled views which use CSD will still have sway decorations
rendered. To do this, using_csd had to be added back to the view struct,
and the border is changed when floating or unfloating a view.
Diffstat (limited to 'sway/tree/container.c')
-rw-r--r-- | sway/tree/container.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c index d75e34a5..9b671c1d 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c | |||
@@ -669,6 +669,9 @@ void container_set_floating(struct sway_container *container, bool enable) { | |||
669 | container_init_floating(container); | 669 | container_init_floating(container); |
670 | if (container->view) { | 670 | if (container->view) { |
671 | view_set_tiled(container->view, false); | 671 | view_set_tiled(container->view, false); |
672 | if (container->view->using_csd) { | ||
673 | container->view->border = B_CSD; | ||
674 | } | ||
672 | } | 675 | } |
673 | if (old_parent) { | 676 | if (old_parent) { |
674 | container_reap_empty(old_parent); | 677 | container_reap_empty(old_parent); |
@@ -695,6 +698,9 @@ void container_set_floating(struct sway_container *container, bool enable) { | |||
695 | } | 698 | } |
696 | if (container->view) { | 699 | if (container->view) { |
697 | view_set_tiled(container->view, true); | 700 | view_set_tiled(container->view, true); |
701 | if (container->view->using_csd) { | ||
702 | container->view->border = container->view->saved_border; | ||
703 | } | ||
698 | } | 704 | } |
699 | container->is_sticky = false; | 705 | container->is_sticky = false; |
700 | } | 706 | } |