]> uap-core.de Git - mizunara.git/commitdiff
fix key_pressed selection change
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 22 Jul 2025 19:49:31 +0000 (21:49 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 22 Jul 2025 19:49:31 +0000 (21:49 +0200)
mizunara/gtk-filesview.c

index 7326f2e6064bfb024aa6cd2eee320f0d67d88359..e6be860ac08c1eb3ac287f46eaf9bf7b41aa3093 100644 (file)
@@ -341,7 +341,7 @@ void mz_files_view_snapshot(GtkWidget *widget, GtkSnapshot *snapshot) {
                 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;
                 
@@ -702,19 +702,16 @@ static gboolean key_pressed(
     
     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;
                 }
             }
@@ -737,7 +734,13 @@ static gboolean key_pressed(
         
         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;
         }
     }