This consists of:
* expand a child if either child->expand || gtk_widget_get_expand(child)
* override compute_expand so that child->expand will cause us to
return TRUE for gtk_widget_get_expand()
https://bugzilla.gnome.org/show_bug.cgi?id=628902
It doesn't make sense to keep them separate as GtkSizeRequest requires a
GtkWidget and GtkWidget implements GtkSizeRequest, so you can never have
one without the other.
It also makes the code a lot easier because no casts are required when
calling functions.
Also, the names would translate to gtk_widget_get_width() and people
agreed that this would be a too generic name, so a "preferred" was added
to the names.
So this patch moves the functions:
gtk_size_request_get_request_mode() => gtk_widget_get_request_mode()
gtk_size_request_get_width() => gtk_widget_get_preferred_width()
gtk_size_request_get_height() => gtk_widget_get_preferred_height()
gtk_size_request_get_size() => gtk_widget_get_preferred_size()
gtk_size_request_get_width_for_height() =>
gtk_widget_get_preferred_width_for_height()
gtk_size_request_get_height_for_width() =>
gtk_widget_get_preferred_height_for_width()
... and moves the corresponding vfuncs to the GtkWidgetClass.
The patch also renames the implementations of the vfuncs in widgets to
include the word "preferrred".
This commit makes a few massive changes to the extended layout
code:
a.) gtkextendedlayout.c --> gtksizerequest.c
b.) _is_height_for_width --> get_request_mode()
c.) get_desired_size(), get_desired_width(), get_desired_height() -->
get_size(), get_width(), get_height()
This is the first partial commit and only effects portions
of the tree that have already been merged in master (in order to
easily cherry pick this commit).
Conflicts:
gtk/Makefile.am
gtk/gtk.h
gtk/gtk.symbols
gtk/gtkextendedlayout.h
Fixed the allocation loop to check if it was allocated at least
enough space to hold its visible children before going and distributing
extra space among children. Fixes bgo #617444.
This commit adds constructors for GtkPaned, GtkBox, GtkButtonBox,
GtkRuler, GtkScale, GtkScrollbar and GtkSeparator and makes these
types instantiable.
This was only showing up with pack-end packing in horizontal boxes.
The RTL flipping has to be applied after moving the reference point
to the left edge of the child.
Introduce an algorithm to allocate children some virtual widths based on
their base widths returned by ->get_desired_width(), then return the
collective desired heights for each or thier virtually allocated width.
This will only work in the horizontal orientation.
This commit changes gtk_extended_layout_get_desired_size() for
per dimension variants. Furthermore this commit reverts the actions
done in size-groups for now as it needs a different approach.
The natural width/height parameters added to aux_info have been changed
for a per width cache for heights and a per height cache for widths.
gtk-demo is still working, currently sizegroups are not taken
into account as mentioned above - size groups need to be alerted both
when the widths and heights are updated independantly and then that
information needs to repropagate also to other extended layout implementors.
This patch adds another commented algorythm to find the collective
minimum and natural height for a said width of a horizontally oriented
box (or the opposite). The algorithm works quite well and can be optimized
a bit more - currently its commented because GtkLabel cannot effectively
do width-for-height calculations (doh).
Further, this patch returns an is_height_for_width() preference depending
on the boxes orientation (vertical boxes are width-for-height).
In order for natural size information to cascade correctly up through
the ancestry GtkBox needs to report height-for-width and width-for-height,
this patch includes an implementation for both in both orientations, one
of them is commented for now as its much too cpu intensive to actually use.
gtk_box_size_allocate() was forgetting to fetch the minimum
size for children when allocating in homogeneous mode and then
accessing the uninitialized allocated values in that case, fixed.
This commit fixes the loop to take into consideration the
child->padding that will be allocated to the child while calculating
full available size. Additionally it fixes the initial positioning
of child widgets when packed at the end (a special case because the
x position used starts from the end of the box).
2008-10-07 11:03:30 Tim Janik <timj@imendio.com>
* gtk/gtkbox.h: keep GtkBox as an abstract type and keep _gtk_box_new()
as private function until we settle on the exact semantics.
renamed _gtk_box_set_old_defaults() as suggested by Mitch.
svn path=/trunk/; revision=21599
2008-10-07 Michael Natterer <mitch@imendio.com>
Bug 553573 – Add orientation API to GtkBox
* gtk/gtkbox.[hh]: implement the GtkOrientable interface and
swallow all code from GtkHBox and GtkVBox. Add gtk_box_new()
which takes a GtkOrientation argument. Also move the newly
added "spacing_set" boolean from struct GtkBox to the new
private struct.
* gtk/gtkhbox.[ch]
* gtk/gtkvbox.[ch]: remove all code except the constructor and
call gtk_orientable_set_orientation() in init().
* gtk/gtk.symbols: add gtk_box_new().
svn path=/trunk/; revision=21596
* gtk/gtkbox.c (gtk_box_init), (gtk_box_set_spacing),
(_gtk_box_set_spacing_set), (_gtk_box_get_spacing_set):
* gtk/gtkbox.h:
* gtk/gtkdialog.c (gtk_dialog_class_init), (update_spacings):
Implement "content-area-spacing" style property in GtkDialog
and internal helper _gtk_box_get_spacing_set in GtkBox.
Patch by Tim Janik, Sven Herzberg and myself.
svn path=/trunk/; revision=21508
2008-07-21 Michael Natterer <mitch@imendio.com>
* gtk/gtkbox.c (gtk_box_add): use gtk_box_pack_start() instead of
the deprecated gtk_box_pack_start_defaults().
* gtk/gtkbindings.c (gtk_binding_entry_add_signal)
(gtk_binding_parse_signal): use _gtk_binding_entry_add_signall()
instead of the deprecated gtk_binding_entry_add_signall().
svn path=/trunk/; revision=20885