[haiku-development] Re: Automatically set window / view Layout

  • From: "Clemens Zeidler" <clemens.zeidler@xxxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Tue, 17 Aug 2010 10:54:19 +1200

Am 17.08.2010, 10:46 Uhr, schrieb Alex Wilson <yourpalal2@xxxxxxxxx>:

On Mon, Aug 16, 2010 at 3:07 PM, Clemens Zeidler <
clemens.zeidler@xxxxxxxxxxxxxx> wrote:

Am 16.08.2010, 21:40 Uhr, schrieb Stephan Assmus <superstippi@xxxxxx>:


 Am 16.08.2010 00:46, schrieb Clemens:

Hi,

after a long time I wrote a gui app again and I was amazed how easy it is to setup a basic view layout with the layout engine and the layout friendly
constructors :-).

But when I run my program nothing showed up! The problem was that I
haven't call the SetLayout method. I remember I did this mistake earlier so
maybe also other people will run into it. Why I have to set the layout
manually? Because the window does not know which kind of BLayout is needed? Can we provide a default BWindow layout to omit the SetLayout call or set one in AddChild if needed? I feel the SetLayout call is not very intuitive.

At first I always found this step unintuitive as well, but once you know
the system better, it becomes clear why it's needed/useful: You can for
example directly attach children to the otherwise inaccessible top-level BView. A regular layout with a BMenuBar and another view below it does not
require another view above, but only a vertical BGroupLayout attached
"directly" to the window. In any case, there are forms of using the
BLayoutBuilder that does not require adding an extra layout, like passing
the window pointer to the builder, I believe. We should advertise those
forms in the examples. Of course adding a default vertical BGroupLayout to
the window, if there is none otherwise, would remove this pitfall.


Maybe ask in AddChild if the new view has a Layout and in this case add a default BGroupLayout to the (layout less) window? So you can still use it in
the way you described it above.


One of the main problems with this is compatibility, for example, if
non-layouted window had a view added that was from an external source (eg. a
translator's config view) that had a layout, the window would then have a
layout set and all the views would be re-added to the layout, so they would all end up in a vertical arrangement. This could cause some very confusing
bugs. After R1, it would probably be good to have a default layout, but
until then, I don't think it is feasible.

Plus, the layout builders Stippi mentioned are really handy!

--Alex

Ok understand, and if we only add a layout if there are no other layout less views attached to a window? (just guessing)
        Clemens

Other related posts: