dmenu

Kris's build of dmenu
git clone git clone https://git.krisyotam.com/krisyotam/dmenu.git
Log | Files | Refs | README | LICENSE

multiselect.c (704B)


      1 static int
      2 issel(size_t id)
      3 {
      4 	for (int i = 0;i < selidsize;i++)
      5 		if (selid[i] == id)
      6 			return 1;
      7 	return 0;
      8 }
      9 
     10 static void
     11 printselected(unsigned int state)
     12 {
     13 	for (int i = 0; i < selidsize; i++) {
     14 		if (selid[i] != -1 && (!sel || sel->id != selid[i])) {
     15 			printitem(&items[selid[i]]);
     16 		}
     17 	}
     18 
     19 	printcurrent(state);
     20 }
     21 
     22 static void
     23 selsel(void)
     24 {
     25 	if (!sel)
     26 		return;
     27 	if (issel(sel->id)) {
     28 		for (int i = 0; i < selidsize; i++)
     29 			if (selid[i] == sel->id)
     30 				selid[i] = -1;
     31 	} else {
     32 		for (int i = 0; i < selidsize; i++)
     33 			if (selid[i] == -1) {
     34 				selid[i] = sel->id;
     35 				return;
     36 			}
     37 		selidsize++;
     38 		selid = realloc(selid, (selidsize + 1) * sizeof(int));
     39 		selid[selidsize - 1] = sel->id;
     40 	}
     41 }