xiwm

simple window manager
git clone https://git.ce9e.org/xiwm.git

commit
d35009637fe3f02ffcd9c40a9337664d3a03fc15
parent
aa67219b86e71a4745d3e6de5f865941d95680cd
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2019-10-13 08:55
refactor setdesktop

Diffstat

M xiwm.c 45 +++++++++++++++++----------------------------

1 files changed, 17 insertions, 28 deletions


diff --git a/xiwm.c b/xiwm.c

@@ -278,13 +278,6 @@ xsetclientdesktop(Client *c)
  278   278 }
  279   279 
  280   280 void
  281    -1 xsetdesktop(void)
  282    -1 {
  283    -1 	XChangeProperty(dpy, root, netatom[NetCurrentDesktop], XA_CARDINAL, 32,
  284    -1 		PropModeReplace, (unsigned char *) &desktop, 1);
  285    -1 }
  286    -1 
  287    -1 void
  288   281 resize(Client *c, int x, int y, int w, int h, int bw)
  289   282 {
  290   283 	XWindowChanges wc;
@@ -379,6 +372,17 @@ setfullscreen(Client *c, Bool fullscreen)
  379   372 	}
  380   373 }
  381   374 
   -1   375 void
   -1   376 setdesktop(unsigned int i)
   -1   377 {
   -1   378 	if (i == desktop || i > desktops)
   -1   379 		return;
   -1   380 	desktop = i;
   -1   381 	XChangeProperty(dpy, root, netatom[NetCurrentDesktop], XA_CARDINAL, 32,
   -1   382 		PropModeReplace, (unsigned char *) &desktop, 1);
   -1   383 	layout();
   -1   384 }
   -1   385 
  382   386 Atom
  383   387 getatomprop(Client *c, Atom prop)
  384   388 {
@@ -594,12 +598,8 @@ clientmessage(XEvent *e)
  594   598 			setfullscreen(c, (cme->data.l[0] == 1 || (cme->data.l[0] == 2 && !c->isfullscreen)));
  595   599 	} else if (cme->message_type == netatom[NetActiveWindow]) {
  596   600 		if (c != sel) {
  597    -1 			if (c->desktop != desktop) {
  598    -1 				desktop = c->desktop;
  599    -1 				xsetdesktop();
  600    -1 			}
   -1   601 			setdesktop(c->desktop);
  601   602 			focus(c);
  602    -1 			layout();
  603   603 		}
  604   604 	}
  605   605 }
@@ -658,12 +658,8 @@ tag(const Arg *arg)
  658   658 		return;
  659   659 	sel->desktop = arg->ui;
  660   660 	xsetclientdesktop(sel);
  661    -1 	if (desktop != arg->ui) {
  662    -1 		desktop = arg->ui;
  663    -1 		xsetdesktop();
  664    -1 	}
   -1   661 	setdesktop(arg->ui);
  665   662 	focus(NULL);
  666    -1 	layout();
  667   663 }
  668   664 
  669   665 void
@@ -676,21 +672,15 @@ tagrel(const Arg *arg)
  676   672 void
  677   673 view(const Arg *arg)
  678   674 {
  679    -1 	if (arg->ui == desktop)
  680    -1 		return;
  681    -1 	if (arg->ui >= desktops)
  682    -1 		return;
  683    -1 	desktop = arg->ui;
  684    -1 	xsetdesktop();
   -1   675 	setdesktop(arg->ui);
  685   676 	focus(NULL);
  686    -1 	layout();
  687   677 }
  688   678 
  689   679 void
  690   680 viewrel(const Arg *arg)
  691   681 {
  692    -1 	Arg a = {.ui = desktop + arg->i};
  693    -1 	view(&a);
   -1   682 	setdesktop(desktop + arg->i);
   -1   683 	focus(NULL);
  694   684 }
  695   685 
  696   686 void
@@ -873,7 +863,6 @@ setup(void)
  873   863 	sh = DisplayHeight(dpy, screen);
  874   864 	root = RootWindow(dpy, screen);
  875   865 	bh = 0;
  876    -1 	desktop = inidesktop;
  877   866 
  878   867 	/* init atoms */
  879   868 	utf8string = XInternAtom(dpy, "UTF8_STRING", False);
@@ -910,7 +899,7 @@ setup(void)
  910   899 	/* select events */
  911   900 	XSelectInput(dpy, root, ROOTMASK);
  912   901 	grabkeys();
  913    -1 	xsetdesktop();
   -1   902 	setdesktop(inidesktop);
  914   903 	focus(NULL);
  915   904 }
  916   905