On Mon, 2005-03-07 at 18:32 -0800, Ben Johnson wrote:
> this is more or less what I'm doing...
>
> mydialog = gtk_dialog_new ();
> gtk_window_set_title (GTK_WINDOW (mydialog), "Payment Amount");
> gtk_window_set_position (GTK_WINDOW (mydialog), GTK_WIN_POS_CENTER);
> gtk_window_set_modal (GTK_WINDOW (mydialog), TRUE);
> gtk_window_set_default_size (GTK_WINDOW (mydialog), 320, 350);
> gtk_window_set_type_hint (GTK_WINDOW (mydialog), GDK_WINDOW_TYPE_HINT_DIALOG);
>
> vbox8 = GTK_DIALOG (mydialog)->vbox;
> gtk_widget_show (vbox8);
>
> mycalculator = createcustwidgetfunc_enterpaymentdlg_handleamount ("mycalculator", "", "", 0, 0);
> gtk_widget_show (mycalculator);
> gtk_box_pack_start (GTK_BOX (vbox8), mycalculator, TRUE, TRUE, 0);
> GTK_WIDGET_UNSET_FLAGS (mycalculator, GTK_CAN_FOCUS);
> GTK_WIDGET_UNSET_FLAGS (mycalculator, GTK_CAN_DEFAULT);
>
> alignment14 = gtk_alignment_new (0.5, 0.5, 1, 0.5);
> gtk_widget_show (alignment14);
> gtk_box_pack_start (GTK_BOX (vbox8), alignment14, TRUE, TRUE, 0);
Try making this FALSE, FALSE ... you've said "if you have excess space,
give it to vbox8 and alignment14 equally.
> hbox11 = gtk_hbox_new (TRUE, 0);
> gtk_widget_show (hbox11);
> gtk_container_add (GTK_CONTAINER (alignment14), hbox11);
>
> After that I add some buttons to hbox11 setting the fill and expand
> properties to TRUE (which doesn't affect the layout). So... all expand
> and fill props (that I know of) are set to TRUE and the alignment has
> default values except the yscale is set to .5.
>
> The result of this is hbox11 takes up less space and mycalculator
> doesn't take up any additional space, leaving some empty space around
> hbox11.
>
> if I change the alignment so that it doesn't get any smaller,
>
> alignment14 = gtk_alignment_new (0.5, 0.5, 1, 1);
>
> ...then the hbox11 is too big.
>
> If I instead change either the expand or fill props on alignment14 to
> false then I wind up with hbox11 being too small, regardless of what the
> yscale is set to. setting expand to false results in the calculator
> widget taking up the available space. leaving expand set to true and
> setting fill to false results in too small box11 buttons with a lot of
> wasted goofy looking space.
You aren't making sense here. Where do you want the excess space -
the "calculator" or the hbox at the bottom? Both? Make a decision.
If you want some fixed amount of space around the buttons in
hbox11, use gtk_container_set_border_width().
In the end, size allocation in GTK+ is utterly simple:
Phase 1: "Please ask your children how much space they need,
add in any space you need yourself and tell me how
much that is"
Phase 2: "OK, you have this much space, please divide between
yourself and your children"
All expand and fill do is determine how a hbox/vbox makes that
division in phase 2.
Regards,
Owen
Attachment:
signature.asc
Description: This is a digitally signed message part