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);