shod

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 5a48a8a830b1f2086901ecf8056f6525525b5d90
parent 428435efb07d346de93bb66266d82355e6b5e9fb
Author: Lucas de Sena <lucas@seninha.org>
Date:   Sun, 15 Jan 2023 22:55:29 -0300

fix #31

Diffstat:
Mxevents.c | 8++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/xevents.c b/xevents.c @@ -344,7 +344,7 @@ getmwmhints(Window win) /* get window info based on its type */ static int -getwintype(Window win, Window *leader, struct Tab **tab, int *state, XRectangle *rect) +getwintype(Window *win_ret, Window *leader, struct Tab **tab, int *state, XRectangle *rect) { /* rules for identifying windows */ enum { CLASS = 0, INSTANCE = 1, ROLE = 2 }; @@ -354,6 +354,7 @@ getwintype(Window win, Window *leader, struct Tab **tab, int *state, XRectangle XClassHint classh; XWMHints *wmhints; XrmValue xval; + Window win; Atom prop; size_t i; long n; @@ -363,6 +364,7 @@ getwintype(Window win, Window *leader, struct Tab **tab, int *state, XRectangle char role[NAMEMAXLEN]; pos = 0; + win = *win_ret; *tab = NULL; *state = 0; type = TYPE_UNKNOWN; @@ -466,6 +468,8 @@ getwintype(Window win, Window *leader, struct Tab **tab, int *state, XRectangle mwmhints = getmwmhints(win); ismenu = mwmhints != NULL && (mwmhints->flags & MWM_HINTS_STATUS) && (mwmhints->status & MWM_TEAROFF_WINDOW); isdockapp = (wmhints && (wmhints->flags & (IconWindowHint | StateHint)) && wmhints->initial_state == WithdrawnState); + if (isdockapp && wmhints->icon_window != None) + *win_ret = wmhints->icon_window; *leader = getwinprop(win, atoms[WM_CLIENT_LEADER]); if (*leader == None) *leader = (wmhints != NULL && (wmhints->flags & WindowGroupHint)) ? wmhints->window_group : None; @@ -682,7 +686,7 @@ manage(Window win, XRectangle rect, int ignoreunmap) if (getmanaged(win) != NULL) return; - type = getwintype(win, &leader, &tab, &state, &rect); + type = getwintype(&win, &leader, &tab, &state, &rect); if (type == TYPE_DESKTOP) { /* we do not handle desktop windows */ XLowerWindow(dpy, win);