From 9bec27cb0473c4e0545f33cb18ae794b84e8b2bb Mon Sep 17 00:00:00 2001 From: Andrew Borodin Date: Tue, 5 Jun 2012 21:26:32 +0400 Subject: [PATCH] Ticket #2817: fixes of mouse handling in file manager. Signed-off-by: Andrew Borodin --- src/filemanager/midnight.c | 8 +++++--- src/filemanager/panel.c | 10 +++++----- src/filemanager/tree.c | 6 +++--- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/filemanager/midnight.c b/src/filemanager/midnight.c index 95205e939..ccfe7c180 100644 --- a/src/filemanager/midnight.c +++ b/src/filemanager/midnight.c @@ -1597,19 +1597,21 @@ midnight_event (Gpm_Event *event, void *data) if (event->y == h->y + 1) { /* menubar */ - if (menubar_visible) + if (menubar_visible || the_menubar->is_active) ret = ((Widget *) the_menubar)->mouse (event, the_menubar); else { Widget *w; w = get_panel_widget (0); - ret = w->mouse (event, w); + if (w->mouse != NULL) + ret = w->mouse (event, w); if (ret == MOU_UNHANDLED) { w = get_panel_widget (1); - ret = w->mouse (event, w); + if (w->mouse != NULL) + ret = w->mouse (event, w); } if (ret == MOU_UNHANDLED) diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c index 9e36e3195..21432855e 100644 --- a/src/filemanager/panel.c +++ b/src/filemanager/panel.c @@ -3554,24 +3554,24 @@ panel_event (Gpm_Event * event, void *data) local = mouse_get_local (event, w); /* 1st line */ - if (mouse_down && local.y == 1) + if (local.y == 1) { /* "<" button */ - if (local.x == 2) + if (mouse_down && local.x == 2) { directory_history_prev (panel); goto finish; } /* ">" button */ - if (local.x == w->cols - 1) + if (mouse_down && local.x == w->cols - 1) { directory_history_next (panel); goto finish; } /* "^" button */ - if (local.x >= w->cols - 4 && local.x <= w->cols - 2) + if (mouse_down && local.x >= w->cols - 4 && local.x <= w->cols - 2) { directory_history_list (panel); /* both panels have been redrawn */ @@ -3579,7 +3579,7 @@ panel_event (Gpm_Event * event, void *data) } /* "." button show/hide hidden files */ - if (local.x == w->cols - 5) + if (mouse_down && local.x == w->cols - 5) { midnight_dlg->callback (midnight_dlg, NULL, DLG_ACTION, CK_ShowHidden, NULL); /* both panels have been updated */ diff --git a/src/filemanager/tree.c b/src/filemanager/tree.c index d8aff2e39..ebfc88b88 100644 --- a/src/filemanager/tree.c +++ b/src/filemanager/tree.c @@ -636,11 +636,11 @@ tree_event (Gpm_Event * event, void *data) Widget *w = (Widget *) data; Gpm_Event local; - /* rest of the upper frame - call menu */ - if (tree->is_panel && (event->type & GPM_DOWN) != 0 && event->y == w->owner->y + 1) + if (!mouse_global_in_widget (event, w)) return MOU_UNHANDLED; - if (!mouse_global_in_widget (event, w)) + /* rest of the upper frame - call menu */ + if (tree->is_panel && (event->type & GPM_DOWN) != 0 && event->y == w->owner->y + 1) return MOU_UNHANDLED; local = mouse_get_local (event, w); -- 2.11.4.GIT