Migrating a GtkStyle based engine to a GtkThemingEngine based one
should be straightforward for most of the vfuncs. Besides a cleanup
in the available paint methods and a simplification in the passed
arguments (in favor of GtkStyleContext containing all the information),
the available render methods resemble those of GtkStyle quite
evidently. Notable differences include:
The list of available render methods is:
One of the main differences to GtkStyle-based engines is that the
rendered widget is totally isolated from the theme engine, all style
information is meant to be retrieved from the GtkThemingEngine API,
or from the GtkWidgetPath obtained from gtk_theming_engine_get_path(),
which fully represents the rendered widget's hierarchy from a styling
point of view.
The detail string available in GtkStyle-based engines has been
replaced by widget regions and style classes. Regions are a way for
complex widgets to associate different styles with different areas,
such as even and odd rows in a treeview. Style classes allow sharing
of style information between widgets, regardless of their type.
Regions and style classes can be used in style sheets to associate
styles, and them engines can also access them. There are several
predefined classes and regions such as GTK_STYLE_CLASS_BUTTON or
GTK_STYLE_REGION_TAB in gtkstylecontext.h,
although custom widgets may define their own, which themes may
attempt to handle.