anim.hh:27:struct ARect: Rect // [A]nimation [Rect]angle - a piece of an animation
anim.hh:36:struct PRect: Rect // positioning rectangle - for from/to
boxes.hh:33:	// ??? positive - stretchability
boxes.hh:34:	// ??? negative - shrinkability
menus.hh:74:	int hotoff; // hot key offset; 0 - no hot key  1 - first character (offsets have 1 added)
anim.cc:89:		start.set (-5, disp.ht - 5, 10, 10);
anim.cc:92:		end.set (disp.wd - 5, -5, 10, 10);
anim.cc:113:	rd = rt - rf;
anim.cc:114:	gd = gt - gf;
anim.cc:115:	bd = bt - bf;
anim.cc:129:			 rf + (int) (rd * (((double) i) / ((double) steps - 1))),
anim.cc:130:			 gf + (int) (gd * (((double) i) / ((double) steps - 1))),
anim.cc:131:			 bf + (int) (bd * (((double) i) / ((double) steps - 1))));
anim.cc:213:	x += (wd - wwd)/2;
anim.cc:214:	y += (ht - hht)/2;
anim.cc:231:			wd - as.lwd, ht - as.lwd);
anim.cc:238:			wd - as.lwd, ht - as.lwd);
anim.cc:257:	while (timer->t);
anim.cc:264:	// this is one-way -> thermodynamics? AB != BA, mean to2from !=
anim.cc:277:	n->next = first;
anim.cc:286:	for (i=first; i->next; i=i->next);
anim.cc:294:		for (j=first; j->next != i; j=j->next);
anim.cc:297:		j->next = NULL;
anim.cc:299:	nrects--;
anim.cc:305:	d.x = to.x - from.x;
anim.cc:306:	d.y = to.y - from.y;
anim.cc:307:	d.wd = to.wd - from.wd;
anim.cc:308:	d.ht = to.ht - from.ht;
anim.cc:320:		t = ((double) ai/(as.steps-1));
anim.cc:354:#define adfnc(t) ((fnc(2.0*t-1.0)+1.0)/2.0)
anim.cc:362:	gci = afn (1-t, as.steps-1);
anim.cc:363:	r.x = to.x - afn (1-t, d.x);
anim.cc:364:	r.y = to.y - afn (1-t, d.y);
anim.cc:365:	r.wd = to.wd - afn (1-t, d.wd);
anim.cc:366:	r.ht = to.ht - afn (1-t, d.ht);
anim.cc:373:	gci = afn (t, as.steps-1);
anim.cc:383:	gci = as.steps - 1;
anim.cc:399:		gci = lfn (t, as.steps-1);
anim.cc:406:		gci = afn (1-t, as.steps-1);
anim.cc:407:		r.x = to.x - afn (1-t, d.x);
anim.cc:408:		r.y = to.y - afn (1-t, d.y);
anim.cc:409:		r.wd = to.wd - afn (1-t, d.wd);
anim.cc:410:		r.ht = to.ht - afn (1-t, d.ht);
anim.cc:413:		gci = afn (t, as.steps-1);
anim.cc:420:		gci = as.steps - 1;
bindings.cc:30:	lps->skip_space ();
bindings.cc:31:	while (!lps->space() && lps->get_char (c)) {
bindings.cc:42:		else lps->error ("bad modifiers: ");
bindings.cc:52:	lps->skip_space ();
bindings.cc:53:	while (!lps->space() && lps->get_char (c)) {
bindings.cc:65:		lps->error ("bad context");
bindings.cc:70:	lps->num (button);
bindings.cc:73:	lps->cmd (cmd);
bindings.cc:94:	if ((button == event->x.xbutton.button || button == 0) &&
bindings.cc:95:			(context & event->context) && 
bindings.cc:96:			(mods == (event->x.xbutton.state & mods_used) || mods == AnyModifier))
bindings.cc:98:		cmd->exec ();
bindings.cc:99:		event->handled = 1;
bindings.cc:109:	lps->skip_space ();
bindings.cc:110:	while (!lps->space() && lps->get_char (c)) {
bindings.cc:121:		lps->error ("bad context");
bindings.cc:127:	lps->token (key_tok);
bindings.cc:134:		if (keycode == (KeyCode) 0) lps->error ("bad keysym or keycode: ");
bindings.cc:140:	lps->cmd (cmd);
bindings.cc:161:	if (keycode == event->x.xkey.keycode
bindings.cc:162:		&& (mods == (event->x.xkey.state & mods_used) || mods == AnyModifier)
bindings.cc:163:		&& context & event->context	)
bindings.cc:165:		cmd->exec ();
bindings.cc:166:		event->handled = 1;
bindings.cc:178:	n->next = first;
bindings.cc:187:		first = first->next;
bindings.cc:196:	switch (event->x.type)
bindings.cc:199:		for (i = first; i && !event->handled; i = i->next) i->handle_KeyPress ();
bindings.cc:202:		for (i = first; i && !event->handled; i = i->next) i->handle_ButtonPress ();
bindings.cc:212:	for (i = first; i; i = i->next) i->grab (w);
bindings.cc:235:	t->next = first;
bindings.cc:245:	for (aa = first; aa; aa = aa->next)
bindings.cc:246:		aa->init ();
bindings.cc:252:	for (aa = first; aa; aa = aa->next)
bindings.cc:253:		if (aa->w == w)
bindings.cc:270:	switch (event->x.type)
bindings.cc:273:		if (find (i, event->x.xcrossing.window) && i->type==AA_ENTER) i->cmd->exec ();
bindings.cc:276:		if (find (i, event->x.xany.window) && i->type==AA_CLICK) i->cmd->exec ();
bindings.cc:279:	event->handled=1;
bindings.cc:287:	lps->geom (x, y, wd, ht);
bindings.cc:288:	lps->cmd (cmd);
boxes.cc:16:// ia - objects express their desire concerning size/pos - from down
boxes.cc:19:// fa - up to down - parents sets up their childrens
boxes.cc:36:	x = r->x;
boxes.cc:37:	y = r->y;
boxes.cc:38:	wd = r->wd;
boxes.cc:39:	ht = r->ht;
boxes.cc:87:	if (x+wd-1 < r.x || r.x+r.wd-1 < x || y+ht-1 < r.y || r.y+r.ht-1 < y)
boxes.cc:96:	if (x+wd-1 < rx || rx+rwd-1 < x || y+ht-1 < ry || ry+rht-1 < y)
boxes.cc:115:	if (xx<x) dx=xx-x; else if (xx>x+wd) dx=xx-(x+wd); else dx=0;
boxes.cc:116:	if (yy<y) dy=yy-y; else if (yy>y+ht) dy=yy-(y+ht); else dy=0;
boxes.cc:167:	x = t->x;
boxes.cc:168:	y = t->y;
boxes.cc:169:	wd = t->wd;
boxes.cc:170:	ht = t->ht;
boxes.cc:182:		//    return parent->list_next (); // will list only ordinary boxes
boxes.cc:193:// have special class - EndBox - to close the list (with the "GroupBox
boxes.cc:197:// pop-stack of them (to save parents))
boxes.cc:231:	hbox->ia ();
boxes.cc:237:	hbox->fa ();
boxes.cc:238:	wr.wd = hbox->wd; wr.ht = hbox->ht;
boxes.cc:245:	// be inherited from another more fundamental class) - if this is
boxes.cc:247:	// class-tree), the compiler would generate an error) - which
boxes.cc:248:	// function is to be called can be determined at the compile-time -
boxes.cc:259:	if (event->x.xany.window == w) hbox->handle_event ();
boxes.cc:278:	hbox->draw ();
boxes.cc:343:	for (Box *i=first; i; i=i->next) i->ia ();
boxes.cc:344:	//  ddf--;
boxes.cc:350:	for (Box *i=first; i; i=i->next) i->fa ();
boxes.cc:374:		first = first->next;
boxes.cc:389:for (i = dwin; i; i->list_next ())
boxes.cc:390:	if (i->wd < 0 || i->ht < 0)
boxes.cc:421:		last->next = t;
boxes.cc:432:		t->next = first;
boxes.cc:450:	for (i=first; i; i = i->next) i->draw ();
boxes.cc:458:	switch (event->x.type)
boxes.cc:461:		if (overlap (event->x.xexpose.x, event->x.xexpose.y, event->x.xexpose.width, event->x.xexpose.height))
boxes.cc:462:			for (i=first; i; i=i->next) i->handle_event ();
boxes.cc:466:		if (contains (event->x.xbutton.x, event->x.xbutton.y))
boxes.cc:467:			for (i=first; i; i=i->next) i->handle_event ();
boxes.cc:470:		for (i=first; i && !event->handled; i=i->next)
boxes.cc:471:			i->handle_event ();
boxes.cc:480:// VBox -- stacks owned boxes below each other, grow them vertically,
boxes.cc:483:// HBox -- stacks owned boxes next to each other, grow horizontally
boxes.cc:494:	hb->add (new VRule (bw, gc), vb, new VRule (bw, gc), NULL);
boxes.cc:495:	hb->ys = 10;
boxes.cc:510:	for (i = first; i; i = i->next) {
boxes.cc:511:		ht += i->ht;
boxes.cc:512:		if (i->wd > wd) wd = i->wd;
boxes.cc:513:		ys += i->ys;
boxes.cc:514:		//    if (i->xs > xs) xs = i->xs;
boxes.cc:523:	int dht = ht - baseht; // 'distributed' height
boxes.cc:527:	for (i = first; i; i = i->next) {
boxes.cc:528:		i->x = x;
boxes.cc:529:		i->y = yy;
boxes.cc:532:			aht = (int) ((((double) i->ys)/((double) ys))*dht);
boxes.cc:533:			i->ht += aht;
boxes.cc:534:			dht -= aht;
boxes.cc:535:			ys -= i->ys;
boxes.cc:537:		yy += i->ht;
boxes.cc:538:		i->wd = wd;
boxes.cc:553:	vb->add (new HRule (bw, gc), hb, new HRule (bw, gc), NULL);
boxes.cc:554:	vb->xs = 10;
boxes.cc:574:	for (i = first; i; i = i->next) {
boxes.cc:575:		wd += i->wd;
boxes.cc:577:		if (i->ht > ht)
boxes.cc:578:			ht = i->ht;
boxes.cc:580:		xs += i->xs;
boxes.cc:581:		//    if (i->ys > ys) ys = i->ys;
boxes.cc:591:	int dwd = wd - basewd;
boxes.cc:596:	for (i = first; i; i = i->next) {
boxes.cc:597:		i->x = xx;
boxes.cc:598:		i->y = y;
boxes.cc:599:		if (i->xs) {
boxes.cc:601:			//      printf ("i.xs %d\t", i->xs);
boxes.cc:603:			awd = (int) ((((double) i->xs)/((double) xs))*dwd);
boxes.cc:604:			i->wd += awd;
boxes.cc:605:			xs -= i->xs;
boxes.cc:606:			dwd -= awd;
boxes.cc:609:		xx += i->wd;
boxes.cc:610:		i->ht = ht;
boxes.cc:628:	int dwd = wd - basewd;
boxes.cc:633:	for (i = first; i; i = i->next) {
boxes.cc:634:		i->x = xx;
boxes.cc:635:		i->y = y + (ht - i->ht)/2;
boxes.cc:640:			awd = (int) ((((double) i->xs)/((double) xs))*dwd);
boxes.cc:641:			i->wd += awd;
boxes.cc:642:			xs -= i->xs;
boxes.cc:643:			dwd -= awd;
boxes.cc:646:		xx += i->wd;
boxes.cc:676:	switch (event->x.type)
boxes.cc:679:		if (overlap (event->x.xexpose.x, event->x.xexpose.y, event->x.xexpose.width, event->x.xexpose.height))
boxes.cc:724:	switch (event->x.type)
boxes.cc:727:		if (overlap (event->x.xexpose.x, event->x.xexpose.y, event->x.xexpose.width, event->x.xexpose.height))
boxes.cc:736:		if (contains (event->x.xbutton.x, event->x.xbutton.y)) {
boxes.cc:750:		if (contains (event->x.xbutton.x, event->x.xbutton.y)) {
boxes.cc:753:			grab_setup (event->x.xany.window);
boxes.cc:759:				event->mask (ButtonPressMask | ButtonReleaseMask | PointerMotionMask | EnterWindowMask);
boxes.cc:766:			event->handled = 1;
boxes.cc:777:	switch (event->x.type)
boxes.cc:781:		if (event->x.xany.window == grab_win) {
boxes.cc:782:			if (contains (event->x.xbutton.x, event->x.xbutton.y)) {
boxes.cc:795:		if (contains (event->x.xbutton.x, event->x.xbutton.y))
boxes.cc:800:				event->handled = 1;
boxes.cc:811:	wd = pm_free->wd;
boxes.cc:812:	ht = pm_free->ht;
boxes.cc:821:	case B_FREE:	pm_free->gx_copy_mask (boxw, x, y); break;
boxes.cc:822:	case B_HOVER:	pm_hover->gx_copy_mask (boxw, x, y); break;
boxes.cc:823:	case B_DOWN:	pm_down->gx_copy_mask (boxw, x, y); break;
boxes.cc:852:	if (event->x.type == Expose)
boxes.cc:855:		if (overlap (event->x.xexpose.x, event->x.xexpose.y, event->x.xexpose.width, event->x.xexpose.height))
boxes.cc:866:	while (nc && XTextWidth (swm_font.font, *text, nc) > wd) nc--;
boxes.cc:869:				 //x+(wd-XTextWidth(font->font, *text, nc))/2, // center
boxes.cc:870:				 x, y + swm_font.y + (ht - swm_font.ht)/2, *text, nc);
commands.cc:32:		last->next = t;
commands.cc:44:		 i = first->next;
commands.cc:63:		// event handler, and event handler calls cq.exec - so in the
commands.cc:64:		// time when we call i->exec, we must have set first so that it
commands.cc:65:		// points to i->next); new value for first must be set before
commands.cc:71:		first = first->next;
commands.cc:74:		i->exec ();
commands.cc:150:	case CW_CLOSE:		sw->close (); break;
commands.cc:151:	case CW_DESTROY:	sw->destroy (); break;
commands.cc:153:		sw->switch_to_desk (); // if the win was selected on pager
commands.cc:154:		sw->do_move ();
commands.cc:156:	case CW_RAISE_MOVE: sw->raise (); sw->do_move (); break;
commands.cc:158:		//    sw->switch_to_desk (); // if the win was selected on pager
commands.cc:159:		sw->do_resize ();
commands.cc:161:	case CW_CENTER:		sw->center (); sw->update (); break;
commands.cc:162:	case CW_MAX:		sw->max_toggle (); break;
commands.cc:163:	case CW_HIDE:		sw->hide (); break;
commands.cc:164:	case CW_STICK:		sw->stick_toggle (); break;
commands.cc:165:	case CW_RAISE:		sw->raise (); break;
commands.cc:166:	case CW_LOWER:		sw->lower (); break;
commands.cc:167:	case CW_FOCUS:		sw->focus (); break;
commands.cc:168:	case CW_SWITCH_TO:	sw->switch_to (); sw->raise (); break;
commands.cc:199:	else logw.pr ("WinCmd (cmd=%d) -> %s", cmd, sw->name);
commands.cc:210:			event->next ();
commands.cc:211:			//      event->handled = 1;
commands.cc:213:			switch (event->x.type)
commands.cc:216:				event->kbd_shortcuts ();
commands.cc:217:				if (event->keysym == XK_Return || event->keysym == XK_space)
commands.cc:223:				if (wl.find_pager_view (sw, event->x.xcrossing.window)
commands.cc:224:					|| wl.findw (sw, event->x.xcrossing.window)
commands.cc:225:					|| wl.find_dwin (sw, event->x.xcrossing.window))
commands.cc:226:					logw.pr ("%s", sw->name);
commands.cc:231:				event->handled = 0;
commands.cc:235:			if (!(event->handled))
commands.cc:236:				event->handle ();
commands.cc:242:			logw.pr ("...OK, got `%s'", sw->name);
commands.cc:264:	lps->stripcpy (cmd);
commands.cc:275:	lps->stripcpy (cmd);
commands.cc:288:	if (cmd[strlen(cmd)-1] != '&') {
commands.cc:303:		execl ("/bin/sh", "/bin/sh", "-c", cmd, NULL);
commands.cc:315:	lps->stripcpy2 (name);
commands.cc:319:		lps->error ("popup \"%s\" not defined (yet)\n", name);
commands.cc:327:	if (menu)	menu->exec ();
commands.cc:334:	lps->num (dx); lps->num (dy);
commands.cc:349:	lps->num (dx);
commands.cc:350:	lps->num (dy);
commands.cc:362:	// panel->raise ()
config.cc:55:	name = new char [strlen (rname) + tc*(hl-1) + 1];
config.cc:56:	// hl-1 : every tilda (one char) will be replaced by hl chars,
config.cc:57:	// additional space needed is hl-1 chars
config.cc:88:	fgetpos (fid, &t->fpos);
config.cc:90:	t->next = first_fpos;
config.cc:100:	fsetpos (fid, &first_fpos->fpos);
config.cc:102:	first_fpos = first_fpos->next;
config.cc:155:			// stack of files; here push (line_num etc.); if getline == -1,
config.cc:165:			cps->parse (fp);
config.cc:244:	while (getline (&line, &line_size, fid) != -1)
events.cc:98:		logw.pr ("map_it %s", sw->name);
events.cc:100:		sw->show ();
events.cc:102:		//    if (sw->flags & DoesWmTakeFocus)
events.cc:103:		//      send_message (_XA_WM_TAKE_FOCUS, event->x.xmaprequest.time);
events.cc:120:			logw.pr ("map %s", swindow->name);
events.cc:121:			if (!swindow->starts_hidden ()) swindow->focus ();
events.cc:128:		// SWindow::SWindow (for example when placing window in non-opaque
events.cc:129:		// mode -- see Outline::update -- but it is OK, since it takes
events.cc:141:	if (sw) sw->dwin->handle_event ();
events.cc:172:			if (wl.findw (sw, x.xany.window)) sw->handle_PropertyNotify();
events.cc:176:				XGetAtomName (dpy, event->x.xproperty.atom));
events.cc:194:	// here's a real hack - some systems have two keys with the same keysym and different keycodes.
events.cc:246:		//    logw.pr ("cmsg %s %s\n", sw->name, XGetAtomName (dpy, x.xclient.message_type));
events.cc:251:				sw->hide ();
events.cc:268:	//  XSync (dpy, 0); // wait for DestroyNotifies -- i had problems with
events.cc:276:		//    logw.pr ("Unmap %s", sw->name);
events.cc:278:			// logw.pr ("Normal->Withdrawn! %s", sw->name);
events.cc:279:			// synthetic UnmapNotify means transition Normal->Withdrawn
events.cc:286:			sw->withdraw (); wl.rm (sw);
events.cc:288:		else if (sw->unmap_events) {
events.cc:291:			sw->unmap_events--;
events.cc:293:		else if (sw->map_state == IconicState  &&  x.xunmap.send_event == FALSE) {
events.cc:294:			//      logw.pr ("%s", sw->name);
events.cc:298:			//      logw.pr ("Normal->Withdrawn! %s", sw->name);
events.cc:303:			// should trigger the transition Normal->Withdrawn also on
events.cc:306:			sw->withdraw (); wl.rm (sw);
events.cc:323:			spager->lower ();
events.cc:325:		sw->focus ();
events.cc:327:		logw.dbg("enternotify %s", event->sw->name);
events.cc:332:		logw.dbg ("enternotify %s (pager)", sw->name);
events.cc:334:	//	sw->focus ();
events.cc:367:		sw->handle_ConfigureRequest ();
events.cc:409:		dy = -step;
events.cc:421:		dx = -step;
lineparser.cc:92:	// list - characters to skip
lineparser.cc:142:		x = disp.wd/frac - wd/2;
lineparser.cc:146:		if (inc ('-')) a = 1;
lineparser.cc:149:		if (a) x = disp.wd - wd - x;
lineparser.cc:157:		y = disp.ht/frac - ht/2;
lineparser.cc:161:		if (inc ('-')) a = 1;
lineparser.cc:164:		if (a) y = disp.ht - ht - y;
lineparser.cc:217:		p -= len;
lineparser.cc:241:	int len = p - beg;
lineparser.cc:258:	while (len>0 && isspace(p[len-1]))
lineparser.cc:259:		len--;
lineparser.cc:278:	len = p - beg;
log.cc:81:	gcv.font = font.font->fid;
log.cc:101:	pr ("-- SWM started %s", date);
log.cc:107:#define cn event->x.xconfigure
log.cc:128:	for (n = 0, t = first; t; t = t->next, n++) {
log.cc:135:		//    XDrawString (dpy, root, gc, hindent, font.y + font.ht*n, t->s, strlen (t->s));
log.cc:136:		XDrawString (dpy, w, gc, hindent, font.y + font.ht*n, t->s, strlen (t->s));
log.cc:145:	t->next = NULL;
log.cc:151:		last->next = t;
log.cc:163:		lines--;
log.cc:167:		first = first->next;
log.cc:184:	strftime (date, 100, " %H-%M-%S", localtime (&ct));
log.cc:233:		first = first->next;
log.cc:253:		first = first->next;
main.cc:1://  SWM - "Superior, small, symphatetic, smart & state of the art Window Manager"
main.cc:83:		if (strncasecmp (argv[i], "-v", 2) == 0 || strncasecmp (argv[i], "--version", 9) == 0) {
main.cc:87:		else if (strncasecmp (argv[i], "-h", 2) == 0 || strncasecmp (argv[i], "--help", 6) == 0) {
main.cc:91:		else if (strncasecmp (argv[i], "-d", 2) == 0) {
main.cc:95:		else if (strncasecmp (argv[i], "-f", 2) == 0) {
main.cc:99:		else if (strncasecmp (argv[i], "--unlock", 7) == 0) {
main.cc:117:	if (fcntl (i, F_SETFD, 1) == -1)
main.cc:119:		fprintf (stderr, "swm fatal: close-on-exec failed\n");
main.cc:136:	// default config - for other defaults see constructors of WinStyle, AnimStyle etc.
main.cc:145:	wl.menu->name = (char *) "winlist";
main.cc:149:	wl.hidden_menu->name = (char *) "hiddenlist";
main.cc:157:	if (!config_file || !cps->parse (config_file)) {
main.cc:159:		if (!cps->parse ((char *) HOME_CONFIG, 1))
main.cc:160:			if (!cps->parse ((char *) SYS_CONFIG)) {
main.cc:194:	if (root_pm->load (root_xf))
main.cc:195:		root_pm->set (root);
main.cc:229:		if (!event->check_mask (SubstructureRedirectMask | SubstructureNotifyMask
main.cc:237:		event->next ();
main.cc:238:		event->handle ();
main.cc:308:		fprintf (stderr, "usage: swm [-d display_name] [-f config_file] [--version] [-v] [--help] [-h]\n\n");
main.cc:375:	if (ev->error_code == BadWindow) return 0;
main.cc:378:	fprintf (stderr, "request %d, error %d\n", ev->request_code, ev->error_code);
main.cc:379:	fprintf (stderr, "event type: %d\n", ev->type);
menus.cc:56:	gcv.font = font.font->fid;
menus.cc:72:	gcv.font = titlefont.font->fid;
menus.cc:95:	if (strncasecmp (tmp->name, "winops", 6) == 0)
menus.cc:98:	if (strncasecmp (tmp->name, "pagerwinops", 6) == 0)
menus.cc:101:	tmp->next = first;
menus.cc:111:		first = first->next;
menus.cc:119:	for (t = first; t; t = t->next)
menus.cc:120:		if (strcasecmp (t->name, name) == 0)
menus.cc:127:	// set style on all windows - we have completed the parsing of
menus.cc:130:	for (i = first; i; i = i->next) i->set_style ();
menus.cc:177:	if (focus) focus->off ();
menus.cc:179:	if (focus) focus->on ();
menus.cc:201:		wr.x = (disp.wd - hbox->wd) / 2;
menus.cc:202:		wr.y = (disp.ht - hbox->ht) / 2;
menus.cc:206:		wr.x = parent->wr.x + parent->focus->x + parent->focus->wd;
menus.cc:207:		// 2*ms.bw - no border-overlap (but if it's two column, the
menus.cc:210:		wr.y = parent->wr.y + parent->focus->y;
menus.cc:218:		//    wr.x = ppos.rx - hbox->wd / 2;
menus.cc:219:		//    wr.y = ppos.ry - hbox->ht / 2;
menus.cc:227:	if (wr.x + hbox->wd > disp.wd) wr.x = disp.wd - hbox->wd;
menus.cc:229:	if (wr.y + hbox->ht > disp.ht) wr.y = disp.ht - hbox->ht;
menus.cc:237:		anim.from.set (parent->x + parent->focus->x + parent->focus->wd,
menus.cc:238:			 parent->y + parent->focus->y, 5, 5);
menus.cc:257:		// the first menu popped up - don't want the mouse to select the
menus.cc:261:		if (wr.contains (ppos.rx, ppos.ry)) event->window (w, EnterWindowMask);
menus.cc:278:		focus->off (); // this pops down eventual submenus (e.g. you
menus.cc:323:		// see also Menu::create () - at.event_mask
menus.cc:324:		event->mask (MENU_EVENT_MASK);
menus.cc:325:		last_up->handle_event ();
menus.cc:327:		if (!event->handled) 
menus.cc:329:			switch (event->x.type)
menus.cc:332:				//	if (event->x.xany.window == root)
menus.cc:334:				event->handled = 1;
menus.cc:341:					event->handled = 1;
menus.cc:348:				event->handled = 1; // otherwise winops won't work
menus.cc:349:				                    // (event->handle () would focus to none == root)
menus.cc:354:		if (!event->handled) event->handle ();
menus.cc:357:	while (last_up) last_up->pop_down (MPOP_ANIM); // pop down all the menus
menus.cc:365:	if (event->x.type == KeyPress)
menus.cc:371:		hbox->handle_event ();
menus.cc:373:	else if (event->x.xany.window == w)
menus.cc:378:		switch (event->x.type) {
menus.cc:380:			if (focus) focus->handle_event (); // faster (?)
menus.cc:387:		if (!event->handled) hbox->handle_event ();
menus.cc:390:		if (parent) parent->handle_event ();
menus.cc:396:	switch (event->keysym)
menus.cc:400:		if (last_up->focus) last_up->focus->action ();
menus.cc:401:		event->handled = 1;
menus.cc:414:		// events are processed - the closure of the menu's window
menus.cc:416:		// EnterNotify event immediately after it - and in the event
menus.cc:417:		// handler, the command queue is generated -> the focus is at
menus.cc:422:		event->handled = 1;
menus.cc:425:		last_up->go_up ();
menus.cc:426:		event->handled = 1;
menus.cc:429:		last_up->go_down ();
menus.cc:430:		event->handled = 1;
menus.cc:438:	if (focus) select (focus->it_prev);
menus.cc:439:	else if (it_last) select (it_last->it_next);
menus.cc:445:	if (focus) select (focus->it_next);
menus.cc:446:	else if (it_last) select (it_last->it_next);
menus.cc:466:		it->it_next = it->it_prev = it;
menus.cc:469:		it->it_next = it_last->it_next;
menus.cc:470:		it_last->it_next->it_prev = it;
menus.cc:472:		it_last->it_next = it;
menus.cc:473:		it->it_prev = it_last;
menus.cc:477:	vbox->aadd (it);
menus.cc:514:	while (*p == '\n' && p > line) p--;
menus.cc:515:	while (*p != '\n' && p > line) p--;
menus.cc:528:		m->vbox->aadd (new MTitle);
menus.cc:531:		m->it_add (new MPopup);
menus.cc:536:		if (match ("\""))	m->it_add (new MCommand);
menus.cc:537:		else if (match ("-")) m->vbox->aadd (new MHRule);
menus.cc:540:			m->hbox->aadd (new MVRule);
menus.cc:541:			m->hbox->aadd (m->vbox = new VBox);
menus.cc:567:			m->vbox->aadd (new MTitle ((char *) "<parse error>"));
menus.cc:587:	line = m->src;
menus.cc:625:			m->vbox->aadd (new MTitle ((char *) "<missing end of the command>"));
menus.cc:639:	int cl = ce - cb;
menus.cc:657:		if (getline (&line, &line_size, pipe_fp) == -1) return 0;
menus.cc:686:		m->vbox->aadd (new MTitle ((char *) "<cmd failed>"));
menus.cc:697:	hbox->aadd (vbox);
menus.cc:702:	hbox->add_border (ms.bw, ms.ruleGC);
menus.cc:728:	switch (event->x.type) {
menus.cc:730:		if (overlap (event->r)) draw ();
menus.cc:734:		if (contains (event->x.xcrossing.x, event->x.xcrossing.y)) {
menus.cc:735:			mm->select (this);
menus.cc:736:			event->handled = 1;
menus.cc:740:		if (contains (event->x.xmotion.x, event->x.xmotion.y)) {
menus.cc:741:			mm->select (this);
menus.cc:742:			event->handled = 1;
menus.cc:746:		if (contains (event->x.xbutton.x, event->x.xbutton.y)) {
menus.cc:748:			event->handled = 1;
menus.cc:757:	//  parent->focus = this;
menus.cc:785:	yoff = (ht - ms.font.ht) / 2 + ms.font.y;
menus.cc:810:				// just an escaped & -- move the rest
menus.cc:815:				hotoff = (1+(i - text));
menus.cc:844:		int x1 = xoff + XTextWidth (ms.font.font, text, hotoff - 1);
menus.cc:845:		int x2 = xoff + XTextWidth (ms.font.font, text, hotoff) - 1;
menus.cc:850:#define wait5 timer = add_timer (5); while (timer->t); rm_timer (timer);
menus.cc:857:	if (mm->focus == this)
menus.cc:859:		mm->select (NULL);
menus.cc:866:		mm->select (this);
menus.cc:869:		mm->select (NULL);
menus.cc:880:	switch (event->x.type)
menus.cc:883:		if (event->keysym == hotkey)
menus.cc:886:			mm->select (this);
menus.cc:889:			event->handled = 1;
menus.cc:901:	lps->reset_line ();
menus.cc:902:	lps->stripcpy2 (text);
menus.cc:905:	lps->cmd (cmd);
menus.cc:942:	lps->reset_line ();
menus.cc:943:	lps->stripcpy2 (text);
menus.cc:947:	lps->skip_space();
menus.cc:948:	if (lps->match("clickpopup")) flag |= MP_CLICKABLE;
menus.cc:951:	lps->stripcpy2 (menu_name);
menus.cc:954:		lps->error ("bad menu name");
menus.cc:973:	yoff = (ht - ms.font.ht) / 2 + ms.font.y;
menus.cc:998:	xx = x + wd - d - ms.font.ht / 2;
menus.cc:1000:	XDrawLine (dpy, boxw, gc, xx, yy, xx-dd, yy-d);
menus.cc:1001:	XDrawLine (dpy, boxw, gc, xx-dd, yy-d, xx-dd, yy+d);
menus.cc:1002:	XDrawLine (dpy, boxw, gc, xx-dd, yy+d, xx, yy);
menus.cc:1008://	printf ("%d ", event->x.type); fflush(stdout);
menus.cc:1009:	switch (event->x.type)
menus.cc:1012:		if (contains (event->x.xmotion.x, event->x.xmotion.y))
menus.cc:1014:			mm->select (this);
menus.cc:1016:			if (!(flag & MP_CLICKABLE) && event->x.xmotion.x > x + wd / 2)
menus.cc:1017:				if (!menu->in_use) menu->pop_up();
menus.cc:1018:			event->handled = 1;
menus.cc:1023:		if (event->keysym == hotkey)
menus.cc:1025:			mm->select (this);
menus.cc:1028:			event->handled = 1;
menus.cc:1041:	// pop a sub-menu
menus.cc:1042:	if (!menu->in_use) menu->pop_up(); else menu->pop_down();
menus.cc:1048:	if (menu->in_use)
menus.cc:1049:		menu->pop_down ();
menus.cc:1056:	lps->reset_line ();
menus.cc:1057:	lps->stripcpy2 (text);
menus.cc:1072:	xoff = (wd - XTextWidth (ms.titlefont.font, text, len))/2;
menus.cc:1099:	XDrawLine (dpy, boxw, ms.ruleGC, x+ht, y+ht/2, x+wd-ht, y+ht/2);
menus.cc:1119:	XDrawLine (dpy, boxw, ms.ruleGC, x+wd/2, y+wd, x+wd/2, y+ht-wd);
menus.cc:1152:	stripcpy2 (m->name);
menus.cc:1164:	m->src = new char[l+1];
menus.cc:1165:	m->src[l] = 0; // the terminating \0
menus.cc:1169:		memcpy (m->src+l, line, strlen (line));
misc.cc:43:	if (x < 0) r--;
misc.cc:53:		return -x;
misc.cc:59:	if (x>0) return 1; else return -1;
misc.cc:67:	fake_win = XCreateSimpleWindow (dpy, root, -20, -20, 10, 10, 0, 0L, 0L);
misc.cc:163:	wd = t->wd / f;
misc.cc:164:	ht = t->ht / f;
misc.cc:165:	depth = t->depth;
misc.cc:175:			XCopyArea (dpy, t->pm, pm, pixGC, i*f, j*f, 1, 1, i, j); 
misc.cc:249:		for (i=first_timer; i; i=i->next)
misc.cc:250:			i->tick ();
misc.cc:289:	timer->t = t;
misc.cc:291:	timer->next = first_timer;
misc.cc:302:		first_timer = timer->next;
misc.cc:305:		for (i=first_timer; i && i->next != timer; i=i->next);
misc.cc:306:		i->next = i->next->next;
misc.cc:314:	if (t>0) t--;
misc.cc:335:		prev->next = next;
misc.cc:337:		next->prev = prev;
misc.cc:353:	XWarpPointer (dpy, None, None, 0, 0, 0, 0, x-rx, y-ry);
misc.cc:377:	while (event->check_mask (PointerMotionMask | EnterWindowMask))
misc.cc:378:		event->handle ();
misc.cc:447:	lps->token (name);
misc.cc:494:	lps->stripcpy (name);
misc.cc:518:	ht = font->ascent + font->descent;
misc.cc:519:	y = font->ascent;
misc.cc:533:	// does `string' match `pattern'? '*' in pattern matches any sub-string
misc.cc:558:				if (*pattern == 0) pattern--;
pager.cc:30:	xmax = wd - disp.wd;
pager.cc:32:	ymax = ht - disp.ht;
pager.cc:35:	if (x+disp.wd > wd) x=wd-disp.wd; if (x<0) x=0;
pager.cc:36:	if (y+disp.ht > ht) y=ht-disp.ht; if (y<0) y=0;
pager.cc:49:		// range-check
pager.cc:55:	dx = x - nx; // if desktop go left, windows go right etc.
pager.cc:56:	dy = y - ny;
pager.cc:68:		for (i = wl.first; i; i = i->next)
pager.cc:69:			i->move (dx, dy);
pager.cc:90:			logw.pr("scroll-begin %s", (wl.focus != NULL ? wl.focus->name : "<root>"));
pager.cc:92:			if (spager) spager->raise ();
pager.cc:95:				event->next ();//mask (MENU_EVENT_MASK);
pager.cc:97:				if (event->x.type==KeyRelease) {
pager.cc:98:					switch (event->keysym) {
pager.cc:106:						event->handled = 1;
pager.cc:109:				if (!event->handled) event->handle ();
pager.cc:112:			if (spager) spager->lower ();
pager.cc:116:			logw.pr("scroll-end");
pager.cc:177:	if (root_pm->pm) {
pager.cc:179:		bkg->shrink (root_pm, scale);
pager.cc:180:		at.background_pixmap = bkg->pm;
pager.cc:206:		{0, 0}, // Aspect ratio - not used
pager.cc:219:	if (ws.bkg->pm)
pager.cc:220:		win_bkg->shrink (ws.bkg, scale);
pager.cc:228:	gcv.font = font.font->fid;
pager.cc:284:	switch (event->x.xbutton.button) {
pager.cc:291:		sw->switch_to ();
pager.cc:292:		px = dsk.x + sw->dwin->wr.x + sw->dwin->wr.wd/2;
pager.cc:293:		py = dsk.y + sw->dwin->wr.y + sw->dwin->wr.ht/2;
pager.cc:296:		px += spager->a->x + spager->dwin->wr.x;
pager.cc:297:		py += spager->a->y + spager->dwin->wr.y;
pager.cc:310:	int spf0 = spager->flags;
pager.cc:311:	spager->flags |= KEEPONTOP;
pager.cc:313:	sw->raise ();
pager.cc:314:	Rect wr0 = sw->dwin->wr;
pager.cc:319:		event->mask (ButtonPressMask | ButtonReleaseMask | PointerMotionMask
pager.cc:322:		switch (event->x.type)
pager.cc:325:			event->handle ();
pager.cc:331:			switch (event->keysym) {
pager.cc:333:				sw->dwin->wr = wr0;
pager.cc:334:				sw->update ();
pager.cc:342:			event->handled = 1;
pager.cc:345:			switch (event->keysym) {
pager.cc:351:			event->handled = 1;
pager.cc:356:			pager.p2r (event->x.xbutton.x_root - px, event->x.xbutton.y_root - py, nx, ny);
pager.cc:357:			if (event->x.xmotion.state & Button1Mask) {
pager.cc:361:				sw->stick (nx, ny, wr0.x, wr0.y, pager.scale);
pager.cc:362:				sw->move_to (nx, ny);
pager.cc:364:			else if (event->x.xmotion.state & Button3Mask) {
pager.cc:370:				int f0 = sw->flags;
pager.cc:371:				sw->flags |= STICKY;
pager.cc:373:				sw->flags = f0;
pager.cc:380:	spager->flags = spf0;
pager.cc:384:	if (sw->dwin->wr.x == wr0.x && sw->dwin->wr.y == wr0.y) {
pager.cc:387:		// panel->lower ();
pager.cc:388:		spager->lower ();
pager.cc:389:		slog->lower ();
pager.cc:390:		sw->switch_to ();
pager.cc:398:	if (wl.find_pager_view (sw, event->x.xbutton.window)) {
pager.cc:400:		switch (event->x.xbutton.button) {
pager.cc:407:			//      sw->destroy ();
pager.cc:408:			sw->close ();
pager.cc:411:			if (pager_winops_menu) pager_winops_menu->exec ();
pager.cc:414:			sw->pager_view_draw (-1); // scroll the name up
pager.cc:418:			sw->pager_view_draw (+1); // scroll the name down
pager.cc:429:	switch (event->x.type) {
pager.cc:431:		event->handle_KeyPress ();
pager.cc:434:		spager->raise();
pager.cc:435:		if (event->x.xbutton.button == 1) {
pager.cc:436:		// left button - move to integer multiple of the basic screen
pager.cc:437:			p2ir (event->x.xbutton.x, event->x.xbutton.y, nx, ny);
pager.cc:440:		else if (event->x.xbutton.button == 3) {
pager.cc:441:		// right button - move float multiple of the basic screen
pager.cc:442:			p2r (event->x.xbutton.x, event->x.xbutton.y, nx, ny);
pager.cc:443:			nx -= disp.wd/2;
pager.cc:444:			ny -= disp.ht/2;
pager.cc:450:		spager->lower();
pager.cc:454://		spager->focus();
pager.cc:460:		// event->..."
pager.cc:461:		if (event->x.xmotion.state & Button3Mask) {
pager.cc:462:			p2r (event->x.xbutton.x, event->x.xbutton.y, nx, ny);
pager.cc:464:			nx -= disp.wd/2;
pager.cc:465:			ny -= disp.ht/2;
pager.cc:469:		else if (event->x.xmotion.state & Button1Mask) {
pager.cc:470:			p2ir (event->x.xbutton.x, event->x.xbutton.y, nx, ny);
pager.cc:477:		if (event->x.xcrossing.detail != NotifyInferior) {
pager.cc:486:		if (event->x.xcrossing.detail == NotifyInferior) {
pager.cc:490:			if (wl.find_pager_view (sw, event->x.xcrossing.subwindow)) {
pager.cc:491:				printf ("ent-here!\n");
pager.cc:492:				sw->focus ();
style.cc:16:		stripcpy2 (sty->pattern);
style.cc:22:			if (match ("-list")) sty->enable (WINLISTSKIP);
style.cc:23:			else if (match ("+list")) sty->disable (WINLISTSKIP);
style.cc:24:			else if (match ("ontop")) sty->enable (KEEPONTOP);
style.cc:25:			else if (match ("-ontop")) sty->disable (KEEPONTOP);
style.cc:26:			else if (match ("sticky")) sty->enable (STICKY);
style.cc:27:			else if (match ("-sticky")) sty->disable (STICKY);
style.cc:29:			else if (match ("decor")) sty->enable (DECORATIONS);
style.cc:30:			else if (match ("-decor")) sty->disable (DECORATIONS);
style.cc:31:			else if (match ("title"))	sty->enable (TITLE);
style.cc:32:			else if (match ("-title")) sty->disable (TITLE);
style.cc:35:	num (sty->dw);
style.cc:36:	sty->enable (DECOR_WD);
style.cc:38:			else if (match ("-dw"))
style.cc:40:	sty->dw = 0;
style.cc:41:	sty->enable (DECOR_WD);
style.cc:45:	num (sty->bw);
style.cc:46:	sty->enable (BORDER_WD);
style.cc:48:			else if (match ("-bw"))
style.cc:50:	sty->bw = 0;
style.cc:51:	sty->enable (BORDER_WD);
style.cc:112:	n->next = NULL;
style.cc:113:	last->next = n;
style.cc:124:		first = first->next;
windows.cc:49:	gcv.font = swm_font.font->fid;
windows.cc:68:	bkg->load (bkg_xf);
windows.cc:128:	if (!close_free_pm->load (close_free_xf)) close_free_pm->create (close_free_xpm);
windows.cc:129:	if (!close_down_pm->load (close_down_xf)) close_down_pm->create (close_down_xpm);
windows.cc:130:	if (!close_hover_pm->load (close_hover_xf)) close_hover_pm->create (close_hover_xpm);
windows.cc:131:	if (!mx_free_pm->load (mx_free_xf)) mx_free_pm->create (mx_free_xpm);
windows.cc:132:	if (!mx_down_pm->load (mx_down_xf)) mx_down_pm->create (mx_down_xpm);
windows.cc:133:	if (!mx_hover_pm->load (mx_hover_xf)) mx_hover_pm->create (mx_hover_xpm);
windows.cc:134:	if (!hide_free_pm->load (hide_free_xf)) hide_free_pm->create (hide_free_xpm);
windows.cc:135:	if (!hide_down_pm->load (hide_down_xf)) hide_down_pm->create (hide_down_xpm);
windows.cc:136:	if (!hide_hover_pm->load (hide_hover_xf)) hide_hover_pm->create (hide_hover_xpm);
windows.cc:137:	if (!winops_free_pm->load (winops_free_xf)) winops_free_pm->create (winops_free_xpm);
windows.cc:138:	if (!winops_down_pm->load (winops_down_xf)) winops_down_pm->create (winops_down_xpm);
windows.cc:139:	if (!winops_hover_pm->load (winops_hover_xf)) winops_hover_pm->create (winops_hover_xpm);
windows.cc:160:	cq.add (new WinCmd (event->sw, CW_CLOSE));
windows.cc:180:	cq.add (new WinCmd (event->sw, CW_MAX));
windows.cc:200:	cq.add (new WinCmd (event->sw, CW_HIDE));
windows.cc:217:	if (winops_menu) winops_menu->exec ();
windows.cc:232:	if (ws.bkg->pm) {
windows.cc:233:		at.background_pixmap = ws.bkg->pm;
windows.cc:261:	switch (event->x.type)
windows.cc:264:		if (!event->handled)
windows.cc:266:			event->context = C_DECOR;
windows.cc:273:		if (event->sw != spager)
windows.cc:274:			spager->lower ();
windows.cc:276:		event->sw->focus ();
windows.cc:277:		wl.focus = event->sw;
windows.cc:287:	// get some info -- name, class, protocols
windows.cc:337:		spager->flags |= STICKY; // pager remains sticky - for the movement of windows on it
windows.cc:344:		// catch events (e. g. we will catch DestroyNotify -- see remark in Event::handle_MapRequest)
windows.cc:356:	if (pager.win_bkg->pm) {
windows.cc:357:		at.background_pixmap = pager.win_bkg->pm;
windows.cc:371:	// create dwin - window for decorations
windows.cc:374:	dwin->hbox->aadd(a); // so that the 'a' allocated in a_get gets deleted properly with decor_build
windows.cc:381:	wins[1] = dwin->w;
windows.cc:384:	// ??? bl.grab (dwin->w, context)
windows.cc:385:	// ??? e.g. bl.grab (dwin->w, C_DECOR)
windows.cc:387:	bl.grab (dwin->w);
windows.cc:397:			// transient, or it starts hidden -- place it where requested
windows.cc:402:			if (dwin->hbox->wd < disp.wd) {
windows.cc:403:				if (dwin->wr.x < 0)
windows.cc:404:					dwin->wr.x = 0;
windows.cc:405:				else if (dwin->wr.x + dwin->hbox->wd > disp.wd) 
windows.cc:406:					dwin->wr.x = disp.wd - dwin->hbox->wd;
windows.cc:409:			if (dwin->hbox->ht < disp.ht) {
windows.cc:410:				if (dwin->wr.y < 0)
windows.cc:411:					dwin->wr.y = 0;
windows.cc:412:				else if (dwin->wr.y + dwin->hbox->ht > disp.ht)
windows.cc:413:					dwin->wr.y = disp.ht - dwin->hbox->ht;
windows.cc:420:			dwin->wr.x = (disp.wd - dwin->wr.wd) / 2;
windows.cc:421:			dwin->wr.y = (disp.ht - dwin->wr.ht) / 2;
windows.cc:429:			dwin->wr.x = ppos.rx;
windows.cc:430:			dwin->wr.y = ppos.ry;
windows.cc:431:			dwin->align ();
windows.cc:441:			anim.from.set (swindow->dwin->wr);
windows.cc:450:		anim.to.set (dwin->wr);
windows.cc:469:	//	if (wmhints) logw.dbg ("%s %d", name, wmhints->initial_state);
windows.cc:479:	return (wmhints  &&  wmhints->flags & StateHint  &&  wmhints->initial_state == IconicState);
windows.cc:492:		for (i = wl.first; i->next != this; i=i->next);
windows.cc:494:		i->next = next;
windows.cc:554:	// gc.function is GXxor - first (odd) call draws, second (even) clear
windows.cc:556:		r.x + outline_wd/2, r.y + outline_wd/2, r.wd - outline_wd, r.ht - outline_wd);
windows.cc:570:	if (!wmhints || wmhints->input) {
windows.cc:767:	// and vice-versa
windows.cc:824:	if (event->x.type == ButtonPress)
windows.cc:826:		event->context = C_DECOR;
windows.cc:834:	x = t->x;
windows.cc:835:	y = t->y;
windows.cc:836:	wd = t->wd;
windows.cc:837:	ht = t->ht;
windows.cc:850:	a->x = wat.x;
windows.cc:851:	a->y = wat.y;
windows.cc:852:	a->wd = wat.width + 2*abw;
windows.cc:853:	a->ht = wat.height + 2*abw;
windows.cc:877:// this procedure will change (through box->ia () and box->fa ()) 'a' and 'dwin->hbox',
windows.cc:887:	vbox->xs = 10;
windows.cc:892:		if (pmode & WPM_max) tit->aadd (new HSkip (dw));
windows.cc:893:		tit->aadd (new HText (name));
windows.cc:896:		if (flags & HIDE_BUTTON)	tit->add (new HSkip (dw), new HideButton, NULL);
windows.cc:898:		if (flags & MAXIMIZABLE)	tit->add (new HSkip (dw), new MaxButton, NULL);
windows.cc:899:		if (flags & CLOSEABLE)		tit->add (new HSkip (dw), new CloseButton, NULL);
windows.cc:901:		vbox->aadd (tit);
windows.cc:902:		//      vbox->aadd (new HRule (1, ws.titleGC));
windows.cc:903:		if (dw) vbox->aadd (new VSkip (dw));
windows.cc:916:			a_new->x += dwin->wr.x; a_new->y += dwin->wr.y; // a_new->x,y now relative to root
windows.cc:919:		vbox->aadd (a_new);
windows.cc:920:		hbox = new HBox; hbox->ys = 10;
windows.cc:921:		hbox->aadd (vbox);
windows.cc:925:				vbox = new VBox; vbox->xs = 10;	vbox->add (new VSkip (dw), hbox, new VSkip (dw), NULL);
windows.cc:926:				hbox = new HBox; hbox->ys = 10;	hbox->add (new HSkip (dw), vbox, new HSkip (dw), NULL);
windows.cc:928:			hbox->add_border (fbw, ws.borderGC);
windows.cc:931:		delete dwin->hbox; // deletes also original a
windows.cc:932:		dwin->hbox = hbox; a = a_new;
windows.cc:933:		dwin->wr.x = a->x; dwin->wr.y = a->y;
windows.cc:934:		dwin->align (); // changes also a->x, a->y
windows.cc:936:		// now a->x, a->y are related to the upper left corner of dwin, want 'a' to
windows.cc:938:		dwin->wr.x -= a->x; dwin->wr.y -= a->y;
windows.cc:944:		vbox->aadd (a_new);
windows.cc:947:		hbox->aadd (vbox);
windows.cc:950:			// center a_new, retaining its size - why VFil? consider xterm or other
windows.cc:952:			a_new->xs = a_new->ys = 0;
windows.cc:953:			vbox = new VBox; vbox->xs = 0;	vbox->add (new VFil, hbox, new VFil, NULL);
windows.cc:954:			hbox = new HBox; hbox->ys = 0;	hbox->add (new HFil, vbox, new HFil, NULL);
windows.cc:958:			hbox->ys = 10;
windows.cc:959:			a_new->xs = a_new->ys = 10;
windows.cc:961:				vbox = new VBox; vbox->xs = 10;	vbox->add (new VSkip (dw), hbox, new VSkip (dw), NULL);
windows.cc:962:				hbox = new HBox; hbox->ys = 10;	hbox->add (new HSkip (dw), vbox, new HSkip (dw), NULL);
windows.cc:966:		hbox->add_border (fbw, ws.borderGC);
windows.cc:968:		hbox->ia ();
windows.cc:969:		// impose size on hbox and position on dwin->wr
windows.cc:973:		case WPM_max:     nx = 0; ny = 0; hbox->wd = disp.wd; hbox->ht = disp.ht; break;
windows.cc:974:		case WPM_half_l:  nx = 0; ny = 0; hbox->wd = disp.wd/2; hbox->ht = disp.ht; break;
windows.cc:975:		case WPM_half_r:  nx = disp.wd/2; ny = 0; hbox->wd = disp.wd - disp.wd/2; hbox->ht = disp.ht; break;
windows.cc:976:		case WPM_quad_tl: nx = 0; ny = 0; hbox->wd = disp.wd/2; hbox->ht = disp.ht/2; break;
windows.cc:977:		case WPM_quad_tr: nx = disp.wd/2; ny = 0; hbox->wd = disp.wd/2; hbox->ht = disp.ht/2; break;
windows.cc:978:		case WPM_quad_bl: nx = 0; ny = disp.ht/2; hbox->wd = disp.wd - disp.wd/2; hbox->ht = disp.ht - disp.ht/2; break;
windows.cc:979:		case WPM_quad_br: nx = disp.wd/2; ny = disp.ht/2; hbox->wd = disp.wd - disp.wd/2; hbox->ht = disp.ht - disp.ht/2; break;
windows.cc:981:		// why disp.wd - disp.wd/2 instead of disp.wd/2? consider non-even disp.wd (i.e. when it is odd)
windows.cc:983:		hbox->fa ();
windows.cc:986:			delete dwin->hbox; // deletes also old a
windows.cc:987:			dwin->hbox = hbox; a = a_new;
windows.cc:988:			dwin->wr.x = nx; dwin->wr.y = ny;
windows.cc:989:			dwin->wr.wd = dwin->hbox->wd; dwin->wr.ht = dwin->hbox->ht;
windows.cc:992:			int new_wd = a_new->wd - 2*abw;
windows.cc:993:			int new_ht = a_new->ht - 2*abw;
windows.cc:1004:					a_saved->x += dwin->wr.x; // a_saved contains coordinates relative to root
windows.cc:1005:					a_saved->y += dwin->wr.y;
windows.cc:1008:				delete dwin->hbox; // deletes also old a
windows.cc:1009:				dwin->hbox = hbox; a = a_new;
windows.cc:1029:		if (!(flags & DECORATIONS)) XUnmapWindow (dpy, dwin->w);
windows.cc:1035:		XMapWindow (dpy, dwin->w);
windows.cc:1044:	for (sty = sl.first; sty; sty = sty->next)
windows.cc:1045:		if (sty->match (t)) {
windows.cc:1046:			flags = (flags & ~sty->mask) | sty->flags;
windows.cc:1047:			if (sty->flags & DECOR_WD) dw = sty->dw;
windows.cc:1048:			if (sty->flags & BORDER_WD) fbw = sty->bw;
windows.cc:1103:		//    printf ("MWM hints: %s\t%d\n", name, mwm_hints->flags);
windows.cc:1104:		if (mwm_hints->flags & MWM_HINTS_DECORATIONS) {
windows.cc:1107:			if (mwm_hints->decorations & MWM_DECOR_ALL)	flags |= DECORATIONS;
windows.cc:1108:			if (mwm_hints->decorations & MWM_DECOR_BORDER)	flags |= DECORATIONS;
windows.cc:1109:			if (mwm_hints->decorations & MWM_DECOR_TITLE)	flags |= TITLE;
windows.cc:1112:		if (mwm_hints->flags & MWM_HINTS_FUNCTIONS) {
windows.cc:1113:			if (mwm_hints->functions & MWM_FUNC_MAXIMIZE)	flags |= MAXIMIZABLE; else flags &= ~MAXIMIZABLE;
windows.cc:1114:			if (mwm_hints->functions & MWM_FUNC_MINIMIZE)	flags |= HIDE_BUTTON; else flags &= ~HIDE_BUTTON;
windows.cc:1117:			if (mwm_hints->functions & MWM_FUNC_CLOSE) {
windows.cc:1152:	//  ICCCM Client Messages - Section 4.2.8 of the ICCCM dictates that all
windows.cc:1186:	//  Window w = event->x.xunmap.window;
windows.cc:1198:	//  XReparentWindow (dpy, awin, dwin->w, a->x, a->y);
windows.cc:1199:	//  XReparentWindow (dpy, awin, root, a->x, a->y);
windows.cc:1210:	Rect rd = dwin->wr;
windows.cc:1268:				anim.to.set (swindow->dwin->wr);
windows.cc:1293:	// synchronize the real (X-server's) position with awin
windows.cc:1295:		dwin->wr.x + a->x, dwin->wr.y + a->y, a->wd - 2*abw, a->ht - 2*abw);
windows.cc:1297:	//	  dwin->x + a->x, dwin->y + a->y,
windows.cc:1298:	//	  a->wd - 2*abw, a->ht - 2*abw, name);
windows.cc:1309:	xev.xconfigure.x = dwin->wr.x + a->x;
windows.cc:1310:	xev.xconfigure.y = dwin->wr.y + a->y;
windows.cc:1311:	xev.xconfigure.width = a->wd - 2*abw;
windows.cc:1312:	xev.xconfigure.height = a->ht - 2*abw;
windows.cc:1320:	dwin->update ();
windows.cc:1321:	//  dwin->pr ();
windows.cc:1332:// wmaker < 0.61, kwm from KDE <2.0) - it still works fine - now kill
windows.cc:1333:// xmms, start it again (when bad WM is running) - it will work wrong
windows.cc:1334:// - kill WM - it will still work wrong
windows.cc:1341:	x = ifrac (dwin->wr.x + dsk.x, dsk.wd, pager.wd);
windows.cc:1342:	y = ifrac (dwin->wr.y + dsk.y, dsk.ht, pager.ht);
windows.cc:1344:	// why -2 ? since pager_view has border_width = 1
windows.cc:1345:	wd = ifrac (dwin->hbox->wd, dsk.wd, pager.wd) - 2;
windows.cc:1346:	ht = ifrac (dwin->hbox->ht, dsk.ht, pager.ht) - 2;
windows.cc:1357:	const char *delims = " @/.,_{}();:-";
windows.cc:1379:		do p++; while (name[p] && !word_delim (name[p-1]));
windows.cc:1384:	} while (XTextWidth (pager.font.font, name + lb, p - lb) <= wd - PAGER_VIEW_OFFSET);
windows.cc:1392:	wd = ifrac (dwin->hbox->wd, dsk.wd, pager.wd) - 2*PAGER_VIEW_OFFSET;
windows.cc:1393:	ht = ifrac (dwin->hbox->ht, dsk.ht, pager.ht) - 2*PAGER_VIEW_OFFSET;
windows.cc:1403:	// try to use the space as much as possible - cut down unnecessarily
windows.cc:1411:	nl -= (ht / pager.font.ht);
windows.cc:1416:		if (pager_view_skip > nl) pager_view_skip -= diff;
windows.cc:1420:		if (pager_view_skip > nl) pager_view_skip = nl - diff;
windows.cc:1436:		XDrawString (dpy, pager_view, pager.textGC, PAGER_VIEW_OFFSET, yt+pager.font.y, name+lb, p-lb);
windows.cc:1455:		dwin->wr.x += dx;
windows.cc:1456:		dwin->wr.y += dy;
windows.cc:1462:			a_saved->x += dx; 
windows.cc:1463:			a_saved->y += dy;
windows.cc:1472:	if (nx == dwin->wr.x && ny == dwin->wr.y) return 0;
windows.cc:1480:	dwin->wr.x = nx;
windows.cc:1481:	dwin->wr.y = ny;
windows.cc:1508:	int x = dwin->wr.x + dwin->wr.wd/2;
windows.cc:1509:	int y = dwin->wr.y + dwin->wr.ht/2;
windows.cc:1511:	restrict (x, -dsk.x, -dsk.x + dsk.wd-1);
windows.cc:1512:	restrict (y, -dsk.y, -dsk.y + dsk.ht-1);
windows.cc:1516:	nx = (disp.wd - dwin->wr.wd) / 2;
windows.cc:1517:	ny = (disp.ht - dwin->wr.ht) / 2;
windows.cc:1521:	if (dwin->wr.x < disp.wd && dwin->wr.x + dwin->wr.wd >= 0
windows.cc:1522:		&& dwin->wr.y < disp.ht && dwin->wr.y + dwin->wr.ht >= 0)
windows.cc:1527:		dwin->wr.x = nx;
windows.cc:1528:		dwin->wr.y = ny;
windows.cc:1531:		dwin->wr.x = nx + disp.wd * iifrac (x, disp.wd);
windows.cc:1532:		dwin->wr.y = ny + disp.ht * iifrac (y, disp.ht);
windows.cc:1534:	//    dwin->align ();
windows.cc:1549:	int dwd = a->wd - 2*abw;
windows.cc:1550:	int dht = a->ht - 2*abw;
windows.cc:1551:	// dwd, dht - desired (demanded) wd, ht
windows.cc:1572:	dwd = ((dwd - basewd) / xinc * xinc) + basewd;
windows.cc:1573:	dht = ((dht - baseht) / yinc * yinc) + baseht;
windows.cc:1583:	// ---------- <= ------- <= ----------
windows.cc:1594:			delta = makemult (minAspectX * dht / minAspectY - dwd, xinc);
windows.cc:1599:				delta = makemult (dht - dwd * minAspectY / minAspectX, yinc);
windows.cc:1600:				if (dht - delta >= minht)
windows.cc:1601:				dht -= delta;
windows.cc:1606:			delta = makemult (dwd * maxAspectY / maxAspectX - dht, yinc);
windows.cc:1610:				delta = makemult (dwd - maxAspectX * dht / maxAspectY, xinc);
windows.cc:1611:				if (dwd - delta >= minwd)
windows.cc:1612:					dwd -= delta;
windows.cc:1617:	a->wd = dwd + 2*abw;
windows.cc:1618:	a->ht = dht + 2*abw;
windows.cc:1627:	for (i= wl.first; i; i= i->next)
windows.cc:1628:		if (i->flags & TRANSIENT && i->transient_for == awin)
windows.cc:1629:			i->raise ();
windows.cc:1638:		for (i= wl.first; i; i= i->next)
windows.cc:1639:			if (i->flags & TRANSIENT && i->transient_for == awin)
windows.cc:1640:				i->lower ();
windows.cc:1643:		XLowerWindow (dpy, dwin->w);
windows.cc:1679:	for (i=wl.first; i; i= i->next)
windows.cc:1680:		if (i->flags & TRANSIENT && i->transient_for == awin)
windows.cc:1681:			i->stick_on ();
windows.cc:1694:	for (i=wl.first; i; i= i->next)
windows.cc:1695:		if (i->flags & TRANSIENT && i->transient_for == awin)
windows.cc:1696:			i->stick_off ();
windows.cc:1718:		if (flags & DECORATIONS) XMapWindow (dpy, dwin->w); else XUnmapWindow (dpy, dwin->w);
windows.cc:1729:		anim.to.set (dwin->wr);
windows.cc:1739:		for (i=wl.first; i; i= i->next)
windows.cc:1740:			if (i->flags & TRANSIENT  && i->transient_for == awin  && !(i->flags & HIDDEN_INDEPENDENTLY))
windows.cc:1741:				i->show ();
windows.cc:1764:	for (i=wl.first; i; i= i->next)
windows.cc:1765:		if (i->flags & TRANSIENT && i->transient_for == awin) i->hide ();
windows.cc:1770:		if (!(swindow->flags & HIDDEN))
windows.cc:1774:	XUnmapWindow (dpy, dwin->w);
windows.cc:1783:	anim.from.set (dwin->wr);
windows.cc:1786:		anim.to.set (swindow->dwin->wr);
windows.cc:1812:	Rect orig = dwin->wr;
windows.cc:1813:	a_orig->x += orig.x;
windows.cc:1814:	a_orig->y += orig.y;
windows.cc:1823:		ol = new Outline (dwin->wr);
windows.cc:1824:		ol->draw ();
windows.cc:1831:		event->mask (KeyPressMask | KeyReleaseMask | ButtonPressMask
windows.cc:1834:		switch (event->x.type)
windows.cc:1838:				ol->draw ();
windows.cc:1839:				event->handle_Expose ();
windows.cc:1840:				ol->draw ();
windows.cc:1843:				event->handle_Expose ();
windows.cc:1848:			event->kbd_shortcuts ();
windows.cc:1849:			switch (event->keysym)
windows.cc:1857:					ol->draw ();
windows.cc:1861:				dwin->wr = orig;
windows.cc:1869:			event->handled = 1;
windows.cc:1873:			event->handled = 1;
windows.cc:1880:				ol->draw ();
windows.cc:1884:			if (dwin->wr != orig) {
windows.cc:1893:			event->handled = 1;
windows.cc:1900:			if (event->x.type == EnterNotify) {
windows.cc:1901:				x = event->x.xcrossing.x_root;
windows.cc:1902:				y = event->x.xcrossing.y_root;
windows.cc:1905:				x = event->x.xmotion.x_root;
windows.cc:1906:				y = event->x.xmotion.y_root;
windows.cc:1911:			if ((y <= orig.y) || (ymotion == 1 && y < orig.y + orig.ht - 1)) {
windows.cc:1913:				a->ys = 10;
windows.cc:1914:				dwin->ia ();
windows.cc:1915:				dwin->hbox->ht = orig.y + orig.ht - y + hints.height_inc - 1;
windows.cc:1916:				dwin->fa ();
windows.cc:1918:				a->ys = 0;
windows.cc:1919:				dwin->ia (); dwin->fa ();
windows.cc:1920:				dwin->wr.y = orig.y + orig.ht - dwin->hbox->ht;
windows.cc:1923:			else if ((y >= orig.y + orig.ht - 1) || (ymotion == -1 && y > orig.y)) {
windows.cc:1925:				a->ys = 10;
windows.cc:1926:				dwin->ia ();
windows.cc:1927:				dwin->hbox->ht = y - orig.y + hints.height_inc;
windows.cc:1928:				dwin->fa ();
windows.cc:1930:				a->ys = 0;
windows.cc:1931:				dwin->ia (); dwin->fa ();
windows.cc:1932:				dwin->wr.y = orig.y;
windows.cc:1933:				ymotion = -1;
windows.cc:1936:			if ((x <= orig.x) || (xmotion == 1 && x < orig.x + orig.wd - 1)) {
windows.cc:1938:				a->xs = 10;
windows.cc:1939:				dwin->ia ();
windows.cc:1940:				dwin->hbox->wd = orig.wd + orig.x - x + hints.width_inc - 1;
windows.cc:1941:				dwin->fa ();
windows.cc:1943:				a->xs = 0;
windows.cc:1944:				dwin->ia (); dwin->fa ();
windows.cc:1945:				dwin->wr.x = orig.x + orig.wd - dwin->hbox->wd;
windows.cc:1948:			else if ((x >= orig.x + orig.wd - 1) || (xmotion == -1 && x > orig.x)) {
windows.cc:1950:				a->xs = 10;
windows.cc:1951:				dwin->ia ();
windows.cc:1952:				dwin->hbox->wd = x - orig.x + hints.width_inc;
windows.cc:1953:				dwin->fa ();
windows.cc:1955:				a->xs = 0;
windows.cc:1956:				dwin->ia (); dwin->fa ();
windows.cc:1957:				dwin->wr.x = orig.x;
windows.cc:1958:				xmotion = -1;
windows.cc:1964:				//	dwin->draw ();
windows.cc:1967:				ol->update (dwin->wr);
windows.cc:1968:				//	dwin->draw ();
windows.cc:1973:			event->handled = 1;
windows.cc:1979:		if (!event->handled)
windows.cc:1980:			event->handle ();
windows.cc:1999:	wd = a->wd - 2*abw;
windows.cc:2001:	//wd -= hints.base_width;
windows.cc:2012:	ht = a->ht - 2*abw;
windows.cc:2014:	//ht -= hints.base_height;
windows.cc:2023:	//#define L_ZERO(x, r) ((x<0) && (x >= -r))
windows.cc:2036:		inx = ox + disp.wd * iifrac (nx - ox + disp.wd/2, disp.wd);
windows.cc:2037:		iny = oy + disp.ht * iifrac (ny - oy + disp.ht/2, disp.ht);
windows.cc:2043:		idx = nx - inx;
windows.cc:2044:		idy = ny - iny;
windows.cc:2050:			nx -= idx;
windows.cc:2056:			ny -= idy;
windows.cc:2064:			else if (R_ZERO(nx + dwin->hbox->wd - disp.wd, m*borders_stick)) // right
windows.cc:2065:				nx = disp.wd - dwin->hbox->wd;
windows.cc:2070:			else if (R_ZERO(ny + dwin->hbox->ht - disp.ht, m*borders_stick)) // bottom
windows.cc:2071:				ny = disp.ht - dwin->hbox->ht;
windows.cc:2083:	Rect orig = dwin->wr;
windows.cc:2087:	logw.dbg ("%dx%d %+d %+d", dwin->wr.wd, dwin->wr.ht, dwin->wr.x, dwin->wr.y);
windows.cc:2091:		ol = new Outline (dwin->wr);
windows.cc:2092:		if (moved) ol->draw ();
windows.cc:2099:		event->mask (KeyPressMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask | EnterWindowMask | ExposureMask);
windows.cc:2101:		switch (event->x.type) {
windows.cc:2104:				moved && ol->draw ();
windows.cc:2105:				event->handle_Expose ();
windows.cc:2106:				moved && ol->draw ();
windows.cc:2108:			else event->handle_Expose ();
windows.cc:2111:			event->kbd_shortcuts ();
windows.cc:2112:			switch (event->keysym) {
windows.cc:2118:				dwin->wr = orig;
windows.cc:2123:			event->handled = 1;
windows.cc:2126:		case ButtonPress: event->handled = 1; break;
windows.cc:2128:		case ButtonRelease: done = 1; event->handled = 1; break;
windows.cc:2134:				if (!(swm_flags & OpaqueMove)) ol->draw ();
windows.cc:2138:			if (event->x.type == EnterNotify) {
windows.cc:2139:				x = event->x.xcrossing.x_root;
windows.cc:2140:				y = event->x.xcrossing.y_root;
windows.cc:2143:				x = event->x.xmotion.x_root;
windows.cc:2144:				y = event->x.xmotion.y_root;
windows.cc:2151:			else if (x==disp.wd-1 && y==0) newmode = WPM_quad_tr; 
windows.cc:2152:			else if (x==0 && y==disp.ht-1) newmode = WPM_quad_bl;
windows.cc:2153:			else if (x==disp.wd-1 && y==disp.ht-1) newmode = WPM_quad_br;
windows.cc:2156:			else if (x==disp.wd-1) newmode = WPM_half_r;
windows.cc:2160:				left = disp.wd/100; if (left<5) left=5;	right = disp.wd-left;
windows.cc:2161:				top = disp.ht/100; if (top<5) top=5; bot = disp.ht-top;
windows.cc:2182:					nx = orig.x + x - ppos.sx;
windows.cc:2183:					ny = orig.y + y - ppos.sy;
windows.cc:2187:					dwin->wr.x = nx;
windows.cc:2188:					dwin->wr.y = ny;
windows.cc:2190:					//dwin->ia ();
windows.cc:2191:					//dwin->fa ();
windows.cc:2197:				//dwin->update;
windows.cc:2198:				dwin->draw (); //??
windows.cc:2201:				ol->update (dwin->wr);
windows.cc:2205:			event->handled = 1;
windows.cc:2212:		//    if (!event->handled)
windows.cc:2213:		//      event->handle ();
windows.cc:2218:		if (moved) ol->draw ();
windows.cc:2231:	logw.pr ("%+-d%+-d %s", dwin->wr.x+a->x, dwin->wr.y+a->y, name);
windows.cc:2240:	tx = ((dsk.x + dwin->wr.x + dwin->hbox->wd/2) / disp.wd) * disp.wd;
windows.cc:2241:	ty = ((dsk.y + dwin->wr.y + dwin->hbox->ht/2) / disp.ht) * disp.ht;
windows.cc:2243:	// animation could be there - acc/decc ...
windows.cc:2262:		if (dwin->wr.x + dwin->wr.wd < MIN_VISIBLE)
windows.cc:2263:			dwin->wr.x = MIN_VISIBLE - dwin->wr.wd;
windows.cc:2264:		else if (dwin->wr.x > disp.wd - MIN_VISIBLE)
windows.cc:2265:			dwin->wr.x = disp.wd - MIN_VISIBLE;
windows.cc:2267:		if (dwin->wr.y + dwin->wr.ht < MIN_VISIBLE)
windows.cc:2268:			dwin->wr.y = MIN_VISIBLE - dwin->wr.ht;
windows.cc:2269:		else if (dwin->wr.y > disp.ht - MIN_VISIBLE)
windows.cc:2270:			dwin->wr.y = disp.ht - MIN_VISIBLE;
windows.cc:2274:		if (!dwin->wr.overlap(0, 0, disp.wd, disp.ht)) cq.add (new WinCmd (this, CW_CENTER));
windows.cc:2279:	//  ppos.warp_to (a->x + a->wd / 2, a->y + a->ht / 2);
windows.cc:2285:#define cre event->x.xconfigurerequest
windows.cc:2304:		wins[1] = dwin->w;
windows.cc:2318:			xwc.sibling = tmp->pager_view;
windows.cc:2326:		int dbw = cre.border_width - abw;
windows.cc:2327:		a->wd += 2*dbw;
windows.cc:2328:		a->ht += 2*dbw;
windows.cc:2342:	if (cre.value_mask & CWX) dwin->wr.x = cre.x - a->x;
windows.cc:2343:	if (cre.value_mask & CWY) dwin->wr.y = cre.y - a->y;
windows.cc:2344:	if (cre.value_mask & CWWidth) a->wd = cre.width + 2*abw;
windows.cc:2345:	if (cre.value_mask & CWHeight) a->ht = cre.height + 2*abw;
windows.cc:2347:	dwin->align ();
windows.cc:2362:	// decorations, change the background (of dwin->w) to black and redo
windows.cc:2369://	logw.dbg ("prop notify %s %s", name, XGetAtomName (dpy, event->x.xproperty.atom));
windows.cc:2371:	switch (event->x.xproperty.atom)
windows.cc:2376:		//      dwin->title->cl (); // clear the old one (on the screen)
windows.cc:2377:		dwin->cl ();
windows.cc:2385:		dwin->draw (); // buttons need to be redrawn
windows.cc:2400:		wmhints = XGetWMHints (dpy, event->x.xany.window);
windows.cc:2410:		if (event->x.xproperty.atom == _XA_WM_STATE) {
windows.cc:2415:		else if (event->x.xproperty.atom == _XA_WM_PROTOCOLS) {
windows.cc:2418:			// the buttons may have changed, re-create decorations; run
windows.cc:2423:			//	dwin->title->cl ();
windows.cc:2424:			dwin->cl ();
windows.cc:2429:			dwin->draw (); // buttons need to be redrawn
windows.cc:2431:		else if (event->x.xproperty.atom == _XA_WM_TAKE_FOCUS) {
windows.cc:2433:			if (flags & DoesWmTakeFocus) send_message (_XA_WM_TAKE_FOCUS, event->x.xproperty.time);
windows.cc:2435:		else if (event->x.xproperty.atom == _XA_MOTIF_WM_HINTS) {
windows.cc:2449:			dwin->draw (); // buttons need to be redrawn
windows.cc:2505:		int s = 0; // which side to eat - have to begin on right!!!
windows.cc:2507:		int rl = len - ll;
windows.cc:2529:				c--;
windows.cc:2569:		// XFillRectangle (dpy, t->pager_view, gc)
windows.cc:2571:		XSetWindowBackground (dpy, to_win->pager_view, ms.hiback.pixel);
windows.cc:2574:		if (pager.win_bkg->pm)
windows.cc:2575:			XSetWindowBackgroundPixmap (dpy, to_win->pager_view, pager.win_bkg->pm);
windows.cc:2577:			XSetWindowBackground (dpy, to_win->pager_view, ws.frame.pixel);
windows.cc:2580:	to_win->pager_view_draw ();
windows.cc:2595:	hbox->aadd (vbox);
windows.cc:2600:	//  vbox->aadd (new MTitle ("Switch to"));
windows.cc:2601:	//  vbox->aadd (new MHRule);
windows.cc:2605:	for (i = wl.first; i; i = i->next) {
windows.cc:2606:#define fl (i->flags)
windows.cc:2609:#define trans ((fl & TRANSIENT) && wl.findw (swindow, i->transient_for))
windows.cc:2614:			! (fl & TRANSIENT  &&  wl.findw(swindow, i->transient_for)  &&  swindow->flags & HIDDEN)))
windows.cc:2630:			r=asprintf (&mt, "&%c  %s", scut, i->icon_name);
windows.cc:2642:	if (n==0) vbox->aadd (new MTitle ((char *) "<no hidden windows>"));
windows.cc:2644:	vbox->ia ();
windows.cc:2645:	if (vbox->wd > disp.wd/2) vbox->wd = disp.wd/2;
windows.cc:2646:	vbox->fa ();
windows.cc:2648:	hbox->add_border (ms.bw, ms.ruleGC);
windows.cc:2656:	hbox->aadd (vbox);
windows.cc:2661:	//  vbox->aadd (new MTitle ("Switch to"));
windows.cc:2662:	//  vbox->aadd (new MHRule);
windows.cc:2666:	for (i = wl.first; i; i = i->next) {
windows.cc:2667:#define fl (i->flags)
windows.cc:2670:#define trans ((fl & TRANSIENT) && wl.findw (swindow, i->transient_for))
windows.cc:2676:			 !(hidden && (fl & TRANSIENT  &&  wl.findw (swindow, i->transient_for)  &&  swindow->flags & HIDDEN))))
windows.cc:2693:			if (i->flags & HIDDEN)
windows.cc:2694:				r=asprintf (&mt, "&%c  (%s)", scut, i->icon_name);
windows.cc:2696:				r=asprintf (&mt, "&%c* %s", scut, i->name);
windows.cc:2698:				r=asprintf (&mt, "&%c  %s", scut, i->name);
windows.cc:2712:		vbox->aadd (new MTitle ((char *) "<empty>"));
windows.cc:2714:	vbox->ia ();
windows.cc:2715:	if (vbox->wd > disp.wd/2) vbox->wd = disp.wd/2;
windows.cc:2716:	vbox->fa ();
windows.cc:2718:	hbox->add_border (ms.bw, ms.ruleGC);
windows.cc:2727:	// decorates all windows at start-up
windows.cc:2741:			if (wmhintsp->flags & IconWindowHint)
windows.cc:2743:					if (children[j] == wmhintsp->icon_window) {
windows.cc:2755:	// map all of the non-override windows
windows.cc:2761:			if (isIconicState == IconicState) nw->hide ();
windows.cc:2778:	// ALT-tab switching as known from MS-Windows
windows.cc:2782:	menu->pop_up (MPOP_CENTER);
windows.cc:2783:	if (spager) spager->raise ();
windows.cc:2787:	if (menu->it_last) {
windows.cc:2788:		boxw = menu->w;
windows.cc:2789:		menu->select (menu->it_last->it_next->it_next);
windows.cc:2795:		event->mask (MENU_EVENT_MASK);
windows.cc:2797:		menu->handle_event ();
windows.cc:2799:		if (!event->handled) {
windows.cc:2800:			switch (event->x.type)
windows.cc:2803:				boxw = menu->w;
windows.cc:2804:				switch (event->keysym)
windows.cc:2807:					if (menu->focus)
windows.cc:2808:						menu->select (menu->focus->it_next);
windows.cc:2809:					event->handled = 1;
windows.cc:2812:					menu->handle_KeyPress ();
windows.cc:2814:			//      event->handled = 1;
windows.cc:2817:				boxw = menu->w;
windows.cc:2818:				switch (event->keysym) {
windows.cc:2822:					if (menu->focus) menu->focus->action ();
windows.cc:2826:				event->handled = 1;
windows.cc:2831:		if (!event->handled) event->handle ();
windows.cc:2834:	menu->pop_down ();
windows.cc:2837:	if (spager) spager->lower ();
windows.cc:2866:		for (SWindow *i= first; i; i= i->next) {
windows.cc:2867:			if (i != spager && i != slog && i->dwin->wr.overlap(disp)) {
windows.cc:2868:				int dsq=i->dwin->wr.dsq(ppos.rx, ppos.ry);
windows.cc:2869:				if (focus == NULL || dsq < cldsq) { // evaluation from left to right - order important!
windows.cc:2878:	logw.dbg("ffind %s", (focus!=NULL ? focus->name : "<root>"));
windows.cc:2881:	if (focus) focus->focus (); else focus_root ();
windows.cc:2918:	//  pager->add (tmp); ?
windows.cc:2919:	tmp->next = first;
windows.cc:2928:		if (tmp->flags & TRANSIENT && findw (swindow, tmp->transient_for))
windows.cc:2929:			swindow->focus ();
windows.cc:2933:		first = tmp->next;
windows.cc:2936:		for (i=first; i->next; i=i->next)
windows.cc:2937:			if (i->next == tmp) {
windows.cc:2938:				i->next = tmp->next;
windows.cc:2953:	//  pager->rm (tmp); ?
windows.cc:2964:		first->done ();
windows.cc:2978:	for (SWindow *i = first; i; i=i->next) if (i->flags & KEEPONTOP) n += 2;
windows.cc:2981:	if (tmp && !(tmp->flags & KEEPONTOP)) n += 2;
windows.cc:2990:		for (ActiveArea *i = al.first; i; i=i->next) {
windows.cc:2991:			wins[j] = i->w;
windows.cc:2995:		for (SWindow *i = first; i; i=i->next) if (i->flags & KEEPONTOP) {
windows.cc:2996:			wins[j] = i->awin;
windows.cc:2997:			wins[j+1] = i->dwin->w;
windows.cc:3001:		if (tmp && !(tmp->flags & KEEPONTOP)) {
windows.cc:3002:			wins[j] = tmp->awin;
windows.cc:3003:			wins[j+1] = tmp->dwin->w;
windows.cc:3013:	// raise one - there should be an internal "ontop-stack"?
windows.cc:3018:	for (SWindow *i = first; i; i=i->next) if (i->flags & KEEPONTOP) n++;
windows.cc:3019:	if (tmp && !(tmp->flags & KEEPONTOP)) n++;
windows.cc:3027:		for (SWindow *i = first; i; i=i->next)
windows.cc:3028:			if (i->flags & KEEPONTOP) {
windows.cc:3029:				wins[j] = i->pager_view;
windows.cc:3033:		if (tmp && !(tmp->flags & KEEPONTOP))
windows.cc:3034:			wins[j] = tmp->pager_view;
windows.cc:3051:		s->dwin->draw ();
windows.cc:3053:		s->pager_view_draw ();
windows.cc:3059:	for (i = first; i; i = i->next)
windows.cc:3060:		if (i->pager_view == w)
windows.cc:3069:	for (i = first; i; i = i->next)
windows.cc:3070:		if (i->awin == w)
windows.cc:3080:	for (i = first; i; i = i->next)
windows.cc:3081:		if (i->dwin->w == w)
windows.cc:3108:	if (ws.bkg->pm) {
windows.cc:3110:		at.background_pixmap = ws.bkg->pm;
windows.cc:3118:		(dpy, root, (disp.wd - wd)/2, (disp.ht - ht)/2, wd, ht, 2,
windows.cc:3148:		int xo = (wd - XTextWidth (swm_font.font, s, strlen (s))) / 2;
windows.cc:3149:		int yo = (ht - swm_font.ht) / 2 + swm_font.y;
