]> Pileus Git - ~andy/gtk/commitdiff
temporarily set ->priv->edited_column to NULL. Pleas read the comment in
authorKristian Rietveld <kris@gtk.org>
Wed, 24 Apr 2002 15:28:51 +0000 (15:28 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Wed, 24 Apr 2002 15:28:51 +0000 (15:28 +0000)
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).

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktreeview.c

index 8d3d1da015b17453393c30e77d8072dab5aeeae9..ef1531d1a58ff88b1b99eaec15f9e41ff7594484 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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): 
index 8d3d1da015b17453393c30e77d8072dab5aeeae9..ef1531d1a58ff88b1b99eaec15f9e41ff7594484 100644 (file)
@@ -1,3 +1,9 @@
+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): 
index 8d3d1da015b17453393c30e77d8072dab5aeeae9..ef1531d1a58ff88b1b99eaec15f9e41ff7594484 100644 (file)
@@ -1,3 +1,9 @@
+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): 
index 8d3d1da015b17453393c30e77d8072dab5aeeae9..ef1531d1a58ff88b1b99eaec15f9e41ff7594484 100644 (file)
@@ -1,3 +1,9 @@
+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): 
index 8d3d1da015b17453393c30e77d8072dab5aeeae9..ef1531d1a58ff88b1b99eaec15f9e41ff7594484 100644 (file)
@@ -1,3 +1,9 @@
+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): 
index 8d3d1da015b17453393c30e77d8072dab5aeeae9..ef1531d1a58ff88b1b99eaec15f9e41ff7594484 100644 (file)
@@ -1,3 +1,9 @@
+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): 
index b2ed6201106c17f4c9bcc5881759b100984ab3e4..2ed65411d180015be4830458732575ef0eac0343 100644 (file)
@@ -9984,7 +9984,6 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView  *tree_view,
                                           &cell_area,
                                           &expose_area,
                                           0);
-
       cell_offset += column->width;
     }
 
@@ -10676,11 +10675,28 @@ static void
 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);
 }