Re: GTK 3 support status



On Tue, Dec 6, 2011 at 1:15 AM, John Lindgren <john lindgren aol com> wrote:
Hi Tristan,

This makes a bit more sense now.


On 12/05/2011 09:27 AM, Tristan Van Berkom wrote:

On Mon, Dec 5, 2011 at 11:18 PM, John Lindgren<john lindgren aol com>
 wrote:

It looks to me as though there are 3 separate problems contributing here:

1. GtkLabel does not take into account gtk_widget_set_size_request() when
reporting its "natural" size:
https://bugzilla.gnome.org/show_bug.cgi?id=662043

Not a bug.

No widgets should ever peek at the explicit user set size request to
implement the size negotiation vfuncs.

Those are handled in GtkWidgetClass.adjust_size_request() base class
implementation.


So using gtk_widget_set_size_request() as a way to set the width of a label
is no longer valid in GTK+ 3.  Fair enough.

That is true, GtkLabel in GTK+2 did do some sneaky things like peeking at
the user set size request, it no longer does this.

gtk_widget_set_size_request() should still succeed with the expected behaviour
of setting the minimum size of a widget, however it does not limit the size
of any widget.



2. Nor does it take into account gtk_label_set_width_chars():
https://bugzilla.gnome.org/show_bug.cgi?id=665560

It does, width-chars, as always, only effects the minimum size, not
the natural size.


I get it now.  You set the minimum width of a label with
gtk_label_set_width_chars() and the natural/default width with
gtk_label_set_max_width_chars().

The documentation is very misleading; actually, the entire documentation for
gtk_label_set_width_chars() consists of the sentence fragment, "Sets the
desired width in characters of label to n_chars."  I do not think that most
people would make the connection between "desired width" and "minimum
width".

Likewise, the documentation for gtk_label_set_max_width_chars() is, "Sets
the desired maximum width in characters of label to n_chars."  I do not
think that most people would make the connection between "desired maximum
width" and "natural/default width".


I couldn't agree more, and I'm sorry for lack of time and patience for
documenting
GtkLabel properties better.

Would you like to re-phrase that documentation yourself and send it back
to the list ?

I'll take that and correct anything that might be inaccurate and send
it back to this list... (perhaps we should CC gtk-devel-list in this case).

Others will have a (short) chance to interject... and if there are no objections
to the new documentation within a short time I'll go ahead and commit
that to GTK+ so that next time around the online docs will be better.

Reasonable plan ?


3. GtkWindow ignores gtk_window_set_default_size() and instead goes to
its
"natural" size if the window is not resizable:
https://bugzilla.gnome.org/show_bug.cgi?id=665596

As I mentioned in the previous mail, I believe this has *always* been the
case,
GtkWindow always shrinks down to minimum size (or now in GTK+3 'natural
size')

This is how you get the shrinking dialogs when closing the expander in
them
(for non-resizable windows).

However, it could be considered a bug, one would expect GtkWindow to make
an attempt to honor a user set default size for a non-resizable window.

Perhaps it's even a regression from GTK+2, not so sure.


I think it should be considered a bug; however, I do not care so much about
gtk_window_set_default_size() now that I can set the size of the label
directly.  Using gtk_window_set_default_size(), you might recall, was your
suggestion from an earlier mail:

Yes, whether it is a regression or not I think it's a valid bug, apis in GTK+
should definitely make an attempt at succeeding ;-)

However, GtkWindow itself is a very tricky object to not break (on X11
platform it has to deal with this 'window constraint' api to cooperate
with the X server), it's possible that it just doesn't make sense to implement
this properly.

In which case the fix might be adding documentation to
gtk_window_set_resizable()
to indicate that the window will always be forced to the natural size
requests of its
content, regardless of any previously set default size.

So I'm attaching my version of your test case, actually except for
the label being somehow severely broken here, your code works
nicely... I added a line that says gtk_window_set_default_size()
and I think that will fix all your problems.


Thanks for your help.  I will close #662043 and #665560 but add a comment
that the documentation is wrong and needs to be updated.

-- John



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]