summaryrefslogtreecommitdiff
path: root/sway/desktop/xdg_shell.c
diff options
context:
space:
mode:
authorRyan Dwyer <[email protected]>2018-07-31 19:58:34 +1000
committerRyan Dwyer <[email protected]>2018-07-31 19:58:34 +1000
commit7a59508da467a3b793e355e28ae67ce04633761c (patch)
tree0f72b5b1804f6f6afa3b2317a4d9e3cc402fda9a /sway/desktop/xdg_shell.c
parentde86d65627e96cffe77f4abf11c4a0b982326ff9 (diff)
Close popups when changing focus
Also reverts the send frame done changes from the previous commit.
Diffstat (limited to 'sway/desktop/xdg_shell.c')
-rw-r--r--sway/desktop/xdg_shell.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c
index 9f94bd74..b364663d 100644
--- a/sway/desktop/xdg_shell.c
+++ b/sway/desktop/xdg_shell.c
@@ -197,6 +197,18 @@ static void _close(struct sway_view *view) {
}
}
+static void close_popups_iterator(struct wlr_surface *surface,
+ int sx, int sy, void *data) {
+ struct wlr_xdg_surface *xdg_surface =
+ wlr_xdg_surface_from_wlr_surface(surface);
+ wlr_xdg_surface_send_close(xdg_surface);
+}
+
+static void close_popups(struct sway_view *view) {
+ wlr_xdg_surface_for_each_popup(view->wlr_xdg_surface,
+ close_popups_iterator, NULL);
+}
+
static void destroy(struct sway_view *view) {
struct sway_xdg_shell_view *xdg_shell_view =
xdg_shell_view_from_view(view);
@@ -217,6 +229,7 @@ static const struct sway_view_impl view_impl = {
.for_each_surface = for_each_surface,
.for_each_popup = for_each_popup,
.close = _close,
+ .close_popups = close_popups,
.destroy = destroy,
};