aboutsummaryrefslogtreecommitdiffstats
path: root/sway/desktop/xdg_shell_v6.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/desktop/xdg_shell_v6.c')
-rw-r--r--sway/desktop/xdg_shell_v6.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/sway/desktop/xdg_shell_v6.c b/sway/desktop/xdg_shell_v6.c
index 8361aab3..e4703040 100644
--- a/sway/desktop/xdg_shell_v6.c
+++ b/sway/desktop/xdg_shell_v6.c
@@ -143,9 +143,7 @@ static void destroy(struct sway_view *view) {
143 if (xdg_shell_v6_view == NULL) { 143 if (xdg_shell_v6_view == NULL) {
144 return; 144 return;
145 } 145 }
146 wl_list_remove(&xdg_shell_v6_view->commit.link);
147 wl_list_remove(&xdg_shell_v6_view->destroy.link); 146 wl_list_remove(&xdg_shell_v6_view->destroy.link);
148 wl_list_remove(&xdg_shell_v6_view->new_popup.link);
149 wl_list_remove(&xdg_shell_v6_view->map.link); 147 wl_list_remove(&xdg_shell_v6_view->map.link);
150 wl_list_remove(&xdg_shell_v6_view->unmap.link); 148 wl_list_remove(&xdg_shell_v6_view->unmap.link);
151 free(xdg_shell_v6_view); 149 free(xdg_shell_v6_view);
@@ -169,7 +167,7 @@ static void handle_commit(struct wl_listener *listener, void *data) {
169 // TODO: Let floating views do whatever 167 // TODO: Let floating views do whatever
170 view_update_size(view, xdg_shell_v6_view->pending_width, 168 view_update_size(view, xdg_shell_v6_view->pending_width,
171 xdg_shell_v6_view->pending_height); 169 xdg_shell_v6_view->pending_height);
172 view_damage_from(view); 170 view_damage(view, false);
173} 171}
174 172
175static void handle_new_popup(struct wl_listener *listener, void *data) { 173static void handle_new_popup(struct wl_listener *listener, void *data) {
@@ -182,14 +180,28 @@ static void handle_new_popup(struct wl_listener *listener, void *data) {
182static void handle_unmap(struct wl_listener *listener, void *data) { 180static void handle_unmap(struct wl_listener *listener, void *data) {
183 struct sway_xdg_shell_v6_view *xdg_shell_v6_view = 181 struct sway_xdg_shell_v6_view *xdg_shell_v6_view =
184 wl_container_of(listener, xdg_shell_v6_view, unmap); 182 wl_container_of(listener, xdg_shell_v6_view, unmap);
183
185 view_unmap(&xdg_shell_v6_view->view); 184 view_unmap(&xdg_shell_v6_view->view);
185
186 wl_list_remove(&xdg_shell_v6_view->commit.link);
187 wl_list_remove(&xdg_shell_v6_view->new_popup.link);
186} 188}
187 189
188static void handle_map(struct wl_listener *listener, void *data) { 190static void handle_map(struct wl_listener *listener, void *data) {
189 struct sway_xdg_shell_v6_view *xdg_shell_v6_view = 191 struct sway_xdg_shell_v6_view *xdg_shell_v6_view =
190 wl_container_of(listener, xdg_shell_v6_view, map); 192 wl_container_of(listener, xdg_shell_v6_view, map);
191 struct sway_view *view = &xdg_shell_v6_view->view; 193 struct sway_view *view = &xdg_shell_v6_view->view;
194 struct wlr_xdg_surface_v6 *xdg_surface = view->wlr_xdg_surface_v6;
195
192 view_map(view, view->wlr_xdg_surface_v6->surface); 196 view_map(view, view->wlr_xdg_surface_v6->surface);
197
198 xdg_shell_v6_view->commit.notify = handle_commit;
199 wl_signal_add(&xdg_surface->surface->events.commit,
200 &xdg_shell_v6_view->commit);
201
202 xdg_shell_v6_view->new_popup.notify = handle_new_popup;
203 wl_signal_add(&xdg_surface->events.new_popup,
204 &xdg_shell_v6_view->new_popup);
193} 205}
194 206
195static void handle_destroy(struct wl_listener *listener, void *data) { 207static void handle_destroy(struct wl_listener *listener, void *data) {
@@ -226,14 +238,6 @@ void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data) {
226 // - Look up pid and open on appropriate workspace 238 // - Look up pid and open on appropriate workspace
227 // - Criteria 239 // - Criteria
228 240
229 xdg_shell_v6_view->commit.notify = handle_commit;
230 wl_signal_add(&xdg_surface->surface->events.commit,
231 &xdg_shell_v6_view->commit);
232
233 xdg_shell_v6_view->new_popup.notify = handle_new_popup;
234 wl_signal_add(&xdg_surface->events.new_popup,
235 &xdg_shell_v6_view->new_popup);
236
237 xdg_shell_v6_view->map.notify = handle_map; 241 xdg_shell_v6_view->map.notify = handle_map;
238 wl_signal_add(&xdg_surface->events.map, &xdg_shell_v6_view->map); 242 wl_signal_add(&xdg_surface->events.map, &xdg_shell_v6_view->map);
239 243