static void tree_start_search (WTree * tree) { gboolean i; if (tree->searching) { if (tree->selected_ptr == tree->store->tree_last) tree_move_to_top (tree); else { /* set navigation mode temporarily to 'Static' because in * dynamic navigation mode tree_move_forward will not move * to a lower sublevel if necessary (sequent searches must * start with the directory followed the last found directory) */ i = tree_navigation_flag; tree_navigation_flag = 0; tree_move_forward (tree, 1); tree_navigation_flag = i; } tree_do_search (tree, 0); } else { tree->searching = 1; tree->search_buffer[0] = 0; } }
static inline void tree_move_down (WTree * tree) { tree_move_forward (tree, 1); show_tree (tree); maybe_chdir (tree); }
static void tree_move_pgdn (WTree * tree) { tree_move_forward (tree, tlines (tree) - 1); show_tree (tree); maybe_chdir (tree); }
/* Mouse callback */ static int event_callback (Gpm_Event *event, void *data) { WTree *tree = data; if (!(event->type & GPM_UP)) return MOU_NORMAL; if (tree->is_panel) event->y--; event->y--; if (!tree->active) change_panel (); if (event->y < 0){ tree_move_backward (tree, tlines (tree) - 1); show_tree (tree); } else if (event->y >= tlines (tree)){ tree_move_forward (tree, tlines (tree) - 1); show_tree (tree); } else { tree_event (tree, event->y); if ((event->type & (GPM_UP|GPM_DOUBLE)) == (GPM_UP|GPM_DOUBLE)){ chdir_sel (tree); } } return MOU_NORMAL; }
static int tree_event (Gpm_Event * event, void *data) { WTree *tree = (WTree *) data; Widget *w = WIDGET (data); Gpm_Event local; if (!mouse_global_in_widget (event, w)) return MOU_UNHANDLED; /* rest of the upper frame - call menu */ if (tree->is_panel && (event->type & GPM_DOWN) != 0 && event->y == WIDGET (w->owner)->y + 1) return MOU_UNHANDLED; local = mouse_get_local (event, w); if ((local.type & GPM_UP) == 0) return MOU_NORMAL; if (tree->is_panel) local.y--; local.y--; if (!tree->active) change_panel (); if (local.y < 0) { tree_move_backward (tree, tlines (tree) - 1); show_tree (tree); } else if (local.y >= tlines (tree)) { tree_move_forward (tree, tlines (tree) - 1); show_tree (tree); } else if ((local.type & (GPM_UP | GPM_DOUBLE)) == (GPM_UP | GPM_DOUBLE)) { if (tree->tree_shown[local.y] != NULL) { tree->selected_ptr = tree->tree_shown[local.y]; tree->topdiff = local.y; } tree_chdir_sel (tree); } return MOU_NORMAL; }
static int tree_event (Gpm_Event * event, void *data) { WTree *tree = (WTree *) data; Widget *w = (Widget *) data; Gpm_Event local; if (!mouse_global_in_widget (event, w)) return MOU_UNHANDLED; local = mouse_get_local (event, w); /* rest of the upper frame, the menu is invisible - call menu */ if (tree->is_panel && (local.type & GPM_DOWN) != 0 && local.y == 1 && !menubar_visible) return the_menubar->widget.mouse (event, the_menubar); if ((local.type & GPM_UP) == 0) return MOU_NORMAL; if (tree->is_panel) local.y--; local.y--; if (!tree->active) change_panel (); if (local.y < 0) { tree_move_backward (tree, tlines (tree) - 1); show_tree (tree); } else if (local.y >= tlines (tree)) { tree_move_forward (tree, tlines (tree) - 1); show_tree (tree); } else { tree_mouse_click (tree, local.y); if ((local.type & (GPM_UP | GPM_DOUBLE)) == (GPM_UP | GPM_DOUBLE)) tree_chdir_sel (tree); } return MOU_NORMAL; }
/* Mouse callback */ static int event_callback (Gpm_Event *event, void *data) { WTree *tree = data; /* rest of the upper frame, the menu is invisible - call menu */ if (tree->is_panel && (event->type & GPM_DOWN) && event->y == 1 && !menubar_visible) { event->x += tree->widget.x; return the_menubar->widget.mouse (event, the_menubar); } if (!(event->type & GPM_UP)) return MOU_NORMAL; if (tree->is_panel) event->y--; event->y--; if (!tree->active) change_panel (); if (event->y < 0){ tree_move_backward (tree, tlines (tree) - 1); show_tree (tree); } else if (event->y >= tlines (tree)){ tree_move_forward (tree, tlines (tree) - 1); show_tree (tree); } else { tree_event (tree, event->y); if ((event->type & (GPM_UP|GPM_DOUBLE)) == (GPM_UP|GPM_DOUBLE)){ chdir_sel (tree); } } return MOU_NORMAL; }
/** * Mouse callback */ static void tree_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) { WTree *tree = (WTree *) w; int y; y = event->y; if (tree->is_panel) y--; switch (msg) { case MSG_MOUSE_DOWN: /* rest of the upper frame - call menu */ if (tree->is_panel && event->y == WIDGET (w->owner)->y) { /* return MOU_UNHANDLED */ event->result.abort = TRUE; } else if (!widget_get_state (w, WST_FOCUSED)) change_panel (); break; case MSG_MOUSE_CLICK: { int lines; lines = tlines (tree); if (y < 0) { tree_move_backward (tree, lines - 1); show_tree (tree); } else if (y >= lines) { tree_move_forward (tree, lines - 1); show_tree (tree); } else if ((event->count & GPM_DOUBLE) != 0) { if (tree->tree_shown[y] != NULL) { tree->selected_ptr = tree->tree_shown[y]; tree->topdiff = y; } tree_chdir_sel (tree); } } break; case MSG_MOUSE_SCROLL_UP: case MSG_MOUSE_SCROLL_DOWN: /* TODO: Ticket #2218 */ break; default: break; } }