[gnumeric] make sure we only have one sheet object guru active



commit 87f8de0660e7df23f257e0ade0bef8c9c83ed35b
Author: Andreas J. Guelzow <aguelzow pyrshep ca>
Date:   Sun Dec 27 17:05:55 2009 -0700

    make sure we only have one sheet object guru active
    
    2009-12-27  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* src/sheet-object.c (cb_so_size_position): make sure we only have one
    	  guru active
    	(sheet_object_get_editor): ditto

 ChangeLog          |    6 ++++++
 src/sheet-object.c |   26 ++++++++++++++++++++++++--
 2 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index fee4f18..709b5b2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2009-12-27  Andreas J. Guelzow <aguelzow pyrshep ca>
 
+	* src/sheet-object.c (cb_so_size_position): make sure we only have one
+	  guru active
+	(sheet_object_get_editor): ditto
+
+2009-12-27  Andreas J. Guelzow <aguelzow pyrshep ca>
+
 	* component/Gnumeric-embed.xml.in: add EditSelectObject menu item
 	* src/GNOME_Gnumeric-gtk.xml.in: ditto
 	* src/HILDON_Gnumeric-gtk.xml.in: ditto
diff --git a/src/sheet-object.c b/src/sheet-object.c
index 1723854..4b9304c 100644
--- a/src/sheet-object.c
+++ b/src/sheet-object.c
@@ -66,8 +66,19 @@ static GQuark	sov_container_quark;
 static void
 cb_so_size_position (SheetObject *so, SheetControl *sc)
 {
-	g_return_if_fail (IS_SHEET_CONTROL_GUI (sc));	
-	dialog_so_size (((SheetControlGUI *)sc)->wbcg, G_OBJECT (so));
+	WBCGtk *wbcg;
+
+	g_return_if_fail (IS_SHEET_CONTROL_GUI (sc));
+
+	wbcg = scg_wbcg ((SheetControlGUI *)sc);
+
+	if (wbcg->edit_line.guru != NULL) {
+		GtkWidget *w = wbcg->edit_line.guru;
+		wbc_gtk_detach_guru (wbcg);
+		gtk_widget_destroy (w);
+	}
+
+	dialog_so_size (wbcg, G_OBJECT (so));
 }
 
 static void
@@ -111,8 +122,19 @@ cb_so_delete (SheetObject *so, SheetControl *sc)
 void
 sheet_object_get_editor (SheetObject *so, SheetControl *sc)
 {
+	WBCGtk *wbcg;
+
 	g_return_if_fail (IS_SHEET_OBJECT (so));
 	g_return_if_fail (SO_CLASS (so));
+	g_return_if_fail (IS_SHEET_CONTROL_GUI (sc));
+
+	wbcg = scg_wbcg ((SheetControlGUI *)sc);
+
+	if (wbcg->edit_line.guru != NULL) {
+		GtkWidget *w = wbcg->edit_line.guru;
+		wbc_gtk_detach_guru (wbcg);
+		gtk_widget_destroy (w);
+	}
 
 	if (SO_CLASS(so)->user_config)
 		SO_CLASS(so)->user_config (so, sc);



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