glade3 r1711 - in trunk: . gladeui
- From: tvb svn gnome org
- To: svn-commits-list gnome org
- Subject: glade3 r1711 - in trunk: . gladeui
- Date: Sun, 9 Mar 2008 21:09:08 +0000 (GMT)
Author: tvb
Date: Sun Mar 9 21:09:07 2008
New Revision: 1711
URL: http://svn.gnome.org/viewvc/glade3?rev=1711&view=rev
Log:
* gladeui/glade-base-editor.c: Made sure idle handlers werent
updating treeviews after the object is destroyed (also bug 506713).
Modified:
trunk/ChangeLog
trunk/gladeui/glade-base-editor.c
trunk/gladeui/glade-editor-property.c
trunk/gladeui/glade-editor.c
Modified: trunk/gladeui/glade-base-editor.c
==============================================================================
--- trunk/gladeui/glade-base-editor.c (original)
+++ trunk/gladeui/glade-base-editor.c Sun Mar 9 21:09:07 2008
@@ -78,6 +78,8 @@
gint row;
gboolean updating_treeview;
+
+ guint properties_idle;
};
typedef struct _GladeBaseEditorSignal GladeBaseEditorSignal;
@@ -350,7 +352,9 @@
GObject *child;
GladeWidget *gchild;
- if (! glade_base_editor_get_child_selected (editor, &iter))
+ g_return_if_fail (GTK_IS_TREE_VIEW (treeview));
+
+ if (!glade_base_editor_get_child_selected (editor, &iter))
return;
glade_base_editor_clear (editor);
@@ -372,15 +376,21 @@
static gboolean
glade_base_editor_update_properties_idle (gpointer data)
{
- glade_base_editor_treeview_cursor_changed (NULL, (GladeBaseEditor *)data);
- return FALSE;
+ GladeBaseEditor *editor = (GladeBaseEditor *)data;
+ glade_base_editor_treeview_cursor_changed (NULL, editor);
+ editor->priv->properties_idle = 0;
+ return FALSE;
}
static void
glade_base_editor_update_properties (GladeBaseEditor *editor)
{
- g_idle_add (glade_base_editor_update_properties_idle, editor);
+ g_return_if_fail (GLADE_IS_BASE_EDITOR (editor));
+
+ if (!editor->priv->properties_idle)
+ editor->priv->properties_idle =
+ g_idle_add (glade_base_editor_update_properties_idle, editor);
}
static void
@@ -993,6 +1003,12 @@
g_signal_handlers_disconnect_by_func (e->project,
glade_base_editor_project_changed, editor);
+
+
+ if (e->properties_idle)
+ g_source_remove (e->properties_idle);
+ e->properties_idle = 0;
+
}
static void
Modified: trunk/gladeui/glade-editor-property.c
==============================================================================
--- trunk/gladeui/glade-editor-property.c (original)
+++ trunk/gladeui/glade-editor-property.c Sun Mar 9 21:09:07 2008
@@ -1835,6 +1835,8 @@
gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (swindow), TRUE, TRUE, 0);
gtk_widget_show_all (swindow);
+
+ /* XXX Use changed signal directly !!! */
g_signal_connect (G_OBJECT (eprop_text->text_entry), "focus-out-event",
G_CALLBACK (glade_eprop_text_text_view_focus_out),
Modified: trunk/gladeui/glade-editor.c
==============================================================================
--- trunk/gladeui/glade-editor.c (original)
+++ trunk/gladeui/glade-editor.c Sun Mar 9 21:09:07 2008
@@ -646,6 +646,8 @@
GladeEditorTable *table;
GList *list;
+ g_return_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor));
+
for (list = editor->widget_tables; list; list = list->next)
{
table = list->data;
@@ -741,7 +743,15 @@
void
glade_editor_update_widget_name (GladeEditor *editor)
{
- GladeEditorTable *table = glade_editor_get_table_from_class
+ GladeEditorTable *table;
+
+ /* it can happen that a widget name is changing that is only
+ * available in a custom editor so we have no table
+ */
+ if (!editor->loaded_adaptor)
+ return;
+
+ table = glade_editor_get_table_from_class
(editor, editor->loaded_adaptor, TABLE_TYPE_GENERAL);
g_signal_handlers_block_by_func (G_OBJECT (table->name_entry), glade_editor_widget_name_changed, editor);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]