+
+void
+pspp_sheet_view_column_size_request (PsppSheetViewColumn *tree_column,
+ GtkRequisition *request)
+{
+ GtkWidget *base = GTK_WIDGET (tree_column->tree_view);
+ GtkRequisition label_req;
+ GtkRequisition align_req;
+ GtkRequisition arrow_req;
+ GtkRequisition hbox_req;
+ GtkStyle **button_style;
+
+ if (tree_column->button)
+ {
+ gtk_widget_get_preferred_size (tree_column->button, NULL, request);
+ return;
+ }
+
+ facade_label_get_size_request (0, 0, base, tree_column->title, &label_req);
+ facade_alignment_get_size_request (0, 0, 0, 0, 0, &label_req, &align_req);
+ facade_arrow_get_size_request (0, 0, &arrow_req);
+
+ facade_hbox_get_base_size_request (0, 2, 2, &hbox_req);
+ facade_hbox_add_child_size_request (0, &arrow_req, 0, &hbox_req);
+ facade_hbox_add_child_size_request (0, &align_req, 0, &hbox_req);
+
+ button_style = &PSPP_SHEET_VIEW (tree_column->tree_view)->priv->button_style;
+ if (*button_style == NULL)
+ {
+ *button_style = facade_get_style (base, GTK_TYPE_BUTTON, 0);
+ g_object_ref (*button_style);
+ }
+ facade_button_get_size_request (0, base, *button_style, &hbox_req, request);
+}
+
+void
+pspp_sheet_view_column_size_allocate (PsppSheetViewColumn *tree_column,
+ GtkAllocation *allocation)
+{
+ tree_column->allocation = *allocation;
+ if (tree_column->button)
+ gtk_widget_size_allocate (tree_column->button, allocation);
+}
+
+gboolean
+pspp_sheet_view_column_can_focus (PsppSheetViewColumn *tree_column)
+{
+ return tree_column->reorderable || tree_column->clickable;
+}