diff options
author | Ettore Perazzoli <ettore@src.gnome.org> | 2001-09-26 05:24:22 +0800 |
---|---|---|
committer | Ettore Perazzoli <ettore@src.gnome.org> | 2001-09-26 05:24:22 +0800 |
commit | 650c4690b2040f83c032b67a271b996f876fdc50 (patch) | |
tree | 0261f48453ee539fca02031f81d67943d4608960 /widgets/misc | |
parent | a413337c28972fc703e73b90dd23b076f4857560 (diff) | |
download | gsoc2013-evolution-650c4690b2040f83c032b67a271b996f876fdc50.tar gsoc2013-evolution-650c4690b2040f83c032b67a271b996f876fdc50.tar.gz gsoc2013-evolution-650c4690b2040f83c032b67a271b996f876fdc50.tar.bz2 gsoc2013-evolution-650c4690b2040f83c032b67a271b996f876fdc50.tar.lz gsoc2013-evolution-650c4690b2040f83c032b67a271b996f876fdc50.tar.xz gsoc2013-evolution-650c4690b2040f83c032b67a271b996f876fdc50.tar.zst gsoc2013-evolution-650c4690b2040f83c032b67a271b996f876fdc50.zip |
Commit patch from Chris to implement e_tree_right_click_up() for
correct right-click behavior in single selection mode.
svn path=/trunk/; revision=13123
Diffstat (limited to 'widgets/misc')
-rw-r--r-- | widgets/misc/e-selection-model.c | 31 | ||||
-rw-r--r-- | widgets/misc/e-selection-model.h | 8 |
2 files changed, 38 insertions, 1 deletions
diff --git a/widgets/misc/e-selection-model.c b/widgets/misc/e-selection-model.c index 3fd28a7db2..e8b19fc618 100644 --- a/widgets/misc/e-selection-model.c +++ b/widgets/misc/e-selection-model.c @@ -117,6 +117,7 @@ e_selection_model_init (ESelectionModel *selection) { selection->mode = GTK_SELECTION_MULTIPLE; selection->cursor_mode = E_CURSOR_SIMPLE; + selection->old_selection = -1; } static void @@ -376,6 +377,8 @@ e_selection_model_do_something (ESelectionModel *selection, gint ctrl_p = state & GDK_CONTROL_MASK; int row_count; + selection->old_selection = -1; + if (row == -1 && col != -1) row = 0; if (col == -1 && row != -1) @@ -428,6 +431,8 @@ e_selection_model_maybe_do_something (ESelectionModel *selection, guint col, GdkModifierType state) { + selection->old_selection = -1; + if (e_selection_model_is_row_selected(selection, row)) { e_selection_model_change_cursor(selection, row, col); gtk_signal_emit(GTK_OBJECT(selection), @@ -440,6 +445,28 @@ e_selection_model_maybe_do_something (ESelectionModel *selection, } 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); + } +} + +void +e_selection_model_right_click_up (ESelectionModel *selection) +{ + if (selection->mode == GTK_SELECTION_SINGLE && selection->old_selection != -1) { + e_selection_model_select_single_row (selection, selection->old_selection); + } +} + +void e_selection_model_select_as_key_press (ESelectionModel *selection, guint row, guint col, @@ -450,6 +477,8 @@ e_selection_model_select_as_key_press (ESelectionModel *selection, gint shift_p = state & GDK_SHIFT_MASK; gint ctrl_p = state & GDK_CONTROL_MASK; + selection->old_selection = -1; + switch (selection->mode) { case GTK_SELECTION_BROWSE: if (shift_p) { @@ -514,6 +543,8 @@ gint e_selection_model_key_press (ESelectionModel *selection, GdkEventKey *key) { + selection->old_selection = -1; + switch (key->keyval) { case GDK_Up: case GDK_KP_Up: diff --git a/widgets/misc/e-selection-model.h b/widgets/misc/e-selection-model.h index 6ab5db9ee6..7282357abd 100644 --- a/widgets/misc/e-selection-model.h +++ b/widgets/misc/e-selection-model.h @@ -36,6 +36,8 @@ typedef struct { GtkSelectionMode mode; ECursorMode cursor_mode; + + int old_selection; } ESelectionModel; typedef struct { @@ -70,7 +72,6 @@ typedef struct { void (*selection_changed) (ESelectionModel *esm); } ESelectionModelClass; - GtkType e_selection_model_get_type (void); void e_selection_model_do_something (ESelectionModel *esm, guint row, @@ -80,6 +81,11 @@ gboolean e_selection_model_maybe_do_something (ESelectionModel *esm, guint row, guint col, GdkModifierType state); +void e_selection_model_right_click_down (ESelectionModel *selection, + guint row, + guint col, + GdkModifierType state); +void e_selection_model_right_click_up (ESelectionModel *selection); gint e_selection_model_key_press (ESelectionModel *esm, GdkEventKey *key); void e_selection_model_select_as_key_press (ESelectionModel *esm, |