On Mon, Sep 30, 2013 at 1:53 PM, Tristan Van Berkom <trista...@openismus.com
> wrote:

> Hi Matthias,
>
> On Sun, 2013-09-29 at 22:28 -0400, Matthias Clasen wrote:
> > I've pushed a flowbox branch, which adds a GtkFlowBox widget. It is a
> > copy of the EggFlowBox widget that has been developed in the
> > egg-list-box module for a while, which is in turn based on an earlier
> > EggSpreadTable in libegg.
>
> Based on EggWrapBox... EggSpreadTable was something a bit different.
>

I stand corrected...its been too long.


  o The flow box doesn't really flow anymore, i.e. differently sized
>     items can no longer wrap freely in the allocated space.
>
>     This is a bit disappointing, I also notice that this is already
>     missing in EggFlowBox, which removes the 'allocation-mode' and adds
>     a 'homogeneous' property.
>
>     The result is that wrapping/flowing widgets in this GtkFlowBox can
>     only ever show up as columns.
>
>     FWIW, the mode that does still exist was a sort of hack to optimize
>     what would otherwise be 'homogenous' mode, which turns a flow box
>     into grid like columns anyway.
>
>     An example of the functionality we are missing from wrap box:
>     +-------+---------------------+------+
>     |   A   |         B           |//////|
>     +-------+----+-------+-------++------+
>     |     C      |   D   |   E   |   F   |
>     +------------+-------+-------+-------+
>
>     In the above, the items A-F flow/wrap freely into the available
>     space, potentially showing the most content possible using less
>     height to do so.
>
>     To see it in action, try running:
>
>     ./libegg/libegg/wrapbox/testwrapbox
>       o Set the test items to "wrappy" for different sized items
>       o Set the allocation mode to "wrap free"
>

Yeah, that has been removed. Don't know any particular motivation, other
than 'we don't need that'. I was tempted to apply the same reasoning to the
vertical orientation, but I've left it in so far. It does add considerable
complication to the keynav handling and other areas.


>   o gtk_flow_box_insert() or gtk_container_add() add an intermediate
>     child, breaking the logical widget hierarchy.
>
>     For most of the history of GTK+, one can rely on the logical
>     hierarchy being preserved, i.e. adding a widget to a parent will
>     always pass the 'gtk_widget_get_parent (child) == parent' check.
>
>     Honestly I would be more comfortable with a policy where only a
>     specific child type can be added to the flowbox. The GtkToolBar
>     and GtkMenuShell apis are clearer by limiting what types of
>     children can be added, without breaking the logical widget
>     hierarchy.
>
>     In any case, I think this is worth at least a mention in
>     the gtk_container_add() documentation.
>

This is following recent precedents - we are now automatically inserting
viewports between a scrolled window and its child, and GtkListBox is
automatically wrapping its children in GtkListBoxRow intermediaries.

I agree that we should add some hints about this to the the
gtk_container_add docs.


>   o Problem in the demo/testflowbox... check and then uncheck the
>     "Filter" option, for some reason the items which were filtered out
>     don't show up again.
>
>     Not sure if this is a bug in the test case of in the widget code.
>

I'll have a look.

Thanks for the review !


Matthias
_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to