Il giorno mer, 19/06/2013 alle 20.03 +0900, Tristan Van Berkom ha scritto: > On Wed, Jun 19, 2013 at 6:19 PM, Pietro Battiston <m...@pietrobattiston.it> > wrote: > >[...] > > This is, to my eyes, the clearest example of height-for-width space > > management... and as far as I understand, it is currently impossible. > > > > Am I missing something? > > This is possible, but I don't know any widgets which do that, that's all. > > void > widget_get_preferred_height_for_width (GtkWidget *widget, > gint width, > gint *minimum, > gint *natural) > { > /* You are going to be allocated 'width' which is something greater > * than the minimum width you reported in > get_preferred_width_for_height( height = -1); > */ > > /* Now you will *request* this much height */ > *minimum = height; > > /* Note that 'natural' must be at least as big as 'minimum' */ > *natural = desired_height_for_given_width (height); > > /* Now you will *request* this much height */ > *minimum = *natural = height; > } > > Note that you might be allocated more size than that which you requested, > but not less. > > You might want your aspect ratio height to be the minimum & natural > instead of 'square', depending. > > Does this answer your question ? >
Well, this did suggest to me that my question was maybe not well formulated - in fact, I have a problem with the layouting algorithm, not with the working of a widget on its own. So consider this simple example: 1) in my widget_get_preferred_width(), I set *minimum = 50 *natural = 200 2) in my widget_get_preferred_height_for_width(), I set *minimum = *natural = 10000/width 3) I pack_start this widget into a Gtk.VBox() 4) I add the VBox in a Gtk.Window, and show_all() it Result: a window that's 200x200 (and the user can't shrink vertically). Now repeat the steps above, adding, between 3 and 4: 3a) I pack_start into the VBox an additional 60x17 GtkLabel (or GtkImage, that's irrelevant). Result: a window that's 200x183! So to resume: what annoys me - in both cases - is that the window is much too tall, and the user cannot even shrink it vertically. But what I really find inconsistent is that by adding a widget below, the resulting window may become smaller! Anyway, I don't have a better algorithm in mind - if you tell me that there is nothing I'm missing and there is no obvious solution to such problem, I'll just make things work reasonably in reasonable contexts. Thanks, Pietro _______________________________________________ gtk-devel-list mailing list gtk-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-devel-list