block the signal that got us here until we're done to stop an infinite
2003-05-16 Mike Kestner <mkestner@ximian.com> * gal-view-collection.c (view_changed): block the signal that got us here until we're done to stop an infinite recursion. Fixes 43153. 2003-05-16 Mike Kestner <mkestner@ximian.com> * e-cell-text.c (invisible_finalize): kill (ect_stop_editing): destroy the invisible, not weak_unref (e_cell_text_view_get_invisible): don't weak_ref the invisible since we own its ref. 2003-05-16 Mike Kestner <mkestner@ximian.com> * e-table-item.c (eti_event): fix a couple timer checks * e-tree-table-adapter.c (update_node): Traverse POST order so that the parent nodes are at the head of the prepended list. Don't restore expanded state to nodes that aren't in the tree any longer. Hopefully fixes #42856. svn path=/trunk/; revision=21229
This commit is contained in:
committed by
Mike Kestner
parent
2d6fce0574
commit
d09737dec4
@ -314,7 +314,9 @@ view_changed (GalView *view,
|
||||
item->changed = TRUE;
|
||||
item->ever_changed = TRUE;
|
||||
|
||||
g_signal_handler_block(G_OBJECT(item->view), item->view_changed_id);
|
||||
gal_view_collection_changed(item->collection);
|
||||
g_signal_handler_unblock(G_OBJECT(item->view), item->view_changed_id);
|
||||
}
|
||||
|
||||
/* Use factory list to load a GalView file. */
|
||||
|
||||
@ -250,14 +250,6 @@ ect_queue_redraw (ECellTextView *text_view, int view_col, int view_row)
|
||||
view_col, view_row, view_col, view_row);
|
||||
}
|
||||
|
||||
static void
|
||||
invisible_finalize (gpointer data,
|
||||
GObject *invisible)
|
||||
{
|
||||
CellEdit *edit = data;
|
||||
edit->invisible = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Shuts down the editing process
|
||||
*/
|
||||
@ -277,9 +269,8 @@ ect_stop_editing (ECellTextView *text_view, gboolean commit)
|
||||
|
||||
old_text = edit->old_text;
|
||||
text = edit->text;
|
||||
if (edit->invisible) {
|
||||
g_object_weak_unref (G_OBJECT (edit->invisible), invisible_finalize, edit);
|
||||
}
|
||||
if (edit->invisible)
|
||||
gtk_widget_destroy (edit->invisible);
|
||||
if (edit->tep)
|
||||
g_object_unref (edit->tep);
|
||||
if (edit->primary_selection)
|
||||
@ -2215,8 +2206,6 @@ static GtkWidget *e_cell_text_view_get_invisible (CellEdit *edit)
|
||||
g_signal_connect (invisible, "selection_received",
|
||||
G_CALLBACK (_selection_received),
|
||||
edit);
|
||||
|
||||
g_object_weak_ref (G_OBJECT (invisible), invisible_finalize, edit);
|
||||
}
|
||||
return edit->invisible;
|
||||
}
|
||||
|
||||
@ -2545,7 +2545,7 @@ eti_event (GnomeCanvasItem *item, GdkEvent *e)
|
||||
|
||||
#ifdef DO_TOOLTIPS
|
||||
if (!g_getenv ("GAL_DONT_DO_TOOLTIPS")) {
|
||||
if (eti->tooltip->timer > 0)
|
||||
if (eti->tooltip->timer)
|
||||
gtk_timeout_remove (eti->tooltip->timer);
|
||||
eti->tooltip->col = col;
|
||||
eti->tooltip->row = row;
|
||||
@ -2779,7 +2779,7 @@ eti_event (GnomeCanvasItem *item, GdkEvent *e)
|
||||
d(leave = TRUE);
|
||||
case GDK_ENTER_NOTIFY:
|
||||
d(g_print("%s: %s received\n", __FUNCTION__, leave ? "GDK_LEAVE_NOTIFY" : "GDK_ENTER_NOTIFY"));
|
||||
if (eti->tooltip->timer > 0)
|
||||
if (eti->tooltip->timer)
|
||||
gtk_timeout_remove (eti->tooltip->timer);
|
||||
eti->tooltip->timer = 0;
|
||||
break;
|
||||
|
||||
@ -474,7 +474,7 @@ update_node(ETreeTableAdapter *etta, ETreePath path)
|
||||
closure.paths = NULL;
|
||||
|
||||
if (gnode)
|
||||
g_node_traverse(gnode, G_IN_ORDER, G_TRAVERSE_ALL, -1, check_expanded, &closure);
|
||||
g_node_traverse(gnode, G_POST_ORDER, G_TRAVERSE_ALL, -1, check_expanded, &closure);
|
||||
|
||||
if (e_tree_model_node_is_root(etta->priv->source, path))
|
||||
generate_tree(etta, path);
|
||||
@ -484,7 +484,8 @@ update_node(ETreeTableAdapter *etta, ETreePath path)
|
||||
}
|
||||
|
||||
for (l = closure.paths; l; l = l->next)
|
||||
e_tree_table_adapter_node_set_expanded (etta, l->data, !closure.expanded);
|
||||
if (lookup_gnode(etta, l->data))
|
||||
e_tree_table_adapter_node_set_expanded (etta, l->data, !closure.expanded);
|
||||
|
||||
g_slist_free(closure.paths);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user