sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

dwm-destroyfocus-20210329-61bb8b2.diff (978B)


      1 diff --git dwm.c dwm.c
      2 index 5e4d494..bdb1446 100644
      3 --- dwm.c
      4 +++ dwm.c
      5 @@ -170,6 +170,7 @@ static void focusin(XEvent *e);
      6  static void focusmon(const Arg *arg);
      7  static void focusstack(const Arg *arg);
      8  static Atom getatomprop(Client *c, Atom prop);
      9 +static Client *getclientundermouse(void);
     10  static int getrootptr(int *x, int *y);
     11  static long getstate(Window w);
     12  static int gettextprop(Window w, Atom atom, char *text, unsigned int size);
     13 @@ -872,6 +873,20 @@ getatomprop(Client *c, Atom prop)
     14  	return atom;
     15  }
     16  
     17 +Client *
     18 +getclientundermouse(void)
     19 +{
     20 +	int ret, di;
     21 +	unsigned int dui;
     22 +	Window child, dummy;
     23 +
     24 +	ret = XQueryPointer(dpy, root, &dummy, &child, &di, &di, &di, &di, &dui);
     25 +	if (!ret)
     26 +		return NULL;
     27 +
     28 +	return wintoclient(child);
     29 +}
     30 +
     31  int
     32  getrootptr(int *x, int *y)
     33  {
     34 @@ -1782,7 +1797,7 @@ unmanage(Client *c, int destroyed)
     35  		XUngrabServer(dpy);
     36  	}
     37  	free(c);
     38 -	focus(NULL);
     39 +	focus(getclientundermouse());
     40  	updateclientlist();
     41  	arrange(m);
     42  }