+Wed Apr 24 17:34:16 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
+ ->priv->edited_column to NULL. Pleas read the comment in this
+ function for an explanation (fixes #79632).
+
2002-04-23 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords):
+Wed Apr 24 17:34:16 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
+ ->priv->edited_column to NULL. Pleas read the comment in this
+ function for an explanation (fixes #79632).
+
2002-04-23 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords):
+Wed Apr 24 17:34:16 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
+ ->priv->edited_column to NULL. Pleas read the comment in this
+ function for an explanation (fixes #79632).
+
2002-04-23 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords):
+Wed Apr 24 17:34:16 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
+ ->priv->edited_column to NULL. Pleas read the comment in this
+ function for an explanation (fixes #79632).
+
2002-04-23 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords):
+Wed Apr 24 17:34:16 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
+ ->priv->edited_column to NULL. Pleas read the comment in this
+ function for an explanation (fixes #79632).
+
2002-04-23 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords):
+Wed Apr 24 17:34:16 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set
+ ->priv->edited_column to NULL. Pleas read the comment in this
+ function for an explanation (fixes #79632).
+
2002-04-23 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords):
&cell_area,
&expose_area,
0);
-
cell_offset += column->width;
}
gtk_tree_view_stop_editing (GtkTreeView *tree_view,
gboolean cancel_editing)
{
+ GtkTreeViewColumn *column;
+
if (tree_view->priv->edited_column == NULL)
return;
+ /**
+ * This is very evil. We need to do this, because
+ * gtk_cell_editable_editing_done may trigger gtk_tree_view_row_changed
+ * later on. If gtk_tree_view_row_changed notices
+ * tree_view->priv->edited_column != NULL, it'll call
+ * gtk_tree_view_stop_editing again. Bad things will happen then.
+ *
+ * Please read that again if you intend to modify anything here.
+ */
+
+ column = tree_view->priv->edited_column;
+ tree_view->priv->edited_column = NULL;
+
if (! cancel_editing)
- gtk_cell_editable_editing_done (tree_view->priv->edited_column->editable_widget);
+ gtk_cell_editable_editing_done (column->editable_widget);
+
+ tree_view->priv->edited_column = column;
- gtk_cell_editable_remove_widget (tree_view->priv->edited_column->editable_widget);
+ gtk_cell_editable_remove_widget (column->editable_widget);
}