static void cell_area_scaffold_init (CellAreaScaffold *scaffold) { CellAreaScaffoldPrivate *priv; scaffold->priv = G_TYPE_INSTANCE_GET_PRIVATE (scaffold, TYPE_CELL_AREA_SCAFFOLD, CellAreaScaffoldPrivate); priv = scaffold->priv; priv->area = gtk_cell_area_box_new (); priv->context = gtk_cell_area_create_context (priv->area); priv->row_data = g_array_new (FALSE, FALSE, sizeof (RowData)); gtk_widget_set_has_window (GTK_WIDGET (scaffold), FALSE); gtk_widget_set_can_focus (GTK_WIDGET (scaffold), TRUE); priv->size_changed_id = g_signal_connect (priv->context, "notify", G_CALLBACK (size_changed_cb), scaffold); priv->focus_changed_id = g_signal_connect (priv->area, "focus-changed", G_CALLBACK (focus_changed_cb), scaffold); priv->add_editable_id = g_signal_connect (priv->area, "add-editable", G_CALLBACK (add_editable_cb), scaffold); priv->remove_editable_id = g_signal_connect (priv->area, "remove-editable", G_CALLBACK (remove_editable_cb), scaffold); }
static GObject * gtk_cell_view_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { GObject *object; GtkCellView *view; GtkCellViewPrivate *priv; object = G_OBJECT_CLASS (gtk_cell_view_parent_class)->constructor (type, n_construct_properties, construct_properties); view = GTK_CELL_VIEW (object); priv = view->priv; if (!priv->area) { priv->area = gtk_cell_area_box_new (); g_object_ref_sink (priv->area); } if (!priv->context) priv->context = gtk_cell_area_create_context (priv->area); priv->size_changed_id = g_signal_connect (priv->context, "notify", G_CALLBACK (context_size_changed_cb), view); return object; }
/* test that new_with_context() keeps the provided area */ static void test_cellview_new_with_context (void) { GtkWidget *view; GtkCellArea *area; GtkCellAreaContext *context; area = gtk_cell_area_box_new (); context = gtk_cell_area_create_context (area); view = gtk_cell_view_new_with_context (area, context); g_assert (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (view)) == area); g_object_ref_sink (view); g_object_unref (view); }