Re: Restoring a List View's position



Hi all,

2009/3/17 muppet <scott asofyet org>:
Were you asking for the visible range after having removed the model?

I thought that might be the issue since I was disconnecting the model
to load data and reconnecting afterwards, but the reconnection happens
before the position restore.

You may need to wait for the adjustment change to take effect.  Try setting
the new scrollbar positions in an idle handler.  This may result in
undesirable flicker, in which case, your next idea isn't terribly
inappropriate.

This seems to have done the trick - even the standard priority seems
to do it with little to no flicker as far as I can tell, and puts it
exactly at the right place. Ta :)
Incidentally I tried a timeout handler as well - still worked, but
there was visible flicker no matter how 'soon' I scheduled it for. In
case someone is searching for some code to help in future, the
following works (although doesn't handle the horizontal scrollbars
obviously):

Glib::Idle->add(sub {
  my $args = shift;
  my ($pos, $list) = @$args;
  my $adj = $list->get_vadjustment;
  return 0 if not defined $adj; ## JIC
  $pos = $adj->upper if $pos > $adj->upper; # In case the list has shrunk since
  $adj->set_value($pos);
  0;
}, [$listposition, $listview]);

Well, if you want it to look to the user as though the view is just as he
left it, then simply scrolling a certain row onscreen may not be sufficient.
 If i understand correctly, when you scroll to the list item, it's somewhat
random as to where it will be (depends on your parameters).  So, scroll to
point isn't that bad of a compromise.

True - i forgot that scroll_to_cell doesn't really define where in the
view the cell will be.

2009/3/17 Kevin Ryde <user42 zip com au>:
I initially tried using $treeview->get_visible_range and
$treeview->scroll_to_cell, but get_visible_range seems to be a little
flakey on my system and often aborts with a message about some
assertion failing (something != nil I think).

Sounds like a bug.

It probably is - it seems the age of the current (approved) install of
Gtk and perl/Gtk is somewhat ancient. Maybe it would have been better
if I didn't find a solution to force an upgrade :)

MB



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