[gnumeric] GUI: Fix menu sensitivity problem.



commit d18eb2bd91ba432c6d5c3488573301c907e33dc0
Author: Morten Welinder <terra gnome org>
Date:   Mon Aug 31 11:34:28 2009 -0400

    GUI: Fix menu sensitivity problem.

 ChangeLog               |    5 +++
 NEWS                    |    3 ++
 src/gnm-pane.c          |   70 +++++++++++++++++++++++-----------------------
 src/sheet-control-gui.c |   16 +++++++---
 src/wbc-gtk-edit.c      |    4 +-
 5 files changed, 56 insertions(+), 42 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 35aefe8..9b5875b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-08-31  Morten Welinder  <terra gnome org>
+
+	* src/sheet-control-gui.c (scg_mode_edit): update menu sensitivity
+	here.  Fixes #593624.
+
 2009-08-30  Morten Welinder <terra gnome org>
 
 	* configure.in: Post-release bump.
diff --git a/NEWS b/NEWS
index d346ff1..d63ef1e 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,9 @@ Gnumeric 1.9.12
 Andreas:
 	* Add CHOLESKY.
 
+Morten:
+	* Fix menu sensitivity problem.  [#593624]
+
 --------------------------------------------------------------------------
 Gnumeric 1.9.11
 
diff --git a/src/gnm-pane.c b/src/gnm-pane.c
index b9fa9c5..dfc3425 100644
--- a/src/gnm-pane.c
+++ b/src/gnm-pane.c
@@ -95,50 +95,50 @@ gnm_pane_object_key_press (GnmPane *pane, GdkEventKey *ev)
 
 	switch (ev->keyval) {
 	case GDK_Escape:
-	scg_mode_edit (scg);
-	gnm_app_clipboard_unant ();
-	return TRUE;
+		scg_mode_edit (scg);
+		gnm_app_clipboard_unant ();
+		return TRUE;
 
 	case GDK_BackSpace: /* Ick! */
 	case GDK_KP_Delete:
 	case GDK_Delete:
-	if (scg->selected_objects != NULL) {
-		cmd_objects_delete (sc->wbc,
-				    go_hash_keys (scg->selected_objects), NULL);
-		return TRUE;
-	}
-	sc_mode_edit (sc);
-	break;
+		if (scg->selected_objects != NULL) {
+			cmd_objects_delete (sc->wbc,
+					    go_hash_keys (scg->selected_objects), NULL);
+			return TRUE;
+		}
+		sc_mode_edit (sc);
+		break;
 
 	case GDK_Tab:
 	case GDK_ISO_Left_Tab:
 	case GDK_KP_Tab:
-	if (scg->selected_objects != NULL) {
-		Sheet *sheet = sc_sheet (sc);
-		GSList *prev = NULL, *ptr = sheet->sheet_objects;
-		for (; ptr != NULL ; prev = ptr, ptr = ptr->next)
-			if (NULL != g_hash_table_lookup (scg->selected_objects, ptr->data)) {
-				SheetObject *target;
-				if ((ev->state & GDK_SHIFT_MASK)) {
-					if (ptr->next == NULL)
-						target = sheet->sheet_objects->data;
-					else
-						target = ptr->next->data;
-				} else {
-					if (NULL == prev) {
-						GSList *last = g_slist_last (ptr);
-						target = last->data;
-					} else
-						target = prev->data;
-				}
-				if (ptr->data != target) {
-					scg_object_unselect (scg, NULL);
-					scg_object_select (scg, target);
-					return TRUE;
+		if (scg->selected_objects != NULL) {
+			Sheet *sheet = sc_sheet (sc);
+			GSList *prev = NULL, *ptr = sheet->sheet_objects;
+			for (; ptr != NULL ; prev = ptr, ptr = ptr->next)
+				if (NULL != g_hash_table_lookup (scg->selected_objects, ptr->data)) {
+					SheetObject *target;
+					if ((ev->state & GDK_SHIFT_MASK)) {
+						if (ptr->next == NULL)
+							target = sheet->sheet_objects->data;
+						else
+							target = ptr->next->data;
+					} else {
+						if (NULL == prev) {
+							GSList *last = g_slist_last (ptr);
+							target = last->data;
+						} else
+							target = prev->data;
+					}
+					if (ptr->data != target) {
+						scg_object_unselect (scg, NULL);
+						scg_object_select (scg, target);
+						return TRUE;
+					}
 				}
-			}
-	}
-	break;
+		}
+		break;
 
 	case GDK_KP_Left: case GDK_Left:
 		scg_objects_nudge (scg, pane, (alt ? 4 : (control ? 3 : 8)), -delta , 0, symmetric, shift);
diff --git a/src/sheet-control-gui.c b/src/sheet-control-gui.c
index a14f437..16f3a45 100644
--- a/src/sheet-control-gui.c
+++ b/src/sheet-control-gui.c
@@ -1996,10 +1996,13 @@ scg_cursor_visible (SheetControlGUI *scg, gboolean is_visible)
 void
 scg_mode_edit (SheetControlGUI *scg)
 {
+	WBCGtk *wbcg;
 	g_return_if_fail (IS_SHEET_CONTROL_GUI (scg));
 
-	if (scg->wbcg != NULL) /* Can be NULL during destruction */
-		wbcg_insert_object_clear (scg->wbcg);
+	wbcg = scg->wbcg;
+
+	if (wbcg != NULL) /* Can be NULL during destruction */
+		wbcg_insert_object_clear (wbcg);
 
 	scg_object_unselect (scg, NULL);
 
@@ -2012,9 +2015,12 @@ scg_mode_edit (SheetControlGUI *scg)
 		scg_cursor_visible (scg, TRUE);
 	}
 
-	if (scg->wbcg != NULL && wbc_gtk_get_guru (scg->wbcg) != NULL &&
-	    scg == wbcg_cur_scg	(scg->wbcg))
-		wbcg_edit_finish (scg->wbcg, WBC_EDIT_REJECT, NULL);
+	if (wbcg != NULL && wbc_gtk_get_guru (wbcg) != NULL &&
+	    scg == wbcg_cur_scg	(wbcg))
+		wbcg_edit_finish (wbcg, WBC_EDIT_REJECT, NULL);
+
+	if (wbcg)
+		wb_control_update_action_sensitivity (WORKBOOK_CONTROL (wbcg));
 }
 
 static void
diff --git a/src/wbc-gtk-edit.c b/src/wbc-gtk-edit.c
index c6c2eef..0ce6111 100644
--- a/src/wbc-gtk-edit.c
+++ b/src/wbc-gtk-edit.c
@@ -988,14 +988,14 @@ wbcg_insert_object (WBCGtk *wbcg, SheetObject *so)
 	wbcg->new_object = so;
 
 	npages = wbcg_get_n_scg (wbcg);
-	for (i = 0; i < npages; i++)
+	for (i = 0; i < npages; i++) {
 		if (NULL != (scg = wbcg_get_nth_scg (wbcg, i))) {
 			scg_object_unselect (scg, NULL);
 			scg_cursor_visible (scg, FALSE);
 			scg_set_display_cursor (scg);
 			sc_unant (SHEET_CONTROL (scg));
 		}
-
+	}
 	wb_control_update_action_sensitivity (WORKBOOK_CONTROL (wbcg));
 }
 



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