summaryrefslogtreecommitdiff
path: root/gtk/gtkgridview.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkgridview.c')
-rw-r--r--gtk/gtkgridview.c66
1 files changed, 35 insertions, 31 deletions
diff --git a/gtk/gtkgridview.c b/gtk/gtkgridview.c
index 2de555ce3b..c0fa4d136a 100644
--- a/gtk/gtkgridview.c
+++ b/gtk/gtkgridview.c
@@ -148,6 +148,35 @@ dump (GtkGridView *self)
g_print (" => %u widgets in %u list rows\n", n_widgets, n_list_rows);
}
+static void
+cell_augment (GtkRbTree *tree,
+ gpointer node_augment,
+ gpointer node,
+ gpointer left,
+ gpointer right)
+{
+ Cell *cell = node;
+ CellAugment *aug = node_augment;
+
+ gtk_list_item_manager_augment_node (tree, node_augment, node, left, right);
+
+ aug->size = cell->size;
+
+ if (left)
+ {
+ CellAugment *left_aug = gtk_rb_tree_get_augment (tree, left);
+
+ aug->size += left_aug->size;
+ }
+
+ if (right)
+ {
+ CellAugment *right_aug = gtk_rb_tree_get_augment (tree, right);
+
+ aug->size += right_aug->size;
+ }
+}
+
/*<private>
* gtk_grid_view_get_cell_at_y:
* @self: a #GtkGridView
@@ -1062,7 +1091,7 @@ gtk_grid_view_dispose (GObject *object)
gtk_list_item_tracker_free (self->item_manager, self->focus);
self->focus = NULL;
}
- g_clear_object (&self->item_manager);
+ self->item_manager = NULL;
G_OBJECT_CLASS (gtk_grid_view_parent_class)->dispose (object);
}
@@ -1604,6 +1633,10 @@ gtk_grid_view_class_init (GtkGridViewClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ list_base_class->list_item_name = "flowboxchild";
+ list_base_class->list_item_size = sizeof (Cell);
+ list_base_class->list_item_augment_size = sizeof (CellAugment);
+ list_base_class->list_item_augment_func = cell_augment;
list_base_class->adjustment_value_changed = gtk_grid_view_adjustment_value_changed;
widget_class->focus = gtk_grid_view_focus;
@@ -1803,38 +1836,9 @@ gtk_grid_view_class_init (GtkGridViewClass *klass)
}
static void
-cell_augment (GtkRbTree *tree,
- gpointer node_augment,
- gpointer node,
- gpointer left,
- gpointer right)
-{
- Cell *cell = node;
- CellAugment *aug = node_augment;
-
- gtk_list_item_manager_augment_node (tree, node_augment, node, left, right);
-
- aug->size = cell->size;
-
- if (left)
- {
- CellAugment *left_aug = gtk_rb_tree_get_augment (tree, left);
-
- aug->size += left_aug->size;
- }
-
- if (right)
- {
- CellAugment *right_aug = gtk_rb_tree_get_augment (tree, right);
-
- aug->size += right_aug->size;
- }
-}
-
-static void
gtk_grid_view_init (GtkGridView *self)
{
- self->item_manager = gtk_list_item_manager_new (GTK_WIDGET (self), "flowboxchild", Cell, CellAugment, cell_augment);
+ self->item_manager = gtk_list_base_get_manager (GTK_LIST_BASE (self));
self->anchor = gtk_list_item_tracker_new (self->item_manager);
self->anchor_xstart = TRUE;
self->anchor_ystart = TRUE;