summaryrefslogtreecommitdiffhomepage
path: root/patch/bar_holdbar.c
blob: 4be9af193dff535d111932d92918a8bb33ffc26f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
void
holdbar(const Arg *arg)
{
	if (selmon->showbar)
		return;
	selmon->showbar = 2;
	updateholdbarpos(selmon);
	#if BAR_PADDING_PATCH
	XMoveResizeWindow(dpy, selmon->barwin, selmon->wx + sp, selmon->by + vp, selmon->ww -  2 * sp, bh);
	#else
	XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
	#endif // BAR_PADDING_PATCH
	#if BAR_EXTRABAR_PATCH
	#if BAR_PADDING_PATCH
	XMoveResizeWindow(dpy, selmon->extrabarwin, selmon->wx + sp, selmon->eby - vp, selmon->ww - 2 * sp, bh);
	#else
	XMoveResizeWindow(dpy, selmon->extrabarwin, selmon->wx, selmon->eby, selmon->ww, bh);
	#endif // BAR_PADDING_PATCH
	#endif // BAR_EXTRABAR_PATCH
}

void
keyrelease(XEvent *e)
{
	if (XEventsQueued(dpy, QueuedAfterReading)) {
		XEvent ne;
		XPeekEvent(dpy, &ne);

		if (ne.type == KeyPress && ne.xkey.time == e->xkey.time &&
				ne.xkey.keycode == e->xkey.keycode) {
			XNextEvent(dpy, &ne);
			return;
		}
	}
	if (e->xkey.keycode == XKeysymToKeycode(dpy, HOLDKEY) && selmon->showbar == 2) {
		selmon->showbar = 0;
		updateholdbarpos(selmon);
		#if BAR_PADDING_PATCH
		XMoveResizeWindow(dpy, selmon->barwin, selmon->wx + sp, selmon->by + vp, selmon->ww -  2 * sp, bh);
		#else
		XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
		#endif // BAR_PADDING_PATCH
		#if BAR_EXTRABAR_PATCH
		#if BAR_PADDING_PATCH
		XMoveResizeWindow(dpy, selmon->extrabarwin, selmon->wx + sp, selmon->eby - vp, selmon->ww - 2 * sp, bh);
		#else
		XMoveResizeWindow(dpy, selmon->extrabarwin, selmon->wx, selmon->eby, selmon->ww, bh);
		#endif // BAR_PADDING_PATCH
		#endif // BAR_EXTRABAR_PATCH
		arrange(selmon);
	}
	#if COMBO_PATCH
	combo = 0;
	#endif // COMBO_PATCH
}

void
updateholdbarpos(Monitor *m)
{
	m->wy = m->my;
	m->wh = m->mh;
	#if BAR_EXTRABAR_PATCH
	#if BAR_PADDING_PATCH
	m->wh = m->wh - vertpad * m->showbar * 2 - bh * m->showbar * 2;
	m->wy = m->showbar ? m->wy + bh + vertpad: m->wy;
	if (m->showbar) {
		m->by = m->topbar ? m->wy - bh - vertpad: m->wy + m->wh + vertpad;
		m->eby = m->topbar ? m->wy + m->wh + vertpad: m->wy - bh - vertpad;
	} else {
		m->by = -bh - vertpad;
		m->eby = -bh - vertpad;
	}
	#else
	m->wh = m->wh - bh * m->showbar * 2;
	m->wy = m->showbar ? m->wy + bh : m->wy;
	if (m->showbar) {
		m->by = m->topbar ? m->wy - bh : m->wy + m->wh;
		m->eby = m->topbar ? m->wy + m->wh : m->wy - bh;
	} else {
		m->by = -bh;
		m->eby = -bh;
	}
	#endif // BAR_PADDING_PATCH
	#elif BAR_PADDING_PATCH
	if (m->showbar) {
		m->wh = m->wh - vertpad - bh;
		m->by = m->topbar ? m->wy : m->wy + m->wh + vertpad;
		m->wy = m->topbar ? m->wy + bh + vp : m->wy;
	} else
		m->by = -bh - vp;
	#else
	if (m->showbar) {
		m->wh -= bh;
		m->by = m->topbar ? m->wy : m->wy + m->wh;
		m->wy = m->topbar ? m->wy + bh : m->wy;
	} else
		m->by = -bh;
	#endif // BAR_EXTRABAR_PATCH
}