diff options
author | Christopher James Lahey <clahey@ximian.com> | 2001-07-11 18:30:51 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2001-07-11 18:30:51 +0800 |
commit | 7b9622f8e072a98ae8dcf449347a6d6383ba4cea (patch) | |
tree | bb548bb2265e68b8e378fe0f7482b96c41b392fa /widgets/misc | |
parent | 0a71e607b1840e9e984337a02d09f88c750f7359 (diff) | |
download | gsoc2013-evolution-7b9622f8e072a98ae8dcf449347a6d6383ba4cea.tar gsoc2013-evolution-7b9622f8e072a98ae8dcf449347a6d6383ba4cea.tar.gz gsoc2013-evolution-7b9622f8e072a98ae8dcf449347a6d6383ba4cea.tar.bz2 gsoc2013-evolution-7b9622f8e072a98ae8dcf449347a6d6383ba4cea.tar.lz gsoc2013-evolution-7b9622f8e072a98ae8dcf449347a6d6383ba4cea.tar.xz gsoc2013-evolution-7b9622f8e072a98ae8dcf449347a6d6383ba4cea.tar.zst gsoc2013-evolution-7b9622f8e072a98ae8dcf449347a6d6383ba4cea.zip |
Created this function for key presses that move in some way other than
2001-07-11 Christopher James Lahey <clahey@ximian.com>
* gal/widgets/e-selection-model.c, gal/widgets/e-selection-model.h
(e_selection_model_select_as_key_press): Created this function for
key presses that move in some way other than just to the next or
previous row.
(e_selection_model_key_press): Use
e_selection_model_select_as_key_press for handling home and end
here.
svn path=/trunk/; revision=10993
Diffstat (limited to 'widgets/misc')
-rw-r--r-- | widgets/misc/e-selection-model.c | 64 | ||||
-rw-r--r-- | widgets/misc/e-selection-model.h | 94 |
2 files changed, 80 insertions, 78 deletions
diff --git a/widgets/misc/e-selection-model.c b/widgets/misc/e-selection-model.c index 8734bd58ad..5b53619519 100644 --- a/widgets/misc/e-selection-model.c +++ b/widgets/misc/e-selection-model.c @@ -434,31 +434,17 @@ e_selection_model_maybe_do_something (ESelectionModel *selection, } } -static gint -move_selection (ESelectionModel *selection, - gboolean up, - GdkModifierType state) +void +e_selection_model_select_as_key_press (ESelectionModel *selection, + guint row, + guint col, + GdkModifierType state) { - int row = e_selection_model_cursor_row(selection); - int col = e_selection_model_cursor_col(selection); int cursor_activated = TRUE; - int row_count; gint shift_p = state & GDK_SHIFT_MASK; gint ctrl_p = state & GDK_CONTROL_MASK; - row = e_sorter_model_to_sorted(selection->sorter, row); - if (up) - row--; - else - row++; - if (row < 0) - row = 0; - row_count = e_selection_model_row_count(selection); - if (row >= row_count) - row = row_count - 1; - row = e_sorter_sorted_to_model(selection->sorter, row); - switch (selection->mode) { case GTK_SELECTION_BROWSE: if (shift_p) { @@ -482,6 +468,30 @@ move_selection (ESelectionModel *selection, gtk_signal_emit(GTK_OBJECT(selection), e_selection_model_signals[CURSOR_ACTIVATED], row, col); } +} + +static gint +move_selection (ESelectionModel *selection, + gboolean up, + GdkModifierType state) +{ + int row = e_selection_model_cursor_row(selection); + int col = e_selection_model_cursor_col(selection); + int row_count; + + row = e_sorter_model_to_sorted(selection->sorter, row); + if (up) + row--; + else + row++; + if (row < 0) + row = 0; + row_count = e_selection_model_row_count(selection); + if (row >= row_count) + row = row_count - 1; + row = e_sorter_sorted_to_model(selection->sorter, row); + + e_selection_model_select_as_key_press (selection, row, col, state); return TRUE; } @@ -535,13 +545,7 @@ e_selection_model_key_press (ESelectionModel *selection, int cursor_col = e_selection_model_cursor_col(selection); row = e_sorter_sorted_to_model(selection->sorter, row); - e_selection_model_change_cursor(selection, row, cursor_col); - - e_selection_model_select_single_row (selection, row); - gtk_signal_emit(GTK_OBJECT(selection), - e_selection_model_signals[CURSOR_CHANGED], row, cursor_col); - gtk_signal_emit(GTK_OBJECT(selection), - e_selection_model_signals[CURSOR_ACTIVATED], row, cursor_col); + e_selection_model_select_as_key_press (selection, row, cursor_col, key->state); return TRUE; } break; @@ -552,13 +556,7 @@ e_selection_model_key_press (ESelectionModel *selection, int cursor_col = e_selection_model_cursor_col(selection); row = e_sorter_sorted_to_model(selection->sorter, row); - e_selection_model_change_cursor(selection, row, cursor_col); - - e_selection_model_select_single_row (selection, row); - gtk_signal_emit(GTK_OBJECT(selection), - e_selection_model_signals[CURSOR_CHANGED], row, cursor_col); - gtk_signal_emit(GTK_OBJECT(selection), - e_selection_model_signals[CURSOR_ACTIVATED], row, cursor_col); + e_selection_model_select_as_key_press (selection, row, cursor_col, key->state); return TRUE; } break; diff --git a/widgets/misc/e-selection-model.h b/widgets/misc/e-selection-model.h index cdd161f96a..f83d2631eb 100644 --- a/widgets/misc/e-selection-model.h +++ b/widgets/misc/e-selection-model.h @@ -71,58 +71,61 @@ typedef struct { } ESelectionModelClass; - -GtkType e_selection_model_get_type (void); -void e_selection_model_do_something (ESelectionModel *esm, - guint row, - guint col, - GdkModifierType state); -void e_selection_model_maybe_do_something (ESelectionModel *esm, - guint row, - guint col, - GdkModifierType state); -gint e_selection_model_key_press (ESelectionModel *esm, - GdkEventKey *key); +GtkType e_selection_model_get_type (void); +void e_selection_model_do_something (ESelectionModel *esm, + guint row, + guint col, + GdkModifierType state); +void e_selection_model_maybe_do_something (ESelectionModel *esm, + guint row, + guint col, + GdkModifierType state); +gint e_selection_model_key_press (ESelectionModel *esm, + GdkEventKey *key); +void e_selection_model_select_as_key_press (ESelectionModel *esm, + guint row, + guint col, + GdkModifierType state); /* Virtual functions */ -gboolean e_selection_model_is_row_selected (ESelectionModel *esm, - gint n); -void e_selection_model_foreach (ESelectionModel *esm, - EForeachFunc callback, - gpointer closure); -void e_selection_model_clear (ESelectionModel *esm); -gint e_selection_model_selected_count (ESelectionModel *esm); -void e_selection_model_select_all (ESelectionModel *esm); -void e_selection_model_invert_selection (ESelectionModel *esm); -int e_selection_model_row_count (ESelectionModel *esm); +gboolean e_selection_model_is_row_selected (ESelectionModel *esm, + gint n); +void e_selection_model_foreach (ESelectionModel *esm, + EForeachFunc callback, + gpointer closure); +void e_selection_model_clear (ESelectionModel *esm); +gint e_selection_model_selected_count (ESelectionModel *esm); +void e_selection_model_select_all (ESelectionModel *esm); +void e_selection_model_invert_selection (ESelectionModel *esm); +int e_selection_model_row_count (ESelectionModel *esm); /* Private virtual Functions */ -void e_selection_model_change_one_row (ESelectionModel *esm, - int row, - gboolean on); -void e_selection_model_change_cursor (ESelectionModel *esm, - int row, - int col); -int e_selection_model_cursor_row (ESelectionModel *esm); -int e_selection_model_cursor_col (ESelectionModel *esm); -void e_selection_model_select_single_row (ESelectionModel *selection, - int row); -void e_selection_model_toggle_single_row (ESelectionModel *selection, - int row); -void e_selection_model_move_selection_end (ESelectionModel *selection, - int row); -void e_selection_model_set_selection_end (ESelectionModel *selection, - int row); +void e_selection_model_change_one_row (ESelectionModel *esm, + int row, + gboolean on); +void e_selection_model_change_cursor (ESelectionModel *esm, + int row, + int col); +int e_selection_model_cursor_row (ESelectionModel *esm); +int e_selection_model_cursor_col (ESelectionModel *esm); +void e_selection_model_select_single_row (ESelectionModel *selection, + int row); +void e_selection_model_toggle_single_row (ESelectionModel *selection, + int row); +void e_selection_model_move_selection_end (ESelectionModel *selection, + int row); +void e_selection_model_set_selection_end (ESelectionModel *selection, + int row); /* Signals */ -void e_selection_model_cursor_changed (ESelectionModel *selection, - int row, - int col); -void e_selection_model_cursor_activated (ESelectionModel *selection, - int row, - int col); -void e_selection_model_selection_changed (ESelectionModel *selection); +void e_selection_model_cursor_changed (ESelectionModel *selection, + int row, + int col); +void e_selection_model_cursor_activated (ESelectionModel *selection, + int row, + int col); +void e_selection_model_selection_changed (ESelectionModel *selection); #ifdef __cplusplus } @@ -130,3 +133,4 @@ void e_selection_model_selection_changed (ESelectionModel *selection); #endif /* _E_SELECTION_MODEL_H_ */ + |