]> Pileus Git - ~andy/gtk/commitdiff
Add "use_align" to give people the option to just make a cell visible.
authorJonathan Blandford <jrb@redhat.com>
Fri, 24 Aug 2001 20:09:26 +0000 (20:09 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Fri, 24 Aug 2001 20:09:26 +0000 (20:09 +0000)
Fri Aug 24 16:03:45 2001  Jonathan Blandford  <jrb@redhat.com>

* gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): Add
"use_align" to give people the option to just make a cell visible.

* gtk/gtktreeview.c (gtk_tree_view_scroll_to_point): fix bug where
we were scrolling past the end of the tree.

* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_start):
rename gtk_tree_view_column_pack_start_cell_renderer to
gtk_tree_view_column_pack_start.  Same for pack_end, and clear.

14 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkmain.c
gtk/gtktreemodel.c
gtk/gtktreeprivate.h
gtk/gtktreeview.c
gtk/gtktreeview.h
gtk/gtktreeviewcolumn.c
gtk/gtktreeviewcolumn.h

index df77eeac86c1e343632ac4fc7284c19fc91aaf98..e7ecce63d2bf3aea893a8b6a0fd5d170752cfbd9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+Fri Aug 24 16:03:45 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): Add
+       "use_align" to give people the option to just make a cell visible.
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_point): fix bug where
+       we were scrolling past the end of the tree.
+
+       * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_start):
+       rename gtk_tree_view_column_pack_start_cell_renderer to
+       gtk_tree_view_column_pack_start.  Same for pack_end, and clear.
+
 Fri Aug 24 12:02:08 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_new): Remove
index df77eeac86c1e343632ac4fc7284c19fc91aaf98..e7ecce63d2bf3aea893a8b6a0fd5d170752cfbd9 100644 (file)
@@ -1,3 +1,15 @@
+Fri Aug 24 16:03:45 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): Add
+       "use_align" to give people the option to just make a cell visible.
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_point): fix bug where
+       we were scrolling past the end of the tree.
+
+       * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_start):
+       rename gtk_tree_view_column_pack_start_cell_renderer to
+       gtk_tree_view_column_pack_start.  Same for pack_end, and clear.
+
 Fri Aug 24 12:02:08 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_new): Remove
index df77eeac86c1e343632ac4fc7284c19fc91aaf98..e7ecce63d2bf3aea893a8b6a0fd5d170752cfbd9 100644 (file)
@@ -1,3 +1,15 @@
+Fri Aug 24 16:03:45 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): Add
+       "use_align" to give people the option to just make a cell visible.
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_point): fix bug where
+       we were scrolling past the end of the tree.
+
+       * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_start):
+       rename gtk_tree_view_column_pack_start_cell_renderer to
+       gtk_tree_view_column_pack_start.  Same for pack_end, and clear.
+
 Fri Aug 24 12:02:08 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_new): Remove
index df77eeac86c1e343632ac4fc7284c19fc91aaf98..e7ecce63d2bf3aea893a8b6a0fd5d170752cfbd9 100644 (file)
@@ -1,3 +1,15 @@
+Fri Aug 24 16:03:45 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): Add
+       "use_align" to give people the option to just make a cell visible.
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_point): fix bug where
+       we were scrolling past the end of the tree.
+
+       * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_start):
+       rename gtk_tree_view_column_pack_start_cell_renderer to
+       gtk_tree_view_column_pack_start.  Same for pack_end, and clear.
+
 Fri Aug 24 12:02:08 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_new): Remove
index df77eeac86c1e343632ac4fc7284c19fc91aaf98..e7ecce63d2bf3aea893a8b6a0fd5d170752cfbd9 100644 (file)
@@ -1,3 +1,15 @@
+Fri Aug 24 16:03:45 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): Add
+       "use_align" to give people the option to just make a cell visible.
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_point): fix bug where
+       we were scrolling past the end of the tree.
+
+       * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_start):
+       rename gtk_tree_view_column_pack_start_cell_renderer to
+       gtk_tree_view_column_pack_start.  Same for pack_end, and clear.
+
 Fri Aug 24 12:02:08 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_new): Remove
index df77eeac86c1e343632ac4fc7284c19fc91aaf98..e7ecce63d2bf3aea893a8b6a0fd5d170752cfbd9 100644 (file)
@@ -1,3 +1,15 @@
+Fri Aug 24 16:03:45 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): Add
+       "use_align" to give people the option to just make a cell visible.
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_point): fix bug where
+       we were scrolling past the end of the tree.
+
+       * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_start):
+       rename gtk_tree_view_column_pack_start_cell_renderer to
+       gtk_tree_view_column_pack_start.  Same for pack_end, and clear.
+
 Fri Aug 24 12:02:08 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_new): Remove
index df77eeac86c1e343632ac4fc7284c19fc91aaf98..e7ecce63d2bf3aea893a8b6a0fd5d170752cfbd9 100644 (file)
@@ -1,3 +1,15 @@
+Fri Aug 24 16:03:45 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): Add
+       "use_align" to give people the option to just make a cell visible.
+
+       * gtk/gtktreeview.c (gtk_tree_view_scroll_to_point): fix bug where
+       we were scrolling past the end of the tree.
+
+       * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_start):
+       rename gtk_tree_view_column_pack_start_cell_renderer to
+       gtk_tree_view_column_pack_start.  Same for pack_end, and clear.
+
 Fri Aug 24 12:02:08 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_new): Remove
index c4b40b09515bd6023a9ea5555b2fe1611b16e063..8a24f8f279e7c8991950a62a4d014dbd21dff86d 100644 (file)
@@ -203,7 +203,7 @@ add_dll_suffix (gchar *module_name)
 static gboolean
 check_setugid (void)
 {
-/* this isn't at all relevant on Windoze and doesn't compile ... --hb */
+/* this isn't at all relevant on MS Windows and doesn't compile ... --hb */
 #ifndef G_OS_WIN32
   uid_t ruid, euid, suid; /* Real, effective and saved user ID's */
   gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */
index 3f35087a954ee7ee06b3bff0f1559781972143ef..1e198ec326ca51f5c9e75cadb8405138a4dc57f0 100644 (file)
@@ -510,7 +510,7 @@ gtk_tree_path_up (GtkTreePath *path)
 {
   g_return_val_if_fail (path != NULL, FALSE);
 
-  if (path->depth == 1)
+  if (path->depth == 0)
     return FALSE;
 
   path->depth--;
index d5cb1bc3d7c8fd4116fde191d076089934eb54a4..ca33894c5d9e39473d5decfdec2a5f95fd5e61a7 100644 (file)
@@ -165,6 +165,7 @@ struct _GtkTreeViewPrivate
   GtkTreeViewColumn *scroll_to_column;
   gfloat scroll_to_row_align;
   gfloat scroll_to_col_align;
+  guint scroll_to_use_align : 1;
 
   guint reorderable : 1;
   guint header_has_focus : 1;
index 674bc8f31b30dcd8180e4adbcd3da5420c0aacc1..05815800be86f83fed9a48f3e5d9f9561062f98a 100644 (file)
@@ -1211,6 +1211,7 @@ gtk_tree_view_realize (GtkWidget *widget)
       gtk_tree_view_scroll_to_cell (tree_view,
                                    tree_view->priv->scroll_to_path,
                                    tree_view->priv->scroll_to_column,
+                                   tree_view->priv->scroll_to_use_align,
                                    tree_view->priv->scroll_to_row_align,
                                    tree_view->priv->scroll_to_col_align);
       if (tree_view->priv->scroll_to_path)
@@ -3136,6 +3137,7 @@ drag_scan_timeout (gpointer data)
           gtk_tree_view_scroll_to_cell (tree_view,
                                         path,
                                         column,
+                                       TRUE,
                                         0.5, 0.5);
 
           gtk_tree_path_free (path);
@@ -6985,8 +6987,8 @@ gtk_tree_view_scroll_to_point (GtkTreeView *tree_view,
   hadj = tree_view->priv->hadjustment;
   vadj = tree_view->priv->vadjustment;
 
-  gtk_adjustment_set_value (hadj, CLAMP (tree_x, hadj->lower, hadj->upper));
-  gtk_adjustment_set_value (vadj, CLAMP (tree_y, vadj->lower, vadj->upper));
+  gtk_adjustment_set_value (hadj, CLAMP (tree_x, hadj->lower, hadj->upper - hadj->page_size));
+  gtk_adjustment_set_value (vadj, CLAMP (tree_y, vadj->lower, vadj->upper - vadj->page_size));
 }
 
 /**
@@ -6994,21 +6996,24 @@ gtk_tree_view_scroll_to_point (GtkTreeView *tree_view,
  * @tree_view: A #GtkTreeView.
  * @path: The path of the row to move to.
  * @column: The #GtkTreeViewColumn to move horizontally to.
+ * @use_align: whether to use alignment arguments, or %FALSE.
  * @row_align: The vertical alignment of the row specified by @path.
  * @col_align: The horizontal alignment of the column specified by @column.
  *
- * Moves the alignments of @tree_view to the position specified by
- * @column and @path.  If @column is NULL, then no horizontal
- * scrolling occurs.  Likewise, if @path is NULL no vertical scrolling
- * occurs.  @row_align determines where the row is placed, and
- * @col_align determines where @column is placed.  Both are expected
- * to be between 0.0 and 1.0. 0.0 means left/top alignment, 1.0 means
- * right/bottom alignment, 0.5 means center.
+ * Moves the alignments of @tree_view to the position specified by @column and
+ * @path.  If @column is NULL, then no horizontal scrolling occurs.  Likewise,
+ * if @path is NULL no vertical scrolling occurs.  @row_align determines where
+ * the row is placed, and @col_align determines where @column is placed.  Both
+ * are expected to be between 0.0 and 1.0. 0.0 means left/top alignment, 1.0
+ * means right/bottom alignment, 0.5 means center.  If @use_align is %TRUE, then
+ * the alignment arguments are ignored, and the tree does the minimum amount of
+ * work to scroll the cell onto the screen.
  **/
 void
 gtk_tree_view_scroll_to_cell (GtkTreeView       *tree_view,
                               GtkTreePath       *path,
                               GtkTreeViewColumn *column,
+                             gboolean           use_align,
                               gfloat             row_align,
                               gfloat             col_align)
 {
@@ -7034,6 +7039,7 @@ gtk_tree_view_scroll_to_cell (GtkTreeView       *tree_view,
        tree_view->priv->scroll_to_path = gtk_tree_path_copy (path);
       if (column)
        tree_view->priv->scroll_to_column = column;
+      tree_view->priv->scroll_to_use_align = use_align;
       tree_view->priv->scroll_to_row_align = row_align;
       tree_view->priv->scroll_to_col_align = col_align;
 
@@ -7046,18 +7052,34 @@ gtk_tree_view_scroll_to_cell (GtkTreeView       *tree_view,
   dest_x = vis_rect.x;
   dest_y = vis_rect.y;
 
-  if (path)
+  if (column)
     {
-      dest_x = cell_rect.x +
-        cell_rect.width * row_align -
-        vis_rect.width * row_align;
+      if (use_align)
+       {
+         dest_x = cell_rect.x + cell_rect.width * row_align - vis_rect.width * row_align;
+       }
+      else
+       {
+         if (dest_x < vis_rect.x)
+           dest_x = vis_rect.x;
+         else if (dest_x + cell_rect.width > vis_rect.x + vis_rect.width)
+           dest_x = vis_rect.x + vis_rect.width - cell_rect.width;
+       }
     }
 
-  if (column)
+  if (path)
     {
-      dest_y = cell_rect.y +
-        cell_rect.height * col_align -
-        vis_rect.height * col_align;
+      if (use_align)
+       {
+         dest_y = cell_rect.y + cell_rect.height * col_align - vis_rect.height * col_align;
+       }
+      else
+       {
+         if (dest_y < vis_rect.y)
+           dest_y = vis_rect.y;
+         else if (dest_y + cell_rect.height > vis_rect.y +  vis_rect.height)
+           dest_y = vis_rect.y + vis_rect.height - cell_rect.height;
+       }
     }
 
   gtk_tree_view_scroll_to_point (tree_view, dest_x, dest_y);
@@ -8886,7 +8908,7 @@ gtk_tree_view_search_iter (GtkTreeModel     *model,
           gtk_tree_selection_select_iter (selection, iter);
           
           path = gtk_tree_model_get_path (model, iter);
-         gtk_tree_view_scroll_to_cell (tree_view, path, column, 0.5, 0.5);
+         gtk_tree_view_scroll_to_cell (tree_view, path, column, TRUE, 0.5, 0.5);
          gtk_tree_view_real_set_cursor (tree_view, path, FALSE);
           gtk_tree_path_free (path);
           
@@ -8920,7 +8942,7 @@ gtk_tree_view_search_iter (GtkTreeModel     *model,
               gtk_tree_selection_select_iter (selection, iter);
               
               path = gtk_tree_model_get_path (model, iter);
-              gtk_tree_view_scroll_to_cell (tree_view, path, column, 0.5, 0.5);
+              gtk_tree_view_scroll_to_cell (tree_view, path, column, TRUE, 0.5, 0.5);
              gtk_tree_view_real_set_cursor (tree_view, path, FALSE);
               gtk_tree_path_free (path);
               
index d12208f441a5090b0da8779573f0765d0ca18e7d..d748ccf4a1044aa460a4111387d7d052c84cb121 100644 (file)
@@ -189,6 +189,7 @@ void                   gtk_tree_view_scroll_to_point               (GtkTreeView
 void                   gtk_tree_view_scroll_to_cell                (GtkTreeView               *tree_view,
                                                                    GtkTreePath               *path,
                                                                    GtkTreeViewColumn         *column,
+                                                                   gboolean                   use_align,
                                                                    gfloat                     row_align,
                                                                    gfloat                     col_align);
 void                   gtk_tree_view_row_activated                 (GtkTreeView               *tree_view,
index 6892ddb66da6d255cdab4ec81c61020228108e2f..860ec62ee407f574ed0f189687279dc5953c8883 100644 (file)
@@ -1053,7 +1053,7 @@ void
 gtk_tree_view_column_set_cell_renderer (GtkTreeViewColumn *tree_column,
                                        GtkCellRenderer   *cell)
 {
-  gtk_tree_view_column_pack_start_cell_renderer (tree_column, cell, TRUE, TRUE, 0);
+  gtk_tree_view_column_pack_start (tree_column, cell, TRUE, TRUE, 0);
 }
 
 static GtkTreeViewColumnCellInfo *
@@ -1068,7 +1068,7 @@ gtk_tree_view_column_get_cell_info (GtkTreeViewColumn *tree_column,
 }
 
 /**
- * gtk_tree_view_column_pack_start_cell_renderer:
+ * gtk_tree_view_column_pack_start:
  * @tree_column: A #GtkTreeViewColumn.
  * @cell: The #GtkCellRenderer, 
  * @expand: TRUE if @cell is to be given extra space allocated to box.
@@ -1078,11 +1078,11 @@ gtk_tree_view_column_get_cell_info (GtkTreeViewColumn *tree_column,
  * Packs a cell into 
  **/
 void
-gtk_tree_view_column_pack_start_cell_renderer (GtkTreeViewColumn  *tree_column,
-                                              GtkCellRenderer    *cell,
-                                              gboolean            expand,
-                                              gboolean            fill,
-                                              guint               padding)
+gtk_tree_view_column_pack_start (GtkTreeViewColumn *tree_column,
+                                GtkCellRenderer   *cell,
+                                gboolean           expand,
+                                gboolean           fill,
+                                guint              padding)
 {
   GtkTreeViewColumnCellInfo *cell_info;
 
@@ -1104,11 +1104,11 @@ gtk_tree_view_column_pack_start_cell_renderer (GtkTreeViewColumn  *tree_column,
 }
 
 void
-gtk_tree_view_column_pack_end_cell_renderer (GtkTreeViewColumn  *tree_column,
-                                            GtkCellRenderer    *cell,
-                                            gboolean            expand,
-                                            gboolean            fill,
-                                            guint               padding)
+gtk_tree_view_column_pack_end (GtkTreeViewColumn  *tree_column,
+                              GtkCellRenderer    *cell,
+                              gboolean            expand,
+                              gboolean            fill,
+                              guint               padding)
 {
   GtkTreeViewColumnCellInfo *cell_info;
 
@@ -1131,7 +1131,7 @@ gtk_tree_view_column_pack_end_cell_renderer (GtkTreeViewColumn  *tree_column,
 
 
 void
-gtk_tree_view_column_clear_cell_renderers (GtkTreeViewColumn *tree_column)
+gtk_tree_view_column_clear (GtkTreeViewColumn *tree_column)
 {
   GList *list;
   g_return_if_fail (tree_column != NULL);
@@ -1502,7 +1502,8 @@ gtk_tree_view_column_set_width (GtkTreeViewColumn *tree_column,
  * gtk_tree_view_column_get_width:
  * @tree_column: a #GtkTreeViewColumn
  * 
- * Gets the value set by gtk_tree_view_column_set_width().
+ * Gets the value set by gtk_tree_view_column_set_width().  This may not be the
+ * actual width of the column on the screen, just what is requested.
  * 
  * Return value: the width of the column
  **/
@@ -1587,7 +1588,9 @@ gtk_tree_view_column_get_min_width (GtkTreeViewColumn *tree_column)
  * @max_width: The maximum width of the column in pixels, or -1.
  * 
  * Sets the maximum width of the @tree_column.  If @max_width is -1, then the
- * maximum width is unset.
+ * maximum width is unset.  Note, the column can actually be wider than max
+ * width if it's the last column in a view.  In this case, the column expands to
+ * fill the view.
  **/
 void
 gtk_tree_view_column_set_max_width (GtkTreeViewColumn *tree_column,
index 2b0f143dceac3804967663124fab17389eca0972..cccfb0d1e45edc083f4175b0e7f419651571ce5f 100644 (file)
@@ -110,18 +110,18 @@ GtkTreeViewColumn      *gtk_tree_view_column_new_with_attributes (const gchar
                                                                  ...);
 void                    gtk_tree_view_column_set_cell_renderer   (GtkTreeViewColumn       *tree_column,
                                                                  GtkCellRenderer         *cell);
-void                    gtk_tree_view_column_pack_start_cell_renderer (GtkTreeViewColumn  *tree_column,
-                                                                      GtkCellRenderer    *cell,
-                                                                      gboolean            expand,
-                                                                      gboolean            fill,
-                                                                      guint               padding);
-void                    gtk_tree_view_column_pack_end_cell_renderer   (GtkTreeViewColumn  *tree_column,
-                                                                      GtkCellRenderer    *cell,
-                                                                      gboolean            expand,
-                                                                      gboolean            fill,
-                                                                      guint               padding);
-void                    gtk_tree_view_column_clear_cell_renderers     (GtkTreeViewColumn  *tree_column);
-GList                  *gtk_tree_view_column_get_cell_renderers       (GtkTreeViewColumn  *tree_column);
+void                    gtk_tree_view_column_pack_start          (GtkTreeViewColumn       *tree_column,
+                                                                 GtkCellRenderer         *cell,
+                                                                 gboolean                 expand,
+                                                                 gboolean                 fill,
+                                                                 guint                    padding);
+void                    gtk_tree_view_column_pack_end            (GtkTreeViewColumn       *tree_column,
+                                                                 GtkCellRenderer         *cell,
+                                                                 gboolean                 expand,
+                                                                 gboolean                 fill,
+                                                                 guint                    padding);
+void                    gtk_tree_view_column_clear               (GtkTreeViewColumn       *tree_column);
+GList                  *gtk_tree_view_column_get_cell_renderers  (GtkTreeViewColumn       *tree_column);
 void                    gtk_tree_view_column_add_attribute       (GtkTreeViewColumn       *tree_column,
                                                                  GtkCellRenderer         *cell_renderer,
                                                                  const gchar             *attribute,