[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gtk-devel
Subject:    Re: Extended Layout Summary
From:       Mathias Hasselmann <mathias.hasselmann () gmx ! de>
Date:       2007-12-05 9:40:07
Message-ID: 1196847607.12903.34.camel () localhost
[Download RAW message or body]

[Attachment #2 (multipart/signed)]


Am Dienstag, den 20.11.2007, 15:41 -0500 schrieb Havoc Pennington:
> Hi,
> 
> While I haven't looked at the patches in detail, based on your writeup 
> it feels like the interfaces here will make it a little hard to 
> implement in widgets.
>
> [...]

I had your suggestion in mind all the time, when implementing the
extended layout stuff, but at least for the existing container widgets
in GTK+ calculating minimum and natural size at the same time would have
resulted in more complicated code, as many variables would have to be
duplicated: One set of variables to hold state for minimum size
calculation, one set for natural size.

So the pattern I successfully used was adding a flag to the old
size_request implementation indicating weither requested size, or
natural size is needed. In the requested size case only
gtk_widget_size_request is called for children, in the natural size case
the extended layout hints were tried first, with as fallback
gtk_widget_size_request. My implementations of
GtkWidgetClass::size_request and GtkExtendedLayoutIface::natural_size
just redirect to that function, using the correct flag.

After finding that pattern, adding natural size support to existing
container widgets was quite trivial.

> Another thing I'm not clear on from your mail is the padding stuff; 
> basically, it looks like every widget implements padding support for 
> itself. In that case, what's the point of having get_padding in the 
> generic extended layout interface?

I mainly needed it, when trying to implement baseline alignment for
GtkBin derived widgets: GtkBinClass doesn't have any padding for
additional virtual functions, so I abused the extended-layout interface
to get that information.

Guess it can be ignored for now, as I didn't manage to get baseline
alignment working - all tough using extended layout hints to add
padding to all widgets, without using GtkAlignment sounds quite
interesting. Well, and you are right: Using GtkBorder is quite wasteful
in terms of memory usage.

Ciao,
Mathias
-- 
Mathias Hasselmann <mathias.hasselmann@gmx.de>
http://taschenorakel.de/

["signature.asc" (application/pgp-signature)]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic