[gnumeric] another fix to a difffernet aspect of #687188



commit 3b42f51ab942fae50c77ee189935e9551efbe6df
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date:   Mon Nov 5 12:52:25 2012 -0700

    another fix to a difffernet aspect of #687188
    
    2012-11-04  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* dialog-sheet-resize.c (cb_ok_clicked): fix sheet focus after resizing.
    	[#687188]

 src/dialogs/ChangeLog             |    5 ++++
 src/dialogs/dialog-sheet-resize.c |   48 ++++++++++++++++++++++--------------
 2 files changed, 34 insertions(+), 19 deletions(-)
---
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index e4da920..8005e74 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,3 +1,8 @@
+2012-11-04  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+	* dialog-sheet-resize.c (cb_ok_clicked): fix sheet focus after resizing.
+	[#687188]
+
 2012-11-04  Jean Brefort  <jean brefort normalesup org>
 
 	* dialog-sheet-resize.c (cb_ok_clicked): fix sheet focus after resizing.
diff --git a/src/dialogs/dialog-sheet-resize.c b/src/dialogs/dialog-sheet-resize.c
index 461616c..ee14e40 100644
--- a/src/dialogs/dialog-sheet-resize.c
+++ b/src/dialogs/dialog-sheet-resize.c
@@ -1,3 +1,4 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * dialog-sheet-resize.c: Dialog to resize current or all sheets.
  *
@@ -111,34 +112,43 @@ cb_ok_clicked (ResizeState *state)
 	Workbook *wb;
 	gboolean all_sheets;
 	int cols, rows;
-	Sheet *cur_sheet;
 
 	get_sizes (state, &cols, &rows);
 	all_sheets = gtk_toggle_button_get_active
 		(GTK_TOGGLE_BUTTON (state->all_sheets_button));
 
 	wbc = WORKBOOK_CONTROL (state->wbcg);
-	wb = wb_control_get_workbook (wbc);
-	cur_sheet = wb_control_cur_sheet (wbc);
-	sheets = workbook_sheets (wb);
-	for (l = sheets; l; l = l->next) {
-		Sheet *this_sheet = l->data;
-
-		if (!all_sheets && this_sheet != state->sheet)
-			continue;
-
-		if (cols == gnm_sheet_get_max_cols (this_sheet) &&
-		    rows == gnm_sheet_get_max_rows (this_sheet))
-			continue;
-
-		changed_sheets = (this_sheet == cur_sheet)?
-							g_slist_append (changed_sheets, this_sheet):
-							g_slist_prepend (changed_sheets, this_sheet);
+
+	if (all_sheets) {
+		wb = wb_control_get_workbook (wbc);
+		sheets = workbook_sheets (wb);
+		for (l = sheets; l; l = l->next) {
+			Sheet *this_sheet = l->data;
+			
+			if (this_sheet == state->sheet)
+				continue;
+			
+			if (cols == gnm_sheet_get_max_cols (this_sheet) &&
+			    rows == gnm_sheet_get_max_rows (this_sheet))
+				continue;
+			
+			changed_sheets = g_slist_prepend (changed_sheets, this_sheet);
+		}
+		g_slist_free (sheets);
+	}
+
+	if (changed_sheets ||
+	    cols != gnm_sheet_get_max_cols (state->sheet) ||
+	    rows != gnm_sheet_get_max_rows (state->sheet)) {
+		/* We also append the sheet if it isn't changed in size */
+		/* to ensure that the focus stays on the current sheet. */
+		changed_sheets = g_slist_prepend (changed_sheets, state->sheet);
 	}
-	g_slist_free (sheets);
+
+	
 
 	if (changed_sheets)
-		cmd_resize_sheets (wbc, g_slist_reverse (changed_sheets),
+		cmd_resize_sheets (wbc, changed_sheets,
 				   cols, rows);
 
 	gtk_widget_destroy (state->dialog);



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