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 }