view->items[i].isselected = 0;
}
- if(view->items[i].isselected) {
+ if(view->items[i].isselected) {
highlight_rect.origin.x = base_x + highlight_rect_offset_x;
highlight_rect.origin.y = base_y + highlight_rect_offset_y;
if(view->selection_count == 0) {
view->items[0].isselected = TRUE;
+ view->selection_count = 1;
} else {
- // find first selection and unselect everything else
- size_t selx = -1;
- size_t sely = -1;
- size_t selcount = view->selection_count;
+ // find first selection
+ ssize_t selx = -1;
+ ssize_t sely = -1;
for(size_t i=0;i<view->numitems;i++) {
if(view->items[i].isselected) {
if(selx == -1) {
selx = i % view->current_items_per_line;
sely = i / view->current_items_per_line;
- }
- view->items[i].isselected = FALSE;
- if(--selcount == 0) {
break;
}
}
size_t selected_index = sely * view->current_items_per_line + selx;
if(selected_index < view->numitems) {
+ // unselect all
+ for(size_t i=0;i<view->numitems;i++) {
+ view->items[i].isselected = FALSE;
+ }
+
view->items[selected_index].isselected = TRUE;
+ view->selection_count = 1;
}
}