Why not use the most obvious solution for the problem: Keep the theming
engine as is, but instead of using one single theming detail string,
let's attach a theming class property in the spirit of CSS class names
to widgets:

    const gchar** gtk_widget_get_style_classes (GtkWidget *widget);

    gboolean gtk_widget_has_style_class (GtkWidget   *widget,
                                         const gchar *class_name);

Well, or for optimal speed let's use GQuarks instead:

    const GQuark* gtk_widget_get_style_classes (GtkWidget *widget);

    gboolean gtk_widget_has_style_class (GtkWidget *widget,
                                         GQuark     class_name);

Now let's add the rule, that widgets have to provide a macro for each
style class they define, and we even get some easy way to document style
classes:

    #define GTK_STYLE_CLASS_TREE_VIEW_COLUMN_BUTTON \
            gtk_style_class_tree_view_column_button_get_quark ()

You might argue defining quarks for this purpose is quite some effort,
but Bugzilla and libegg contain the implementation of a G_DEFINE_QUARK,
respectively EGG_DEFINE_QUARK marco declaring *_get_quark functions:

    G_DEFINE_QUARK (GtkStyleClassTreeViewColumnButton,
                    gtk_style_class_tree_view_column_button);

This approach might not be a big and final solution, but its an approach
that can be implemented right now without breaking much stuff.


Ciao,
Mathias
-- 
Mathias Hasselmann <[EMAIL PROTECTED]>
http://taschenorakel.de/

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to