aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-05-12 14:56:20 -0400
committerLibravatar GitHub <noreply@github.com>2018-05-12 14:56:20 -0400
commit9d607b72532096e469fdaccf474836c310b629ff (patch)
tree963c5348e2d48ed188e2d4f08ecb01898f1d116d
parentMerge pull request #1964 from emersion/wlroots-970 (diff)
parentDon't destroy view child on xdg-popup unmap (diff)
downloadsway-9d607b72532096e469fdaccf474836c310b629ff.tar.gz
sway-9d607b72532096e469fdaccf474836c310b629ff.tar.zst
sway-9d607b72532096e469fdaccf474836c310b629ff.zip
Merge pull request #1967 from emersion/remove-xdg-popup-unmap
Don't destroy view child on xdg-popup unmap
-rw-r--r--include/sway/tree/view.h1
-rw-r--r--sway/desktop/xdg_shell_v6.c8
-rw-r--r--sway/desktop/xwayland.c4
3 files changed, 0 insertions, 13 deletions
diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h
index 4ecd8c44..8091fe0c 100644
--- a/include/sway/tree/view.h
+++ b/include/sway/tree/view.h
@@ -153,7 +153,6 @@ struct sway_xdg_popup_v6 {
153 struct wlr_xdg_surface_v6 *wlr_xdg_surface_v6; 153 struct wlr_xdg_surface_v6 *wlr_xdg_surface_v6;
154 154
155 struct wl_listener new_popup; 155 struct wl_listener new_popup;
156 struct wl_listener unmap;
157 struct wl_listener destroy; 156 struct wl_listener destroy;
158}; 157};
159 158
diff --git a/sway/desktop/xdg_shell_v6.c b/sway/desktop/xdg_shell_v6.c
index 8ecb330d..e9051b6c 100644
--- a/sway/desktop/xdg_shell_v6.c
+++ b/sway/desktop/xdg_shell_v6.c
@@ -20,7 +20,6 @@ static void popup_destroy(struct sway_view_child *child) {
20 } 20 }
21 struct sway_xdg_popup_v6 *popup = (struct sway_xdg_popup_v6 *)child; 21 struct sway_xdg_popup_v6 *popup = (struct sway_xdg_popup_v6 *)child;
22 wl_list_remove(&popup->new_popup.link); 22 wl_list_remove(&popup->new_popup.link);
23 wl_list_remove(&popup->unmap.link);
24 wl_list_remove(&popup->destroy.link); 23 wl_list_remove(&popup->destroy.link);
25 free(popup); 24 free(popup);
26} 25}
@@ -39,11 +38,6 @@ static void popup_handle_new_popup(struct wl_listener *listener, void *data) {
39 popup_create(wlr_popup, popup->child.view); 38 popup_create(wlr_popup, popup->child.view);
40} 39}
41 40
42static void popup_handle_unmap(struct wl_listener *listener, void *data) {
43 struct sway_xdg_popup_v6 *popup = wl_container_of(listener, popup, unmap);
44 view_child_destroy(&popup->child);
45}
46
47static void popup_handle_destroy(struct wl_listener *listener, void *data) { 41static void popup_handle_destroy(struct wl_listener *listener, void *data) {
48 struct sway_xdg_popup_v6 *popup = wl_container_of(listener, popup, destroy); 42 struct sway_xdg_popup_v6 *popup = wl_container_of(listener, popup, destroy);
49 view_child_destroy(&popup->child); 43 view_child_destroy(&popup->child);
@@ -62,8 +56,6 @@ static struct sway_xdg_popup_v6 *popup_create(
62 56
63 wl_signal_add(&xdg_surface->events.new_popup, &popup->new_popup); 57 wl_signal_add(&xdg_surface->events.new_popup, &popup->new_popup);
64 popup->new_popup.notify = popup_handle_new_popup; 58 popup->new_popup.notify = popup_handle_new_popup;
65 wl_signal_add(&xdg_surface->events.unmap, &popup->unmap);
66 popup->unmap.notify = popup_handle_unmap;
67 wl_signal_add(&xdg_surface->events.destroy, &popup->destroy); 59 wl_signal_add(&xdg_surface->events.destroy, &popup->destroy);
68 popup->destroy.notify = popup_handle_destroy; 60 popup->destroy.notify = popup_handle_destroy;
69 61
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c
index 8f935760..1d3c857d 100644
--- a/sway/desktop/xwayland.c
+++ b/sway/desktop/xwayland.c
@@ -82,10 +82,6 @@ static void unmanaged_handle_unmap(struct wl_listener *listener, void *data) {
82static void unmanaged_handle_destroy(struct wl_listener *listener, void *data) { 82static void unmanaged_handle_destroy(struct wl_listener *listener, void *data) {
83 struct sway_xwayland_unmanaged *surface = 83 struct sway_xwayland_unmanaged *surface =
84 wl_container_of(listener, surface, destroy); 84 wl_container_of(listener, surface, destroy);
85 struct wlr_xwayland_surface *xsurface = surface->wlr_xwayland_surface;
86 if (xsurface->mapped) {
87 unmanaged_handle_unmap(&surface->unmap, xsurface);
88 }
89 wl_list_remove(&surface->map.link); 85 wl_list_remove(&surface->map.link);
90 wl_list_remove(&surface->unmap.link); 86 wl_list_remove(&surface->unmap.link);
91 wl_list_remove(&surface->destroy.link); 87 wl_list_remove(&surface->destroy.link);