[gnumeric] Make Ctrl-PgUp and Ctrl-PgDn work on chart-only sheets. [#645673]
- From: Jean BrÃfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Make Ctrl-PgUp and Ctrl-PgDn work on chart-only sheets. [#645673]
- Date: Thu, 11 Aug 2011 13:27:31 +0000 (UTC)
commit fae563d8ba6ccd5c4fa99bb9e8d410d6722435a7
Author: Jean Brefort <jean brefort normalesup org>
Date: Thu Aug 11 15:31:56 2011 +0200
Make Ctrl-PgUp and Ctrl-PgDn work on chart-only sheets. [#645673]
ChangeLog | 6 +++++
NEWS | 1 +
src/sheet-control-gui.c | 55 +++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 60 insertions(+), 2 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 172c87f..ed39c57 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-08-11 Jean Brefort <jean brefort normalesup org>
+
+ * src/sheet-control-gui.c (sheet_object_key_pressed),
+ (sheet_control_gui_new), (scg_take_focus): make Ctrl-PgUp and Ctrl-PgDn
+ work on chart-only sheets. [#645673]
+
2011-08-07 Jean Brefort <jean brefort normalesup org>
* src/graph.c (gnm_go_data_scalar_get_markup): don't leak a format and
diff --git a/NEWS b/NEWS
index 4fb25bd..6612e3c 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,7 @@ Andreas:
Jean:
* Make things build against gtk+-3.0.
+ * Make Ctrl-PgUp and Ctrl-PgDn work on chart-only sheets. [#645673]
--------------------------------------------------------------------------
Gnumeric 1.10.17
diff --git a/src/sheet-control-gui.c b/src/sheet-control-gui.c
index 3f67d40..6db34c5 100644
--- a/src/sheet-control-gui.c
+++ b/src/sheet-control-gui.c
@@ -1420,6 +1420,53 @@ post_create_cb (SheetControlGUI *scg)
return FALSE;
}
+static gboolean
+sheet_object_key_pressed (GtkWidget *w, GdkEventKey *event, SheetControlGUI *scg)
+{
+ Sheet *sheet = scg_sheet (scg);
+ WorkbookControl * wbc = scg_wbc(scg);
+ Workbook * wb = wb_control_get_workbook(wbc);
+ switch (event->keyval) {
+ case GDK_KEY_KP_Page_Up:
+ case GDK_KEY_Page_Up:
+ if ((event->state & GDK_CONTROL_MASK) != 0){
+ if ((event->state & GDK_SHIFT_MASK) != 0){
+ WorkbookSheetState * old_state = workbook_sheet_state_new(wb);
+ int old_pos = sheet->index_in_wb;
+
+ if (old_pos > 0){
+ workbook_sheet_move(sheet, -1);
+ cmd_reorganize_sheets (wbc, old_state, sheet);
+ }
+ } else {
+ gnm_notebook_prev_page (scg->wbcg->bnotebook);
+ }
+ return FALSE;
+ }
+ break;
+ case GDK_KEY_KP_Page_Down:
+ case GDK_KEY_Page_Down:
+
+ if ((event->state & GDK_CONTROL_MASK) != 0){
+ if ((event->state & GDK_SHIFT_MASK) != 0){
+ WorkbookSheetState * old_state = workbook_sheet_state_new(wb);
+ int num_sheets = workbook_sheet_count(wb);
+ gint old_pos = sheet->index_in_wb;
+
+ if (old_pos < num_sheets - 1){
+ workbook_sheet_move(sheet, 1);
+ cmd_reorganize_sheets (wbc, old_state, sheet);
+ }
+ } else {
+ gnm_notebook_next_page (scg->wbcg->bnotebook);
+ }
+ return FALSE;
+ }
+ break;
+ }
+ return TRUE;
+}
+
SheetControlGUI *
sheet_control_gui_new (SheetView *sv, WBCGtk *wbcg)
{
@@ -1612,10 +1659,13 @@ sheet_control_gui_new (SheetView *sv, WBCGtk *wbcg)
GTK_EXPAND | GTK_FILL | GTK_SHRINK,
GTK_EXPAND | GTK_FILL | GTK_SHRINK,
0, 0);
+ gtk_widget_set_can_focus (scg->vs, TRUE);
+ gtk_widget_set_can_default (scg->vs, TRUE);
+ g_signal_connect (G_OBJECT (scg->vs), "key-press-event",
+ G_CALLBACK (sheet_object_key_pressed), scg);
}
#warning GTK3: we used GtkStyle::white there */
gtk_widget_override_background_color (scg->vs, GTK_STATE_NORMAL, &gs_white);
-
sv_attach_control (sv, SHEET_CONTROL (scg));
g_object_set_data (G_OBJECT (scg->vs), "sheet-control", scg);
if (sheet->sheet_objects) {
@@ -3441,7 +3491,8 @@ scg_take_focus (SheetControlGUI *scg)
/* FIXME: Slightly hackish. */
if (wbcg_toplevel (scg->wbcg))
gtk_window_set_focus (wbcg_toplevel (scg->wbcg),
- GTK_WIDGET (scg_pane (scg, 0)));
+ (scg_sheet (scg)->sheet_type == GNM_SHEET_OBJECT)?
+ GTK_WIDGET (scg->vs): GTK_WIDGET (scg_pane (scg, 0)));
}
/*********************************************************************************/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]