New baseline branch, review wanted



I've done a bunch of work on the baseline stuff and rebased it into a
nice branch called wip/baseline3. Its got the core working with a bunch
of widgets converted.

The only interesting widget that lacks baseline support (imho) is
GtkComboBox. But that one is hard due to it using GtkCellArea & co. I'd
rather not add baseline support to cell renderers...

There is a new GTK_DEBUG flag called baselines, so if you want to try
this out, do:
 GTK_DEBUG=baselines tests/testbaseline

There are however some open issues:

* I added a new vfunc called get_preferred_height_and_baseline_for_width
which is the basic baseline supporting size request. The core code will
call this all the time now, but there is a default implementation that
calls the old methods, which should keep old widgets working.

However, when I add baseline support to some existing classes i override
the default implementation. This means that widgets deriving from these
classes (say e.g. GtkButton) that override the old size request vfuncs
(say get_preferred_height), will break. We will keep calling the
baseline supporting version of the baseclass.

I'm not sure how to fix this. I could add some per-type flag for
baseline support such that we only use
get_preferred_height_and_baseline_for_width if this flag is set. That
would mean such old widgets keep working. However, it also means that
you *must* always set this flag for all derived classes, even for things
where baseline support was implemented from the start, which seems kinda
bad. Not sure what the best approach here is...

* GtkGrid has a new per-row property,
gtk_grid_set/get_row_baseline_position. This is neither a normal
property or a child property, which means its not really nicely bindable
or usable as construct properties in e.g. GtkBuilder. Is there a good
way to handle this?

Other than this I think this branch is in a pretty good state.




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