diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-06-26 14:24:15 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-06-26 14:24:15 +1000 |
commit | e8001e6fbe827f6ae6842cf9f221edb322bb570e (patch) | |
tree | 806530a903cfb330a1a54b9c9366f21a01133a38 | |
parent | Rename view's free callback to destroy (diff) | |
download | sway-e8001e6fbe827f6ae6842cf9f221edb322bb570e.tar.gz sway-e8001e6fbe827f6ae6842cf9f221edb322bb570e.tar.zst sway-e8001e6fbe827f6ae6842cf9f221edb322bb570e.zip |
Damage output when views toggle fullscreen
Also add workspace to the transaction when a view maps in fullscreen
mode.
-rw-r--r-- | sway/desktop/xdg_shell.c | 10 | ||||
-rw-r--r-- | sway/desktop/xdg_shell_v6.c | 10 | ||||
-rw-r--r-- | sway/desktop/xwayland.c | 12 |
3 files changed, 26 insertions, 6 deletions
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c index 105e77ae..484afd0c 100644 --- a/sway/desktop/xdg_shell.c +++ b/sway/desktop/xdg_shell.c | |||
@@ -221,8 +221,11 @@ static void handle_map(struct wl_listener *listener, void *data) { | |||
221 | 221 | ||
222 | if (xdg_surface->toplevel->client_pending.fullscreen) { | 222 | if (xdg_surface->toplevel->client_pending.fullscreen) { |
223 | view_set_fullscreen(view, true); | 223 | view_set_fullscreen(view, true); |
224 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); | ||
225 | arrange_and_commit(ws); | ||
226 | } else { | ||
227 | arrange_and_commit(view->swayc->parent); | ||
224 | } | 228 | } |
225 | arrange_and_commit(view->swayc->parent); | ||
226 | 229 | ||
227 | xdg_shell_view->commit.notify = handle_commit; | 230 | xdg_shell_view->commit.notify = handle_commit; |
228 | wl_signal_add(&xdg_surface->surface->events.commit, | 231 | wl_signal_add(&xdg_surface->surface->events.commit, |
@@ -269,7 +272,10 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data) | |||
269 | view_set_fullscreen(view, e->fullscreen); | 272 | view_set_fullscreen(view, e->fullscreen); |
270 | 273 | ||
271 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); | 274 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); |
272 | arrange_and_commit(ws); | 275 | struct sway_transaction *transaction = transaction_create(); |
276 | arrange_windows(ws, transaction); | ||
277 | transaction_add_damage(transaction, container_get_box(ws->parent)); | ||
278 | transaction_commit(transaction); | ||
273 | } | 279 | } |
274 | 280 | ||
275 | void handle_xdg_shell_surface(struct wl_listener *listener, void *data) { | 281 | void handle_xdg_shell_surface(struct wl_listener *listener, void *data) { |
diff --git a/sway/desktop/xdg_shell_v6.c b/sway/desktop/xdg_shell_v6.c index 19b30604..da2eda7a 100644 --- a/sway/desktop/xdg_shell_v6.c +++ b/sway/desktop/xdg_shell_v6.c | |||
@@ -220,8 +220,11 @@ static void handle_map(struct wl_listener *listener, void *data) { | |||
220 | 220 | ||
221 | if (xdg_surface->toplevel->client_pending.fullscreen) { | 221 | if (xdg_surface->toplevel->client_pending.fullscreen) { |
222 | view_set_fullscreen(view, true); | 222 | view_set_fullscreen(view, true); |
223 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); | ||
224 | arrange_and_commit(ws); | ||
225 | } else { | ||
226 | arrange_and_commit(view->swayc->parent); | ||
223 | } | 227 | } |
224 | arrange_and_commit(view->swayc->parent); | ||
225 | 228 | ||
226 | xdg_shell_v6_view->commit.notify = handle_commit; | 229 | xdg_shell_v6_view->commit.notify = handle_commit; |
227 | wl_signal_add(&xdg_surface->surface->events.commit, | 230 | wl_signal_add(&xdg_surface->surface->events.commit, |
@@ -264,7 +267,10 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data) | |||
264 | view_set_fullscreen(view, e->fullscreen); | 267 | view_set_fullscreen(view, e->fullscreen); |
265 | 268 | ||
266 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); | 269 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); |
267 | arrange_and_commit(ws); | 270 | struct sway_transaction *transaction = transaction_create(); |
271 | arrange_windows(ws, transaction); | ||
272 | transaction_add_damage(transaction, container_get_box(ws->parent)); | ||
273 | transaction_commit(transaction); | ||
268 | } | 274 | } |
269 | 275 | ||
270 | void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data) { | 276 | void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data) { |
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c index eea8420d..720ea2fd 100644 --- a/sway/desktop/xwayland.c +++ b/sway/desktop/xwayland.c | |||
@@ -286,8 +286,11 @@ static void handle_map(struct wl_listener *listener, void *data) { | |||
286 | 286 | ||
287 | if (xsurface->fullscreen) { | 287 | if (xsurface->fullscreen) { |
288 | view_set_fullscreen(view, true); | 288 | view_set_fullscreen(view, true); |
289 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); | ||
290 | arrange_and_commit(ws); | ||
291 | } else { | ||
292 | arrange_and_commit(view->swayc->parent); | ||
289 | } | 293 | } |
290 | arrange_and_commit(view->swayc->parent); | ||
291 | } | 294 | } |
292 | 295 | ||
293 | static void handle_destroy(struct wl_listener *listener, void *data) { | 296 | static void handle_destroy(struct wl_listener *listener, void *data) { |
@@ -337,7 +340,12 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data) | |||
337 | return; | 340 | return; |
338 | } | 341 | } |
339 | view_set_fullscreen(view, xsurface->fullscreen); | 342 | view_set_fullscreen(view, xsurface->fullscreen); |
340 | arrange_and_commit(view->swayc); | 343 | |
344 | struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); | ||
345 | struct sway_transaction *transaction = transaction_create(); | ||
346 | arrange_windows(ws, transaction); | ||
347 | transaction_add_damage(transaction, container_get_box(ws->parent)); | ||
348 | transaction_commit(transaction); | ||
341 | } | 349 | } |
342 | 350 | ||
343 | static void handle_set_title(struct wl_listener *listener, void *data) { | 351 | static void handle_set_title(struct wl_listener *listener, void *data) { |