void e_selection_model_right_click_down (ESelectionModel *selection, guint row, guint col, GdkModifierType state) { if (selection->mode == GTK_SELECTION_SINGLE) { selection->old_selection = e_selection_model_cursor_row (selection); e_selection_model_select_single_row (selection, row); } else { e_selection_model_maybe_do_something (selection, row, col, state); } }
static int e_reflow_selection_event_real (EReflow *reflow, GnomeCanvasItem *item, GdkEvent *event) { int row; int return_val = TRUE; switch (event->type) { case GDK_BUTTON_PRESS: switch (event->button.button) { case 1: /* Fall through. */ case 2: row = er_find_item (reflow, item); if (event->button.button == 1) { reflow->maybe_did_something = e_selection_model_maybe_do_something(reflow->selection, row, 0, event->button.state); reflow->maybe_in_drag = TRUE; } else { e_selection_model_do_something(reflow->selection, row, 0, event->button.state); } break; case 3: row = er_find_item (reflow, item); e_selection_model_right_click_down(reflow->selection, row, 0, 0); break; default: return_val = FALSE; break; } break; case GDK_BUTTON_RELEASE: if (event->button.button == 1) { if (reflow->maybe_in_drag) { reflow->maybe_in_drag = FALSE; if (!reflow->maybe_did_something) { row = er_find_item (reflow, item); e_selection_model_do_something(reflow->selection, row, 0, event->button.state); } } } break; case GDK_KEY_PRESS: return_val = e_selection_model_key_press(reflow->selection, (GdkEventKey *) event); break; default: return_val = FALSE; break; } return return_val; }
static gint e_minicard_view_selection_event (EReflow *reflow, GnomeCanvasItem *item, GdkEvent *event) { EMinicardView *view; gint return_val = FALSE; view = E_MINICARD_VIEW (reflow); return_val = E_REFLOW_CLASS (e_minicard_view_parent_class)-> selection_event (reflow, item, event); switch (event->type) { case GDK_FOCUS_CHANGE: if (event->focus_change.in) { gint i; for (i = 0; i < reflow->count; i++) { if (reflow->items[i] == item) { e_selection_model_maybe_do_something (reflow->selection, i, 0, 0); break; } } } break; case GDK_BUTTON_PRESS: if (event->button.button == 3) { return_val = e_minicard_view_right_click (view, event); if (!return_val) e_selection_model_right_click_up (reflow->selection); } break; default: break; } return return_val; }