From 4e28225348c06df88bcabcb76acb03cc598f773c Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Tue, 22 Jul 2025 21:49:31 +0200 Subject: [PATCH] fix key_pressed selection change --- mizunara/gtk-filesview.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/mizunara/gtk-filesview.c b/mizunara/gtk-filesview.c index 7326f2e..e6be860 100644 --- a/mizunara/gtk-filesview.c +++ b/mizunara/gtk-filesview.c @@ -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;inumitems;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;inumitems;i++) { + view->items[i].isselected = FALSE; + } + view->items[selected_index].isselected = TRUE; + view->selection_count = 1; } } -- 2.47.3