forked from AuroraMiddleware/gtk
improve warning.
Fri Oct 5 20:50:00 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreestore.c (gtk_tree_store_iter_has_child): improve warning. * gtk/gtktreemodel.c (gtk_tree_row_reference_new_proxy): ref and unref nodes, #okay61676 * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_sort): we listen to the property; no need to clear the other columns. Also, we go to 'unsorted' if the model supports it.
This commit is contained in:
parent
e9172bf4e3
commit
63973ab30a
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
||||
Fri Oct 5 20:50:00 2001 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_iter_has_child): improve
|
||||
warning.
|
||||
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_reference_new_proxy): ref and
|
||||
unref nodes, #okay61676
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_sort): we listen
|
||||
to the property; no need to clear the other columns. Also, we go
|
||||
to 'unsorted' if the model supports it.
|
||||
|
||||
2001-10-05 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* demos/testpixbuf-save.c
|
||||
|
@ -1,3 +1,15 @@
|
||||
Fri Oct 5 20:50:00 2001 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_iter_has_child): improve
|
||||
warning.
|
||||
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_reference_new_proxy): ref and
|
||||
unref nodes, #okay61676
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_sort): we listen
|
||||
to the property; no need to clear the other columns. Also, we go
|
||||
to 'unsorted' if the model supports it.
|
||||
|
||||
2001-10-05 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* demos/testpixbuf-save.c
|
||||
|
@ -1,3 +1,15 @@
|
||||
Fri Oct 5 20:50:00 2001 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_iter_has_child): improve
|
||||
warning.
|
||||
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_reference_new_proxy): ref and
|
||||
unref nodes, #okay61676
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_sort): we listen
|
||||
to the property; no need to clear the other columns. Also, we go
|
||||
to 'unsorted' if the model supports it.
|
||||
|
||||
2001-10-05 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* demos/testpixbuf-save.c
|
||||
|
@ -1,3 +1,15 @@
|
||||
Fri Oct 5 20:50:00 2001 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_iter_has_child): improve
|
||||
warning.
|
||||
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_reference_new_proxy): ref and
|
||||
unref nodes, #okay61676
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_sort): we listen
|
||||
to the property; no need to clear the other columns. Also, we go
|
||||
to 'unsorted' if the model supports it.
|
||||
|
||||
2001-10-05 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* demos/testpixbuf-save.c
|
||||
|
@ -1,3 +1,15 @@
|
||||
Fri Oct 5 20:50:00 2001 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_iter_has_child): improve
|
||||
warning.
|
||||
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_reference_new_proxy): ref and
|
||||
unref nodes, #okay61676
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_sort): we listen
|
||||
to the property; no need to clear the other columns. Also, we go
|
||||
to 'unsorted' if the model supports it.
|
||||
|
||||
2001-10-05 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* demos/testpixbuf-save.c
|
||||
|
@ -1,3 +1,15 @@
|
||||
Fri Oct 5 20:50:00 2001 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_iter_has_child): improve
|
||||
warning.
|
||||
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_reference_new_proxy): ref and
|
||||
unref nodes, #okay61676
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_sort): we listen
|
||||
to the property; no need to clear the other columns. Also, we go
|
||||
to 'unsorted' if the model supports it.
|
||||
|
||||
2001-10-05 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* demos/testpixbuf-save.c
|
||||
|
@ -1,3 +1,15 @@
|
||||
Fri Oct 5 20:50:00 2001 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* gtk/gtktreestore.c (gtk_tree_store_iter_has_child): improve
|
||||
warning.
|
||||
|
||||
* gtk/gtktreemodel.c (gtk_tree_row_reference_new_proxy): ref and
|
||||
unref nodes, #okay61676
|
||||
|
||||
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_sort): we listen
|
||||
to the property; no need to clear the other columns. Also, we go
|
||||
to 'unsorted' if the model supports it.
|
||||
|
||||
2001-10-05 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* demos/testpixbuf-save.c
|
||||
|
@ -1146,6 +1146,10 @@ gtk_tree_model_foreach (GtkTreeModel *model,
|
||||
* GtkTreeRowReference
|
||||
*/
|
||||
|
||||
static void gtk_tree_row_reference_unref_path (GtkTreePath *path,
|
||||
GtkTreeModel *model,
|
||||
gboolean free_last);
|
||||
|
||||
#define ROW_REF_DATA_STRING "gtk-tree-row-refs"
|
||||
|
||||
struct _GtkTreeRowReference
|
||||
@ -1256,10 +1260,6 @@ gtk_tree_row_ref_deleted_callback (GObject *object,
|
||||
* deletion with the old path of the just-deleted row. Which means
|
||||
* that the deleted path is the same now-defunct "coordinate system"
|
||||
* as the path saved in the reference, which is what we want to fix.
|
||||
*
|
||||
* Note that this is different from the situation in "inserted," so
|
||||
* while you might think you can cut-and-paste between these
|
||||
* functions, it's not going to work. ;-)
|
||||
*/
|
||||
|
||||
tmp_list = refs->list;
|
||||
@ -1276,6 +1276,7 @@ gtk_tree_row_ref_deleted_callback (GObject *object,
|
||||
}
|
||||
else if (gtk_tree_path_compare (path, reference->path) == 0)
|
||||
{
|
||||
gtk_tree_row_reference_unref_path (reference->path, reference->model, FALSE);
|
||||
gtk_tree_path_free (reference->path);
|
||||
reference->path = NULL;
|
||||
}
|
||||
@ -1353,6 +1354,42 @@ connect_ref_callbacks (GtkTreeModel *model)
|
||||
model);
|
||||
}
|
||||
|
||||
|
||||
/* We do this recursively so that we can unref children nodes before their parent */
|
||||
static void
|
||||
gtk_tree_row_reference_unref_path_helper (GtkTreePath *path,
|
||||
GtkTreeModel *model,
|
||||
GtkTreeIter *parent_iter,
|
||||
gint depth,
|
||||
gboolean free_last)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (free_last == FALSE && path->depth - 1 == depth)
|
||||
return;
|
||||
if (path->depth == depth)
|
||||
return;
|
||||
|
||||
gtk_tree_model_iter_nth_child (model, &iter, NULL, path->indices[depth]);
|
||||
gtk_tree_row_reference_unref_path_helper (path, model, &iter, depth + 1, free_last);
|
||||
gtk_tree_model_unref_node (model, &iter);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_tree_row_reference_unref_path (GtkTreePath *path,
|
||||
GtkTreeModel *model,
|
||||
gboolean free_last)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (free_last == FALSE && path->depth == 1)
|
||||
return;
|
||||
|
||||
gtk_tree_model_iter_nth_child (model, &iter, NULL, path->indices[0]);
|
||||
gtk_tree_row_reference_unref_path_helper (path, model, &iter, 1, free_last);
|
||||
gtk_tree_model_unref_node (model, &iter);
|
||||
}
|
||||
|
||||
static void
|
||||
disconnect_ref_callbacks (GtkTreeModel *model)
|
||||
{
|
||||
@ -1373,6 +1410,18 @@ disconnect_ref_callbacks (GtkTreeModel *model)
|
||||
NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_tree_row_reference_new:
|
||||
* @model: A #GtkTreeModel
|
||||
* @path: A valid #GtkTreePath
|
||||
*
|
||||
* Creates a row reference based on @path. This reference will keep pointing to
|
||||
* the node pointed to by @path, so long as it exists. It listens to all
|
||||
* signals on model, and updates it's path appropriately. If @path isn't a
|
||||
* valid path in @model, then %NULL is returned.
|
||||
*
|
||||
* Return value: A newly allocated #GtkTreeRowReference, or %NULL
|
||||
**/
|
||||
GtkTreeRowReference *
|
||||
gtk_tree_row_reference_new (GtkTreeModel *model,
|
||||
GtkTreePath *path)
|
||||
@ -1390,11 +1439,31 @@ gtk_tree_row_reference_new_proxy (GObject *proxy,
|
||||
{
|
||||
GtkTreeRowReference *reference;
|
||||
RowRefList *refs;
|
||||
GtkTreeIter parent_iter;
|
||||
gint i;
|
||||
|
||||
g_return_val_if_fail (G_IS_OBJECT (proxy), NULL);
|
||||
g_return_val_if_fail (GTK_IS_TREE_MODEL (model), NULL);
|
||||
g_return_val_if_fail (path != NULL, NULL);
|
||||
g_return_val_if_fail (path->depth > 0, NULL);
|
||||
|
||||
/* check that the path is valid */
|
||||
if (gtk_tree_model_get_iter (model, &parent_iter, path) == FALSE)
|
||||
return NULL;
|
||||
|
||||
/* Now we want to ref every node */
|
||||
gtk_tree_model_iter_nth_child (model, &parent_iter, NULL, path->indices[0]);
|
||||
gtk_tree_model_ref_node (model, &parent_iter);
|
||||
|
||||
for (i = 1; i < path->depth; i++)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
gtk_tree_model_iter_nth_child (model, &iter, &parent_iter, path->indices[i]);
|
||||
gtk_tree_model_ref_node (model, &iter);
|
||||
parent_iter = iter;
|
||||
}
|
||||
|
||||
/* Make ther row reference */
|
||||
reference = g_new (GtkTreeRowReference, 1);
|
||||
|
||||
g_object_ref (proxy);
|
||||
@ -1499,7 +1568,10 @@ gtk_tree_row_reference_free (GtkTreeRowReference *reference)
|
||||
g_object_unref (reference->model);
|
||||
|
||||
if (reference->path)
|
||||
gtk_tree_path_free (reference->path);
|
||||
{
|
||||
gtk_tree_row_reference_unref_path (reference->path, reference->model, TRUE);
|
||||
gtk_tree_path_free (reference->path);
|
||||
}
|
||||
|
||||
g_free (reference);
|
||||
}
|
||||
|
@ -632,7 +632,7 @@ gtk_tree_store_iter_has_child (GtkTreeModel *tree_model,
|
||||
GtkTreeIter *iter)
|
||||
{
|
||||
g_return_val_if_fail (GTK_IS_TREE_STORE (tree_model), FALSE);
|
||||
g_return_val_if_fail (iter != NULL, FALSE);
|
||||
g_return_val_if_fail (iter->stamp == GTK_TREE_STORE (tree_model)->stamp, FALSE);
|
||||
g_return_val_if_fail (iter->user_data != NULL, FALSE);
|
||||
|
||||
return G_NODE (iter->user_data)->children != NULL;
|
||||
|
@ -799,39 +799,42 @@ static void
|
||||
gtk_tree_view_column_sort (GtkTreeViewColumn *tree_column,
|
||||
gpointer data)
|
||||
{
|
||||
GList *list;
|
||||
gint sort_column_id;
|
||||
GtkSortType order;
|
||||
gboolean has_sort_column;
|
||||
gboolean has_default_sort_func;
|
||||
|
||||
g_return_if_fail (tree_column->tree_view != NULL);
|
||||
|
||||
if (tree_column->show_sort_indicator)
|
||||
has_sort_column =
|
||||
gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model),
|
||||
&sort_column_id,
|
||||
&order);
|
||||
has_default_sort_func =
|
||||
gtk_tree_sortable_has_default_sort_func (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model));
|
||||
|
||||
if (has_sort_column &&
|
||||
sort_column_id == tree_column->sort_column_id)
|
||||
{
|
||||
if (tree_column->sort_order == GTK_SORT_ASCENDING)
|
||||
gtk_tree_view_column_set_sort_order (tree_column, GTK_SORT_DESCENDING);
|
||||
if (order == GTK_SORT_ASCENDING)
|
||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model),
|
||||
tree_column->sort_column_id,
|
||||
GTK_SORT_DESCENDING);
|
||||
else if (order == GTK_SORT_DESCENDING && has_default_sort_func)
|
||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model),
|
||||
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
|
||||
GTK_SORT_ASCENDING);
|
||||
else
|
||||
gtk_tree_view_column_set_sort_order (tree_column, GTK_SORT_ASCENDING);
|
||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model),
|
||||
tree_column->sort_column_id,
|
||||
GTK_SORT_ASCENDING);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_tree_view_column_set_sort_order (tree_column, GTK_SORT_ASCENDING);
|
||||
gtk_tree_view_column_set_sort_indicator (tree_column, TRUE);
|
||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model),
|
||||
tree_column->sort_column_id,
|
||||
GTK_SORT_ASCENDING);
|
||||
}
|
||||
|
||||
list = (GTK_TREE_VIEW (tree_column->tree_view)->priv->columns);
|
||||
g_assert (list);
|
||||
while (list)
|
||||
{
|
||||
GtkTreeViewColumn *tmp_column;
|
||||
|
||||
tmp_column = GTK_TREE_VIEW_COLUMN (list->data);
|
||||
if (tmp_column->visible && tmp_column != tree_column)
|
||||
gtk_tree_view_column_set_sort_indicator (tmp_column, FALSE);
|
||||
|
||||
list = list->next;
|
||||
}
|
||||
|
||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model),
|
||||
tree_column->sort_column_id,
|
||||
tree_column->sort_order);
|
||||
}
|
||||
|
||||
|
||||
@ -1777,9 +1780,11 @@ gtk_tree_view_column_get_widget (GtkTreeViewColumn *tree_column)
|
||||
/**
|
||||
* gtk_tree_view_column_set_alignment:
|
||||
* @tree_column: A #GtkTreeViewColumn.
|
||||
* @xalign: alignment (0.0 for left, 0.5 for center, 1.0 for right)
|
||||
* @xalign: The alignment, which is between [0.0 and 1.0] inclusive.
|
||||
*
|
||||
* Sets the alignment of the title or custom widget inside the column header.
|
||||
* The alignment determines its location inside the button -- 0.0 for left, 0.5
|
||||
* for center, 1.0 for right.
|
||||
**/
|
||||
void
|
||||
gtk_tree_view_column_set_alignment (GtkTreeViewColumn *tree_column,
|
||||
|
Loading…
Reference in New Issue
Block a user