gimp but for windows: a wayland compositor
git clone https://github.com/m-col/wimp
Files | Refs | Readme

Commit 18d85ea1c7ae2a718a8aaee1efe5365c00a0d105
Parent: 1367fb202f326b60c371f611541c3a9fb62f7989
Author: mcol <mcol@posteo.net>
Date: 2020-11-08 17:23:39 +0000
Committer: mcol <mcol@posteo.net>
Committed: 2020-11-08 17:23:39 +0000

add unmap_view, map_view, and remove on_unmap listener

src/types.h Modified

@@ -57,7 +57,6 @@
     struct server *server;
     struct wlr_xdg_surface *surface;
     struct wl_listener map_listener;
-    struct wl_listener unmap_listener;
     struct wl_listener destroy_listener;
     struct wl_listener request_move_listener;
     struct wl_listener request_resize_listener;

src/shell.h Modified

@@ -3,9 +3,10 @@
 
 #include "types.h"
 
+void unmap_view(struct view *view);
+void map_view(struct view *view);
 void focus_view(struct view *view, struct wlr_surface *surface);
 void on_map(struct wl_listener *listener, void *data);
-void on_unmap(struct wl_listener *listener, void *data);
 void on_surface_destroy(struct wl_listener *listener, void *data);
 void process_move_resize(struct view *view, enum cursor_mode mode, uint32_t edges);
 void on_request_move(struct wl_listener *listener, void *data);

src/shell.c Modified

@@ -5,6 +5,16 @@
 #include "types.h"
 
 
+void unmap_view(struct view *view) {
+    wl_signal_emit(&view->surface->events.unmap, view);
+}
+
+
+void map_view(struct view *view) {
+    wl_signal_emit(&view->surface->events.map, view);
+}
+
+
 void focus_view(struct view *view, struct wlr_surface *surface) {
     if (view == NULL) {
 	return;
@@ -41,12 +51,6 @@
 }
 
 
-void on_unmap(struct wl_listener *listener, void *data) {
-    struct view *view = wl_container_of(listener, view, unmap_listener);
-    view->is_mapped = false;
-}
-
-
 void on_surface_destroy(struct wl_listener *listener, void *data) {
     struct view *view = wl_container_of(listener, view, destroy_listener);
     wl_list_remove(&view->link);
@@ -112,8 +116,6 @@
 
     view->map_listener.notify = on_map;
     wl_signal_add(&surface->events.map, &view->map_listener);
-    view->unmap_listener.notify = on_unmap;
-    wl_signal_add(&surface->events.unmap, &view->unmap_listener);
     view->destroy_listener.notify = on_surface_destroy;
     wl_signal_add(&surface->events.destroy, &view->destroy_listener);