[gtk+/native-layout] Partially fixed GtkTreeview for extended layout
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/native-layout] Partially fixed GtkTreeview for extended layout
- Date: Sun, 4 Apr 2010 02:47:43 +0000 (UTC)
commit 22de1a7c65580ad2c73fb989984c332dd850f6b0
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date: Sat Apr 3 20:30:14 2010 -0400
Partially fixed GtkTreeview for extended layout
Removed the size_request() handling on the class and calculate
minimum size from get_desired_size(); base the natural width on
either the minimum of column headers, or a greater natural request
of the columns renderers.
gtk/gtktreeview.c | 76 +++++++++++++++++++++++++---------------------------
1 files changed, 37 insertions(+), 39 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 5293b04..f680f62 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -166,8 +166,6 @@ static void gtk_tree_view_destroy (GtkObject *object);
static void gtk_tree_view_realize (GtkWidget *widget);
static void gtk_tree_view_unrealize (GtkWidget *widget);
static void gtk_tree_view_map (GtkWidget *widget);
-static void gtk_tree_view_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
static void gtk_tree_view_size_allocate (GtkWidget *widget,
GtkAllocation *allocation);
static gboolean gtk_tree_view_expose (GtkWidget *widget,
@@ -518,7 +516,6 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
widget_class->map = gtk_tree_view_map;
widget_class->realize = gtk_tree_view_realize;
widget_class->unrealize = gtk_tree_view_unrealize;
- widget_class->size_request = gtk_tree_view_size_request;
widget_class->size_allocate = gtk_tree_view_size_allocate;
widget_class->button_press_event = gtk_tree_view_button_press;
widget_class->button_release_event = gtk_tree_view_button_release;
@@ -2027,37 +2024,6 @@ gtk_tree_view_update_size (GtkTreeView *tree_view)
tree_view->priv->height = tree_view->priv->tree->root->offset;
}
-static void
-gtk_tree_view_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- GtkTreeView *tree_view = GTK_TREE_VIEW (widget);
- GList *tmp_list;
-
- /* we validate some rows initially just to make sure we have some size.
- * In practice, with a lot of static lists, this should get a good width.
- */
- do_validate_rows (tree_view, FALSE);
- gtk_tree_view_size_request_columns (tree_view);
- gtk_tree_view_update_size (GTK_TREE_VIEW (widget));
-
- requisition->width = tree_view->priv->width;
- requisition->height = tree_view->priv->height + TREE_VIEW_HEADER_HEIGHT (tree_view);
-
- tmp_list = tree_view->priv->children;
-
- while (tmp_list)
- {
- GtkTreeViewChild *child = tmp_list->data;
- GtkRequisition child_requisition;
-
- tmp_list = tmp_list->next;
-
- if (gtk_widget_get_visible (child->widget))
- gtk_widget_size_request (child->widget, &child_requisition);
- }
-}
-
static int
gtk_tree_view_calculate_width_before_expander (GtkTreeView *tree_view)
{
@@ -2179,8 +2145,8 @@ gtk_tree_view_get_real_natural_width_from_column (GtkTreeView *tree_view,
if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE))
{
- gtk_extended_layout_get_desired_size (GTK_EXTENDED_LAYOUT (column->button),
- NULL, &button_natural_size);
+ gtk_widget_get_desired_size (column->button,
+ NULL, &button_natural_size);
column_natural_width = MAX (column_natural_width, button_natural_size.width);
}
@@ -2197,7 +2163,7 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget,
GList *list, *first_column, *last_column;
GtkTreeViewColumn *column;
GtkAllocation allocation;
- gint width = 0, natural_width;
+ gint width = 0, natural_width = 0;
gint extra, extra_per_column, extra_for_last;
gint full_requested_width = 0;
gint full_natural_width = 0;
@@ -15738,6 +15704,38 @@ gtk_tree_view_get_tooltip_column (GtkTreeView *tree_view)
return tree_view->priv->tooltip_column;
}
+
+static void
+gtk_tree_view_get_minimum_size (GtkWidget *widget,
+ GtkRequisition *requisition)
+{
+ GtkTreeView *tree_view = GTK_TREE_VIEW (widget);
+ GList *tmp_list;
+
+ /* we validate some rows initially just to make sure we have some size.
+ * In practice, with a lot of static lists, this should get a good width.
+ */
+ do_validate_rows (tree_view, FALSE);
+ gtk_tree_view_size_request_columns (tree_view);
+ gtk_tree_view_update_size (GTK_TREE_VIEW (widget));
+
+ requisition->width = tree_view->priv->width;
+ requisition->height = tree_view->priv->height + TREE_VIEW_HEADER_HEIGHT (tree_view);
+
+ tmp_list = tree_view->priv->children;
+
+ while (tmp_list)
+ {
+ GtkTreeViewChild *child = tmp_list->data;
+ GtkRequisition child_requisition;
+
+ tmp_list = tmp_list->next;
+
+ if (gtk_widget_get_visible (child->widget))
+ gtk_widget_size_request (child->widget, &child_requisition);
+ }
+}
+
static void
gtk_tree_view_extended_layout_get_desired_size (GtkExtendedLayout *layout,
GtkRequisition *minimal_size,
@@ -15750,7 +15748,7 @@ gtk_tree_view_extended_layout_get_desired_size (GtkExtendedLayout *layout,
tree_view = GTK_TREE_VIEW (layout);
- gtk_widget_size_request (GTK_WIDGET (layout), &requisition);
+ gtk_tree_view_get_minimum_size (GTK_WIDGET (layout), &requisition);
for (column_iter = tree_view->priv->columns; column_iter; column_iter = column_iter->next)
{
@@ -15768,7 +15766,7 @@ gtk_tree_view_extended_layout_get_desired_size (GtkExtendedLayout *layout,
if (desired_size)
{
desired_size->height = requisition.height;
- desired_size->width = natural_width;
+ desired_size->width = MAX (requisition.width, natural_width);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]