Re: GtkTreeView update problem

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

 



Hi Joone,

On Mon, Sep 21, 2009 at 2:07 PM, Joone Hur <joone@xxxxxxxx> wrote:
> In this case, if there are a lot of items, the middle part of tree
> view is not rendered properly during scrolling.
> I think if the height of gdkwindow in the treeview is over than
> 32767px, it seems not like being rendered well.

I have come across this problem before.  Putting tree views in a view
port will cause the view port to create a very large X window (with a
height larger than 32768 pixels).  Such large windows have to be
handled specially (see gtk+/x11/gdkgeometry-x11.c in the GTK+ source
code of versions 2.16.x and lower).  I suspect there is a bug in the
geometry code causing this.  I've started debugging this one day, but
have never finished it.  GTK+ 2.18 introduces client side windows and
removes all the gdkgeometry code.  Because of this, things work fine
under GTK+ 2.18 and the problem does not occur.

However, generally you should not put GtkTreeView (or any other
"scrollable" widget such as GtkIconView) in a box and then in a view
port.  GtkTreeView, GtkIconView, etc have been designed to be put
*directly* into a GtkScrolledWindow.  If you do not do so, several
things related to scrolling in the widget will be broken (for example,
keyboard navigation and programmatic scrolls using
gtk_tree_view_scroll_to_point()) and because such a large window will
have to be created, a lot of memory will be used.  When put directly
into a GtkScrolledWindow, several "tricks" are used to avoid creating
such a large window, drastically reducing memory consumption and
making it possible to have lists with a very large amount of nodes.

Hope this helps.


regards,

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

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux