[gnumeric] Date axes: restore ability to edit.



commit 32949394749ee517decccc4fed56f82c07a5e5e1
Author: Morten Welinder <terra gnome org>
Date:   Wed Sep 1 19:46:27 2010 -0400

    Date axes: restore ability to edit.

 src/widgets/ChangeLog             |    6 ++++++
 src/widgets/gnumeric-expr-entry.c |   22 ++++++++++++++--------
 2 files changed, 20 insertions(+), 8 deletions(-)
---
diff --git a/src/widgets/ChangeLog b/src/widgets/ChangeLog
index 2e82aa8..afa1c9b 100644
--- a/src/widgets/ChangeLog
+++ b/src/widgets/ChangeLog
@@ -1,3 +1,9 @@
+2010-09-01  Morten Welinder  <terra gnome org>
+
+	* gnumeric-expr-entry.c (gee_update_calendar): Block the
+	calendar's changed signal when we are updating it to match the
+	entry.
+
 2010-08-31  Morten Welinder  <terra gnome org>
 
 	* gnumeric-expr-entry.c (gee_set_property): Don't do anything for
diff --git a/src/widgets/gnumeric-expr-entry.c b/src/widgets/gnumeric-expr-entry.c
index d64edff..4b7648c 100644
--- a/src/widgets/gnumeric-expr-entry.c
+++ b/src/widgets/gnumeric-expr-entry.c
@@ -93,6 +93,7 @@ struct _GnmExprEntry {
 
 	GtkEntry		*entry;
 	GtkWidget               *calendar_combo;
+	gulong                   calendar_combo_changed;
 	GtkWidget		*icon;
 	SheetControlGUI		*scg;	/* the source of the edit */
 	Sheet			*sheet;	/* from scg */
@@ -118,7 +119,7 @@ struct _GnmExprEntry {
 		GnmFunc         *fd;
 		gint             args;
 		gboolean         had_stuff;
-		guint            handlerid;
+		gulong           handlerid;
 		gboolean         enabled;
 		gboolean         completion_se_valid;
 		gchar           *completion;
@@ -368,10 +369,15 @@ gee_update_calendar (GnmExprEntry *gee)
 	if (!v)
 		return;
 
-	if (datetime_value_to_g (&date, v, date_conv))
+	if (datetime_value_to_g (&date, v, date_conv)) {
+		g_signal_handler_block (gee->calendar_combo,
+					gee->calendar_combo_changed);
 		go_calendar_button_set_date
 			(GO_CALENDAR_BUTTON (gee->calendar_combo),
 			 &date);
+		g_signal_handler_unblock (gee->calendar_combo,
+					  gee->calendar_combo_changed);
+	}
 
 	value_release (v);
 }
@@ -412,18 +418,18 @@ gee_set_format (GnmExprEntry *gee, GOFormat const *fmt)
 			gtk_widget_show (gee->calendar_combo);
 			gtk_box_pack_start (GTK_BOX (gee), gee->calendar_combo,
 					    FALSE, TRUE, 0);
+			gee->calendar_combo_changed =
+				g_signal_connect (G_OBJECT (gee->calendar_combo),
+						  "changed",
+						  G_CALLBACK (cb_calendar_changed),
+						  gee);
 			gee_update_calendar (gee);
-
-
-			g_signal_connect (G_OBJECT (gee->calendar_combo),
-					  "changed",
-					  G_CALLBACK (cb_calendar_changed),
-					  gee);
 		}
 	} else {
 		if (gee->calendar_combo) {
 			gtk_widget_destroy (gee->calendar_combo);
 			gee->calendar_combo = NULL;
+			gee->calendar_combo_changed = 0;
 		}
 	}
 



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