[gnumeric] Sameer Morar: Add key combinations to move sheets. [#634139]



commit 37aa581c39f0bf26c0bd83de9649140059ab2043
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date:   Fri Nov 5 20:53:02 2010 -0600

    Sameer Morar: Add key combinations to move sheets. [#634139]
    
    2010-11-05   Andreas J. Guelzow <aguelzow pyrshep ca>
    	for Sameer Morar <smorar gmail com>
    
    	* src/gnm-pane.c (gnm_pane_key_mode_sheet): Enable the key combinations
    	<control><shift>Page_Up and <control><shift>Page_Down to move the
    	currently selected sheet left or right respectively.  [#634139]

 ChangeLog      |    7 +++++++
 NEWS           |    3 +++
 src/gnm-pane.c |   36 ++++++++++++++++++++++++++++++------
 3 files changed, 40 insertions(+), 6 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 4401d5b..9470d5f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-11-05   Andreas J. Guelzow <aguelzow pyrshep ca>
+	for Sameer Morar <smorar gmail com>
+
+	* src/gnm-pane.c (gnm_pane_key_mode_sheet): Enable the key combinations
+	<control><shift>Page_Up and <control><shift>Page_Down to move the
+	currently selected sheet left or right respectively.  [#634139]
+
 2010-11-04  Morten Welinder  <terra gnome org>
 
 	* src/item-cursor.c (cb_autofill_scroll): Limit size of tooltip to
diff --git a/NEWS b/NEWS
index 60958c4..868bfe3 100644
--- a/NEWS
+++ b/NEWS
@@ -28,6 +28,9 @@ Morten:
 	* Fix analysis tools problems when "as values" is chosen.
 	* Fix gtk+/X crash with large tooltips.
 
+Sameer Morar:
+	* Add key combinations to move sheets. [#634139]
+
 --------------------------------------------------------------------------
 Gnumeric 1.10.11
 
diff --git a/src/gnm-pane.c b/src/gnm-pane.c
index ce14952..a0aca68 100644
--- a/src/gnm-pane.c
+++ b/src/gnm-pane.c
@@ -153,6 +153,8 @@ gnm_pane_key_mode_sheet (GnmPane *pane, GdkEventKey *event,
 	SheetView *sv = sc->view;
 	Sheet *sheet = sv->sheet;
 	WBCGtk *wbcg = scg->wbcg;
+	WorkbookControl * wbc = scg_wbc(scg);
+	Workbook * wb = wb_control_get_workbook(wbc);
 	gboolean delayed_movement = FALSE;
 	gboolean jump_to_bounds = event->state & GDK_CONTROL_MASK;
 	gboolean is_enter = FALSE;
@@ -261,9 +263,19 @@ gnm_pane_key_mode_sheet (GnmPane *pane, GdkEventKey *event,
 
 	case GDK_KP_Page_Up:
 	case GDK_Page_Up:
-		if ((event->state & GDK_CONTROL_MASK) != 0)
-			gnm_notebook_prev_page (wbcg->bnotebook);
-		else if ((event->state & GDK_MOD1_MASK) == 0) {
+		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 (wbcg->bnotebook);
+			}
+		} else if ((event->state & GDK_MOD1_MASK) == 0) {
 			delayed_movement = TRUE;
 			scg_queue_movement (scg, movefn,
 					    -(pane->last_visible.row - pane->first.row),
@@ -278,9 +290,21 @@ gnm_pane_key_mode_sheet (GnmPane *pane, GdkEventKey *event,
 
 	case GDK_KP_Page_Down:
 	case GDK_Page_Down:
-		if ((event->state & GDK_CONTROL_MASK) != 0)
-			gnm_notebook_next_page (wbcg->bnotebook);
-		else if ((event->state & GDK_MOD1_MASK) == 0) {
+
+		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 (wbcg->bnotebook);
+			}
+		} else if ((event->state & GDK_MOD1_MASK) == 0) {
 			delayed_movement = TRUE;
 			scg_queue_movement (scg, movefn,
 					    pane->last_visible.row - pane->first.row,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]