~kris/suckless

dmenu

ref: 9d8d4f833a3ef5bf008871084bb75eb7842376e3 dmenu/patch/multiselect.c -rw-r--r-- 704 bytes
9d8d4f83 — Kris Yotam Update patches config 5 months ago
                                                                                
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
static int
issel(size_t id)
{
	for (int i = 0;i < selidsize;i++)
		if (selid[i] == id)
			return 1;
	return 0;
}

static void
printselected(unsigned int state)
{
	for (int i = 0; i < selidsize; i++) {
		if (selid[i] != -1 && (!sel || sel->id != selid[i])) {
			printitem(&items[selid[i]]);
		}
	}

	printcurrent(state);
}

static void
selsel(void)
{
	if (!sel)
		return;
	if (issel(sel->id)) {
		for (int i = 0; i < selidsize; i++)
			if (selid[i] == sel->id)
				selid[i] = -1;
	} else {
		for (int i = 0; i < selidsize; i++)
			if (selid[i] == -1) {
				selid[i] = sel->id;
				return;
			}
		selidsize++;
		selid = realloc(selid, (selidsize + 1) * sizeof(int));
		selid[selidsize - 1] = sel->id;
	}
}