[gtk+] treeview: width_changed is always true, so remove it



commit 48de0bf741df5ec3d7b43fe0dc3f37d1582de232
Author: Benjamin Otte <otte redhat com>
Date:   Sun Nov 12 04:55:17 2017 +0100

    treeview: width_changed is always true, so remove it
    
    Also, sanitize the RTL correction code that made sure resizing the width
    of a treeview would keep the contents glued to the right border instead
    of the left border.

 gtk/gtktreeview.c |   82 +++++++++++------------------------------------------
 1 files changed, 17 insertions(+), 65 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 3b83677..fc3da3b 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -482,8 +482,6 @@ struct _GtkTreeViewPrivate
   guint modify_selection_pressed : 1;
   guint extend_selection_pressed : 1;
 
-  guint init_hadjust_value : 1;
-
   guint in_top_row_to_dy : 1;
 
   /* interactive search */
@@ -1702,7 +1700,6 @@ gtk_tree_view_init (GtkTreeView *tree_view)
   priv->search_equal_func = gtk_tree_view_search_equal_func;
   priv->search_custom_entry_set = FALSE;
   priv->typeselect_flush_timeout = 0;
-  priv->init_hadjust_value = TRUE;    
   priv->width = 0;
           
   priv->hover_selection = FALSE;
@@ -2389,8 +2386,7 @@ gtk_tree_view_calculate_width_before_expander (GtkTreeView *tree_view)
 
 /* GtkWidget::size_allocate helper */
 static void
-gtk_tree_view_size_allocate_columns (GtkWidget *widget,
-                                    gboolean  *width_changed)
+gtk_tree_view_size_allocate_columns (GtkWidget *widget)
 {
   GtkTreeView *tree_view;
   GList *list, *first_column, *last_column;
@@ -2437,13 +2433,11 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget,
        number_of_expand_columns++;
     }
 
-  /* Only update the expand value if the width of the widget has changed,
-   * or the number of expand columns has changed, or if there are no expand
-   * columns, or if we didn't have an size-allocation yet after the
-   * last validated node.
+  /* Only update the expand value if the number of expand columns has changed,
+   * or if there are no expand columns, or if we didn't have an size-allocation
+   * yet after the last validated node.
    */
-  update_expand = (width_changed && *width_changed == TRUE)
-      || number_of_expand_columns != tree_view->priv->last_number_of_expand_columns
+  update_expand = number_of_expand_columns != tree_view->priv->last_number_of_expand_columns
       || number_of_expand_columns == 0
       || tree_view->priv->post_validation_flag == TRUE;
 
@@ -2526,8 +2520,6 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget,
   if (tree_view->priv->width != width)
     {
       tree_view->priv->width = width;
-      if (width_changed)
-        *width_changed = TRUE;
     }
 }
 
@@ -2560,63 +2552,23 @@ gtk_tree_view_size_allocate (GtkWidget           *widget,
 {
   GtkTreeView *tree_view = GTK_TREE_VIEW (widget);
   GList *tmp_list;
-  gboolean width_changed = TRUE;
-  gint old_width;
   double page_size;
 
-  old_width = gtk_widget_get_allocated_width (widget);
-  if (allocation->width != old_width)
-    width_changed = TRUE;
-
   /* We size-allocate the columns first because the width of the
    * tree view (used in updating the adjustments below) might change.
    */
-  gtk_tree_view_size_allocate_columns (widget, &width_changed);
+  gtk_tree_view_size_allocate_columns (widget);
   gtk_tree_view_size_allocate_drag_column (widget);
 
-  g_object_freeze_notify (G_OBJECT (tree_view->priv->hadjustment));
-  gtk_adjustment_set_page_size (tree_view->priv->hadjustment,
-                                allocation->width);
-  gtk_adjustment_set_page_increment (tree_view->priv->hadjustment,
-                                     allocation->width * 0.9);
-  gtk_adjustment_set_step_increment (tree_view->priv->hadjustment,
-                                     allocation->width * 0.1);
-  gtk_adjustment_set_lower (tree_view->priv->hadjustment, 0);
-  gtk_adjustment_set_upper (tree_view->priv->hadjustment,
-                            MAX (gtk_adjustment_get_page_size (tree_view->priv->hadjustment),
-                                 tree_view->priv->width));
-  g_object_thaw_notify (G_OBJECT (tree_view->priv->hadjustment));
-
-  if (_gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL)
-    {
-      if (allocation->width < tree_view->priv->width)
-        {
-         if (tree_view->priv->init_hadjust_value)
-           {
-             gtk_adjustment_set_value (tree_view->priv->hadjustment,
-                                        MAX (tree_view->priv->width -
-                                             allocation->width, 0));
-             tree_view->priv->init_hadjust_value = FALSE;
-           }
-         else if (allocation->width != old_width)
-           {
-             gtk_adjustment_set_value (tree_view->priv->hadjustment,
-                                        CLAMP (gtk_adjustment_get_value (tree_view->priv->hadjustment) - 
allocation->width + old_width,
-                                               0,
-                                               tree_view->priv->width - allocation->width));
-           }
-       }
-      else
-        {
-          gtk_adjustment_set_value (tree_view->priv->hadjustment, 0);
-         tree_view->priv->init_hadjust_value = TRUE;
-       }
-    }
-  else
-    if (gtk_adjustment_get_value (tree_view->priv->hadjustment) + allocation->width > tree_view->priv->width)
-      gtk_adjustment_set_value (tree_view->priv->hadjustment,
-                                MAX (tree_view->priv->width -
-                                     allocation->width, 0));
+  page_size = gtk_adjustment_get_page_size (tree_view->priv->vadjustment);
+  gtk_adjustment_configure (tree_view->priv->hadjustment,
+                            gtk_adjustment_get_value (tree_view->priv->hadjustment) +
+                            (_gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL ? allocation->width - 
page_size : 0),
+                            0,
+                            MAX (allocation->width, tree_view->priv->width),
+                            allocation->width * 0.1,
+                            allocation->width * 0.9,
+                            allocation->width);
 
   page_size = allocation->height - gtk_tree_view_get_effective_header_height (tree_view);
   gtk_adjustment_configure (tree_view->priv->vadjustment,
@@ -2638,7 +2590,7 @@ gtk_tree_view_size_allocate (GtkWidget           *widget,
       if (tree_view->priv->tree == NULL)
         invalidate_empty_focus (tree_view);
 
-      if (width_changed && tree_view->priv->expander_column)
+      if (tree_view->priv->expander_column)
         {
           /* Might seem awkward, but is the best heuristic I could come up
            * with.  Only if the width of the columns before the expander
@@ -11808,7 +11760,7 @@ gtk_tree_view_move_column_after (GtkTreeView       *tree_view,
   if (gtk_widget_get_realized (GTK_WIDGET (tree_view)))
     {
       gtk_widget_queue_resize (GTK_WIDGET (tree_view));
-      gtk_tree_view_size_allocate_columns (GTK_WIDGET (tree_view), NULL);
+      gtk_tree_view_size_allocate_columns (GTK_WIDGET (tree_view));
     }
 
   _gtk_tree_view_accessible_reorder_column (tree_view, column);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]