summaryrefslogtreecommitdiff
path: root/plugins/gtk+
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2020-10-14 21:08:18 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2020-10-14 21:08:18 -0300
commit9c09fec14135d90d1832b1b6b98a2440c2f10c16 (patch)
tree6442888eece8dcf966c00bb38128e073b5055dfe /plugins/gtk+
parent70a9d4c29fffb60a60ebf7a89575c27a079731e8 (diff)
downloadglade-9c09fec14135d90d1832b1b6b98a2440c2f10c16.tar.gz
GladeModelData: remove use of idle functions
Idle functions where causing a crash and do not seem to be needed anymore since calling them directly seems to work just fine. Fix issue #194 "Using List Store can result in program crash."
Diffstat (limited to 'plugins/gtk+')
-rw-r--r--plugins/gtk+/glade-model-data.c47
1 files changed, 23 insertions, 24 deletions
diff --git a/plugins/gtk+/glade-model-data.c b/plugins/gtk+/glade-model-data.c
index 82788c41..3cfa300d 100644
--- a/plugins/gtk+/glade-model-data.c
+++ b/plugins/gtk+/glade-model-data.c
@@ -294,6 +294,12 @@ clear_view (GladeEditorProperty *eprop)
GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
GtkTreeViewColumn *column;
+ //eprop_data->adding_row = 0;
+ //eprop_data->want_focus = 0;
+ //eprop_data->setting_focus = 0;
+ eprop_data->editing_row = -1;
+ eprop_data->editing_column = -1;
+
/* Clear columns ... */
while ((column = gtk_tree_view_get_column (eprop_data->view, 0)) != NULL)
gtk_tree_view_remove_column (eprop_data->view, column);
@@ -303,8 +309,8 @@ clear_view (GladeEditorProperty *eprop)
}
-static gboolean
-update_data_tree_idle (GladeEditorProperty *eprop)
+static void
+update_data_tree (GladeEditorProperty *eprop)
{
GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
GladeProperty *property = glade_editor_property_get_property (eprop);
@@ -323,37 +329,32 @@ update_data_tree_idle (GladeEditorProperty *eprop)
g_value_unset (&value);
eprop_data->pending_data_tree = NULL;
- return FALSE;
}
-static gboolean
-update_and_focus_data_tree_idle (GladeEditorProperty *eprop)
+static void
+update_and_focus_data_tree (GladeEditorProperty *eprop)
{
GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
GladeProperty *property = glade_editor_property_get_property (eprop);
eprop_data->want_focus = TRUE;
- update_data_tree_idle (eprop);
-
/* XXX Have to load it regardless if it changed, this is a slow and redundant way... */
glade_editor_property_load (eprop, property);
- eprop_data->want_focus = FALSE;
+ update_data_tree (eprop);
- return FALSE;
+ eprop_data->want_focus = FALSE;
}
-static gboolean
-focus_data_tree_idle (GladeEditorProperty *eprop)
+static void
+focus_data_tree (GladeEditorProperty *eprop)
{
GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
eprop_data->want_focus = TRUE;
eprop_data_focus_editing_cell (eprop_data);
eprop_data->want_focus = FALSE;
-
- return FALSE;
}
static void
@@ -421,7 +422,7 @@ glade_eprop_model_data_delete_selected (GladeEditorProperty *eprop)
glade_model_data_tree_free (eprop_data->pending_data_tree);
eprop_data->pending_data_tree = data_tree;
- g_idle_add ((GSourceFunc) update_data_tree_idle, eprop);
+ update_data_tree (eprop);
}
static void
@@ -458,8 +459,8 @@ eprop_treeview_key_press (GtkWidget *treeview,
return FALSE;
}
-static gboolean
-data_changed_idle (GladeEditorProperty *eprop)
+static void
+data_changed (GladeEditorProperty *eprop)
{
GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
GladeProperty *property = glade_editor_property_get_property (eprop);
@@ -495,9 +496,7 @@ data_changed_idle (GladeEditorProperty *eprop)
if (eprop_data->pending_data_tree)
glade_model_data_tree_free (eprop_data->pending_data_tree);
eprop_data->pending_data_tree = new_tree;
- update_data_tree_idle (eprop);
-
- return FALSE;
+ update_data_tree (eprop);
}
static void
@@ -508,7 +507,7 @@ eprop_treeview_row_deleted (GtkTreeModel *tree_model,
if (glade_editor_property_loading (eprop))
return;
- g_idle_add ((GSourceFunc) data_changed_idle, eprop);
+ data_changed (eprop);
}
@@ -626,7 +625,7 @@ value_toggled (GtkCellRendererToggle *cell, gchar *path, GladeEditorProperty *ep
glade_model_data_tree_free (eprop_data->pending_data_tree);
eprop_data->pending_data_tree = data_tree;
- g_idle_add ((GSourceFunc) update_and_focus_data_tree_idle, eprop);
+ update_and_focus_data_tree (eprop);
}
static void
@@ -677,7 +676,7 @@ value_i18n_activate (GladeCellRendererIcon *cell,
glade_model_data_tree_free (eprop_data->pending_data_tree);
eprop_data->pending_data_tree = data_tree;
- g_idle_add ((GSourceFunc) update_and_focus_data_tree_idle, eprop);
+ update_and_focus_data_tree (eprop);
}
else
glade_model_data_tree_free (data_tree);
@@ -760,7 +759,7 @@ value_text_edited (GtkCellRendererText *cell,
glade_model_data_tree_free (eprop_data->pending_data_tree);
eprop_data->pending_data_tree = data_tree;
- g_idle_add ((GSourceFunc) update_and_focus_data_tree_idle, eprop);
+ update_and_focus_data_tree (eprop);
}
@@ -821,7 +820,7 @@ data_editing_canceled (GtkCellRenderer *renderer, GladeEditorProperty *eprop)
if (eprop_data->setting_focus)
return;
- g_idle_add ((GSourceFunc) focus_data_tree_idle, eprop);
+ focus_data_tree (eprop);
}
static gint