summaryrefslogtreecommitdiff
path: root/gtk/gtktreeview.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2002-11-20 18:15:28 +0000
committerKristian Rietveld <kristian@src.gnome.org>2002-11-20 18:15:28 +0000
commit83e9cd53209b4d0636d01920afbb48458ef75739 (patch)
treebf8fa01d26fe8f313a3b34767586d7a4d39e3989 /gtk/gtktreeview.c
parentbc035915e9406896c83a7cd6a132eb722229a876 (diff)
downloadgdk-pixbuf-83e9cd53209b4d0636d01920afbb48458ef75739.tar.gz
return a value in the range of [-1, 1] instead [0, 1],
Wed Nov 20 19:29:50 2002 Kristian Rietveld <kris@gtk.org> * gtk/gtkrbtree.c (gtk_rbtree_reorder_sort_func): return a value in the range of [-1, 1] instead [0, 1], (gtk_rbtree_reorder_invert_func): ditto, This makes treeview reordering working on platforms as FreeBSD and solaris, thanks go to Heiner Eichmann for finding this out and sending in a patch (#98251). Wed Nov 20 19:27:07 2002 Kristian Rietveld <kris@gtk.org> * gtk/gtktreestore.c (node_free): only free the data list if node->data is not NULL, (gtk_tree_store_remove): free the data list from the node if needed. (#94728, pointed out by Peter Bloomfield). Wed Nov 20 19:23:13 2002 Kristian Rietveld <kris@gtk.org> * gtk/gtktreeview.c (gtk_tree_view_remove_column): stop editing and set the edited_column to NULL if edited_column is set. (#91288, modified patch from Josh Parsons). Wed Nov 20 19:20:34 2002 Kristian Rietveld <kris@gtk.org> * gtk/gtktreeview.c (gtk_tree_view_size_allocate): do a full redraw if vadjustment->value is bigger than tree_view->priv->height, (gtk_tree_view_row_deleted): free the row ref if it isn't valid anymore. (#83726, reported by Robert Kinsella).
Diffstat (limited to 'gtk/gtktreeview.c')
-rw-r--r--gtk/gtktreeview.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 8ebf772f1..5fe798dae 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -1670,6 +1670,7 @@ gtk_tree_view_size_allocate (GtkWidget *widget,
GList *tmp_list;
GtkTreeView *tree_view;
gboolean width_changed = FALSE;
+ gboolean dy_changed = FALSE;
g_return_if_fail (GTK_IS_TREE_VIEW (widget));
@@ -1715,8 +1716,12 @@ gtk_tree_view_size_allocate (GtkWidget *widget,
tree_view->priv->vadjustment->upper = MAX (tree_view->priv->vadjustment->page_size, tree_view->priv->height);
if (tree_view->priv->vadjustment->value + allocation->height - TREE_VIEW_HEADER_HEIGHT (tree_view) > tree_view->priv->height)
- gtk_adjustment_set_value (tree_view->priv->vadjustment,
- MAX (tree_view->priv->height - tree_view->priv->vadjustment->page_size, 0));
+ {
+ dy_changed = TRUE;
+ gtk_adjustment_set_value (tree_view->priv->vadjustment,
+ MAX (tree_view->priv->height - tree_view->priv->vadjustment->page_size, 0));
+ }
+
gtk_adjustment_changed (tree_view->priv->vadjustment);
if (GTK_WIDGET_REALIZED (widget))
@@ -1738,8 +1743,13 @@ gtk_tree_view_size_allocate (GtkWidget *widget,
gtk_tree_view_size_allocate_columns (widget);
- if (GTK_WIDGET_REALIZED (widget) && width_changed)
- invalidate_last_column (tree_view);
+ if (GTK_WIDGET_REALIZED (widget))
+ {
+ if (width_changed)
+ invalidate_last_column (tree_view);
+ if (dy_changed)
+ gtk_widget_queue_draw (widget);
+ }
}
static gboolean
@@ -6175,6 +6185,12 @@ gtk_tree_view_row_deleted (GtkTreeModel *model,
_gtk_rbtree_remove_node (tree, node);
}
+ if (! gtk_tree_row_reference_valid (tree_view->priv->top_row))
+ {
+ gtk_tree_row_reference_free (tree_view->priv->top_row);
+ tree_view->priv->top_row = NULL;
+ }
+
install_scroll_sync_handler (tree_view);
gtk_widget_queue_resize (GTK_WIDGET (tree_view));
@@ -8209,11 +8225,19 @@ gtk_tree_view_remove_column (GtkTreeView *tree_view,
g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (column), -1);
g_return_val_if_fail (column->tree_view == GTK_WIDGET (tree_view), -1);
- _gtk_tree_view_column_unset_tree_view (column);
-
if (tree_view->priv->focus_column == column)
tree_view->priv->focus_column = NULL;
+ if (tree_view->priv->edited_column == column)
+ {
+ gtk_tree_view_stop_editing (tree_view, TRUE);
+
+ /* no need to, but just to be sure ... */
+ tree_view->priv->edited_column = NULL;
+ }
+
+ _gtk_tree_view_column_unset_tree_view (column);
+
tree_view->priv->columns = g_list_remove (tree_view->priv->columns, column);
tree_view->priv->n_columns--;