Richard and Jorge,

Many thanks.

It works when adding Richard's code snippet to what I already had, i.e. this:

void listsetsel ( .... int pos , bool isselect )
   {
   ....
   GtkTreeView * tv = ...
   GtkTreeSelection * tsel = gtk_tree_view_get_selection (tv);
   GtkTreeIter iter ;
   GtkListStore * store = (GtkListStore *)gtk_tree_view_get_model ( tv ) ;
   if ( gtk_tree_model_iter_nth_child ( (GtkTreeModel *)store ,
                                        &iter , NULL , pos ) )
      {
      if ( isselect )
         {
         gtk_tree_selection_select_iter ( tsel , &iter ) ;
         }
      else
         {
         gtk_tree_selection_unselect_iter ( tsel , &iter ) ;
         }
      }
   char row [20 ] ;
   sprintf ( row , "%d" , pos ) ;
   GtkTreePath * path = gtk_tree_path_new_from_string ( row ) ;
   gtk_tree_view_scroll_to_cell ( GTK_TREE_VIEW (tv), path, NULL, TRUE,
                                  0.0, 0.0 ) ;
   gtk_tree_view_set_cursor(GTK_TREE_VIEW (tv), path, NULL, FALSE ) ;
   gtk_tree_path_free ( path ) ;
   }








--- On Thu, 22/7/10, Jorge Kalmbach <kalmb...@gmail.com> wrote:

From: Jorge Kalmbach <kalmb...@gmail.com>
Subject: Re: How to make listview scroll to active position?
To: "Ken Resander" <kresan...@yahoo.com>
Cc: gtk-list@gnome.org
Date: Thursday, 22 July, 2010, 12:14 AM



On Wed, Jul 21, 2010 at 12:53 PM, Ken Resander <kresan...@yahoo.com> wrote:

The application uses a listview and works out current position in it, but the 
list does not scroll to it. The user have to do this manually, which is tedious 
if the active position is far down the list, say at position 5000.  


I am using the following fragment to set the selection at pos: 

[code]
   GtkTreeView * tv = ...
   GtkTreeSelection * tsel = gtk_tree_view_get_selection (tv);
   GtkTreeIter iter ;
   GtkListStore * store = (GtkListStore *)gtk_tree_view_get_model ( tv ) ;

   if ( gtk_tree_model_iter_nth_child ( (GtkTreeModel *)store ,
                                           
           &iter , NULL , pos ) )
      {
      gtk_tree_selection_select_iter ( tsel , &iter ) ;
      }
[/code]

How can I make the list scroll to the current selection?



You need to get the path of the selected cell and then use 
gtk_tree_view_scroll_to_cell

http://library.gnome.org/devel/gtk/stable/GtkTreeView.html#gtk-tree-view-scroll-to-cell


/jk



 
Are there better ways of doing this?



_______________________________________________

gtk-list mailing list

gtk-list@gnome.org

http://mail.gnome.org/mailman/listinfo/gtk-list






_______________________________________________
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to