mirror of
https://github.com/tiyn/dwl-touch.git
synced 2025-11-13 05:49:44 +01:00
Merge branch 'xwayland-handle-minimize'
This commit is contained in:
19
dwl.c
19
dwl.c
@@ -136,6 +136,7 @@ struct Client {
|
||||
#ifdef XWAYLAND
|
||||
struct wl_listener activate;
|
||||
struct wl_listener associate;
|
||||
struct wl_listener minimize;
|
||||
struct wl_listener dissociate;
|
||||
struct wl_listener configure;
|
||||
struct wl_listener set_hints;
|
||||
@@ -505,6 +506,7 @@ static void associatex11(struct wl_listener *listener, void *data);
|
||||
static void configurex11(struct wl_listener *listener, void *data);
|
||||
static void createnotifyx11(struct wl_listener *listener, void *data);
|
||||
static void dissociatex11(struct wl_listener *listener, void *data);
|
||||
static void minimizenotify(struct wl_listener *listener, void *data);
|
||||
static void sethints(struct wl_listener *listener, void *data);
|
||||
static void xwaylandready(struct wl_listener *listener, void *data);
|
||||
static struct wl_listener new_xwayland_surface = {.notify = createnotifyx11};
|
||||
@@ -1512,6 +1514,7 @@ destroynotify(struct wl_listener *listener, void *data)
|
||||
wl_list_remove(&c->activate.link);
|
||||
wl_list_remove(&c->associate.link);
|
||||
wl_list_remove(&c->configure.link);
|
||||
wl_list_remove(&c->minimize.link);
|
||||
wl_list_remove(&c->dissociate.link);
|
||||
wl_list_remove(&c->set_hints.link);
|
||||
} else
|
||||
@@ -3753,6 +3756,7 @@ createnotifyx11(struct wl_listener *listener, void *data)
|
||||
LISTEN(&xsurface->events.destroy, &c->destroy, destroynotify);
|
||||
LISTEN(&xsurface->events.dissociate, &c->dissociate, dissociatex11);
|
||||
LISTEN(&xsurface->events.request_activate, &c->activate, activatex11);
|
||||
LISTEN(&xsurface->events.request_minimize, &c->minimize, minimizenotify);
|
||||
LISTEN(&xsurface->events.request_configure, &c->configure, configurex11);
|
||||
LISTEN(&xsurface->events.request_fullscreen, &c->fullscreen, fullscreennotify);
|
||||
LISTEN(&xsurface->events.set_hints, &c->set_hints, sethints);
|
||||
@@ -3767,6 +3771,21 @@ dissociatex11(struct wl_listener *listener, void *data)
|
||||
wl_list_remove(&c->unmap.link);
|
||||
}
|
||||
|
||||
void
|
||||
minimizenotify(struct wl_listener *listener, void *data)
|
||||
{
|
||||
Client *c = wl_container_of(listener, c, minimize);
|
||||
struct wlr_xwayland_surface *xsurface = c->surface.xwayland;
|
||||
struct wlr_xwayland_minimize_event *e = data;
|
||||
int focused;
|
||||
|
||||
if (xsurface->surface == NULL || !xsurface->surface->mapped)
|
||||
return;
|
||||
|
||||
focused = seat->keyboard_state.focused_surface == xsurface->surface;
|
||||
wlr_xwayland_surface_set_minimized(xsurface, !focused && e->minimize);
|
||||
}
|
||||
|
||||
void
|
||||
sethints(struct wl_listener *listener, void *data)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user