From 2ccc6c56eebbfb66f3274087d608986a0cc31a2b Mon Sep 17 00:00:00 2001
From: Andreas Mohr <and@gmx.li>
Date: Wed, 7 Dec 2016 12:16:17 +0000
Subject: [PATCH] Prevent execute last item on empty area
As pointed out by egmont (#3722) prevent execute of last item when
clicking on empty area by accident.
V2: handle brief mode
Signed-off-by: Andreas Mohr <and@gmx.li>
---
src/filemanager/panel.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index a1b474b..e586915 100644
a
|
b
|
panel_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) |
3906 | 3906 | case MSG_MOUSE_CLICK: |
3907 | 3907 | if ((event->count & GPM_DOUBLE) != 0) |
3908 | 3908 | { |
3909 | | int y, lines; |
| 3909 | int top_file = panel->top_file; |
| 3910 | int left_border_pos = 0; |
3910 | 3911 | |
3911 | | y = event->y - 2; |
3912 | | lines = panel_lines (panel); |
| 3912 | /* compute top_file/left_border_pos for brief mode */ |
| 3913 | if (panel->list_type == list_brief && panel->list_cols > 1) |
| 3914 | { |
| 3915 | int width, cur_col; |
| 3916 | |
| 3917 | width = (w->cols - 2) / panel->list_cols; |
| 3918 | cur_col = event->x / width; |
| 3919 | top_file = cur_col * panel_lines (panel) + panel->top_file; |
| 3920 | left_border_pos = cur_col * width; |
| 3921 | } |
3913 | 3922 | |
3914 | | if (y >= 0 && y < lines) |
| 3923 | /* ignore left border */ |
| 3924 | if (event->x > left_border_pos && |
| 3925 | /* ignore right border */ |
| 3926 | event->x < w->cols - 1 && |
| 3927 | /* ignore top border */ |
| 3928 | event->y > 1 && |
| 3929 | /* ignore bottom empty area */ |
| 3930 | event->y < panel->dir.len - top_file + 2) |
3915 | 3931 | do_enter (panel); |
3916 | 3932 | } |
3917 | 3933 | break; |