Return FALSE (peditor_*_widget_changed): Just return if we are not fully

2001-12-19  Bradford Hovinen  <hovinen@ximian.com>

	* gconf-property-editor.c (init_widget_cb): Return FALSE
	(peditor_*_widget_changed): Just return if we are not fully
	initialized
	(init_widget_cb): Set initialized flag
	(struct _GConfPropertyEditorPrivate): Add inited
This commit is contained in:
Bradford Hovinen 2001-12-19 20:44:11 +00:00 committed by Bradford Hovinen (Gdict maintainer)
parent 9ec85dedd5
commit e6e398cbae
2 changed files with 21 additions and 1 deletions

View file

@ -17,6 +17,13 @@
(gconf_property_editor_set_prop): Store the callback in the (gconf_property_editor_set_prop): Store the callback in the
property editor proper property editor proper
(gconf_peditor_new): Put initialization code in an idle handler (gconf_peditor_new): Put initialization code in an idle handler
(peditor_string_value_changed): Free the value created from
conversion
(init_widget_cb): Return FALSE
(peditor_*_widget_changed): Just return if we are not fully
initialized
(init_widget_cb): Set initialized flag
(struct _GConfPropertyEditorPrivate): Add inited
* gconf-property-editor.c: Add ui-control property storing the * gconf-property-editor.c: Add ui-control property storing the
object (normally a widget) that controls the property; remove object (normally a widget) that controls the property; remove

View file

@ -52,6 +52,7 @@ struct _GConfPropertyEditorPrivate
GConfPEditorValueConvFn conv_to_widget_cb; GConfPEditorValueConvFn conv_to_widget_cb;
GConfPEditorValueConvFn conv_from_widget_cb; GConfPEditorValueConvFn conv_from_widget_cb;
GConfClientNotifyFunc callback; GConfClientNotifyFunc callback;
gboolean inited;
}; };
static guint peditor_signals[LAST_SIGNAL]; static guint peditor_signals[LAST_SIGNAL];
@ -114,6 +115,7 @@ gconf_property_editor_init (GConfPropertyEditor *gconf_property_editor,
gconf_property_editor->p = g_new0 (GConfPropertyEditorPrivate, 1); gconf_property_editor->p = g_new0 (GConfPropertyEditorPrivate, 1);
gconf_property_editor->p->conv_to_widget_cb = gconf_value_copy; gconf_property_editor->p->conv_to_widget_cb = gconf_value_copy;
gconf_property_editor->p->conv_from_widget_cb = gconf_value_copy; gconf_property_editor->p->conv_from_widget_cb = gconf_value_copy;
gconf_property_editor->p->inited = FALSE;
} }
static void static void
@ -280,7 +282,7 @@ gconf_property_editor_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object); G_OBJECT_CLASS (parent_class)->finalize (object);
} }
static void static gboolean
init_widget_cb (GConfPropertyEditor *peditor) init_widget_cb (GConfPropertyEditor *peditor)
{ {
GConfClient *client; GConfClient *client;
@ -289,6 +291,9 @@ init_widget_cb (GConfPropertyEditor *peditor)
client = gconf_client_get_default (); client = gconf_client_get_default ();
gconf_entry = gconf_client_get_entry (client, peditor->p->key, NULL, TRUE, NULL); gconf_entry = gconf_client_get_entry (client, peditor->p->key, NULL, TRUE, NULL);
peditor->p->callback (client, 0, gconf_entry, peditor); peditor->p->callback (client, 0, gconf_entry, peditor);
peditor->p->inited = TRUE;
return FALSE;
} }
static GObject * static GObject *
@ -345,6 +350,7 @@ peditor_boolean_widget_changed (GConfPropertyEditor *peditor,
{ {
GConfValue *value, *value_wid; GConfValue *value, *value_wid;
if (!peditor->p->inited) return;
value_wid = gconf_value_new (GCONF_VALUE_BOOL); value_wid = gconf_value_new (GCONF_VALUE_BOOL);
gconf_value_set_bool (value_wid, gtk_toggle_button_get_active (tb)); gconf_value_set_bool (value_wid, gtk_toggle_button_get_active (tb));
value = peditor->p->conv_from_widget_cb (value_wid); value = peditor->p->conv_from_widget_cb (value_wid);
@ -388,6 +394,7 @@ peditor_string_value_changed (GConfClient *client,
if (value != NULL) { if (value != NULL) {
value_wid = peditor->p->conv_to_widget_cb (value); value_wid = peditor->p->conv_to_widget_cb (value);
gtk_entry_set_text (GTK_ENTRY (peditor->p->ui_control), gconf_value_get_string (value)); gtk_entry_set_text (GTK_ENTRY (peditor->p->ui_control), gconf_value_get_string (value));
gconf_value_free (value_wid);
} }
} }
@ -397,6 +404,7 @@ peditor_string_widget_changed (GConfPropertyEditor *peditor,
{ {
GConfValue *value, *value_wid; GConfValue *value, *value_wid;
if (!peditor->p->inited) return;
value_wid = gconf_value_new (GCONF_VALUE_STRING); value_wid = gconf_value_new (GCONF_VALUE_STRING);
gconf_value_set_string (value_wid, gtk_entry_get_text (entry)); gconf_value_set_string (value_wid, gtk_entry_get_text (entry));
value = peditor->p->conv_from_widget_cb (value_wid); value = peditor->p->conv_from_widget_cb (value_wid);
@ -471,6 +479,8 @@ peditor_color_widget_changed (GConfPropertyEditor *peditor,
gchar *str; gchar *str;
GConfValue *value, *value_wid; GConfValue *value, *value_wid;
if (!peditor->p->inited) return;
value_wid = gconf_value_new (GCONF_VALUE_STRING); value_wid = gconf_value_new (GCONF_VALUE_STRING);
str = g_strdup_printf ("#%02x%02x%02x", r >> 8, g >> 8, b >> 8); str = g_strdup_printf ("#%02x%02x%02x", r >> 8, g >> 8, b >> 8);
gconf_value_set_string (value_wid, str); gconf_value_set_string (value_wid, str);
@ -529,6 +539,7 @@ peditor_select_menu_widget_changed (GConfPropertyEditor *peditor,
{ {
GConfValue *value, *value_wid; GConfValue *value, *value_wid;
if (!peditor->p->inited) return;
value_wid = gconf_value_new (GCONF_VALUE_INT); value_wid = gconf_value_new (GCONF_VALUE_INT);
gconf_value_set_int (value_wid, gtk_option_menu_get_history (option_menu)); gconf_value_set_int (value_wid, gtk_option_menu_get_history (option_menu));
value = peditor->p->conv_from_widget_cb (value_wid); value = peditor->p->conv_from_widget_cb (value_wid);
@ -586,6 +597,7 @@ peditor_select_radio_widget_changed (GConfPropertyEditor *peditor,
GSList *group; GSList *group;
GConfValue *value, *value_wid; GConfValue *value, *value_wid;
if (!peditor->p->inited) return;
value_wid = gconf_value_new (GCONF_VALUE_INT); value_wid = gconf_value_new (GCONF_VALUE_INT);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (peditor->p->ui_control)); group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (peditor->p->ui_control));
gconf_value_set_int (value_wid, g_slist_index (group, tb)); gconf_value_set_int (value_wid, g_slist_index (group, tb));
@ -651,6 +663,7 @@ peditor_numeric_range_widget_changed (GConfPropertyEditor *peditor,
{ {
GConfValue *value, *value_wid; GConfValue *value, *value_wid;
if (!peditor->p->inited) return;
value_wid = gconf_value_new (GCONF_VALUE_FLOAT); value_wid = gconf_value_new (GCONF_VALUE_FLOAT);
gconf_value_set_float (value_wid, gtk_adjustment_get_value (adjustment)); gconf_value_set_float (value_wid, gtk_adjustment_get_value (adjustment));
value = peditor->p->conv_from_widget_cb (value_wid); value = peditor->p->conv_from_widget_cb (value_wid);