Re: How to find CSS style syntax changes between Gtk 3.12 and Gtk 3.22



On 7 May 2017 at 20:57, Richard Shann <richard rshann plus com> wrote:
On Sun, 2017-05-07 at 19:52 +0000, Emmanuele Bassi wrote:

On Sun, 7 May 2017 at 19:53, Richard Shann <richard rshann plus com>
wrote:

        On Sun, 2017-05-07 at 17:54 +0100, Emmanuele Bassi wrote:
        > On 7 May 2017 at 16:52, Richard Shann
        <richard rshann plus com> wrote:
        > > I have a test program that pops up a label with a
        customized
        > background
        > > and foreground color. This works in 3.12 using the syntax
        > >
        > > "GtkLabel {background-color: #FFFF00;}"
        > >
        > > and
        > >
        > > "GtkLabel {color: #FF00FF;}"
        > >
        > > but fails in 3.22
        >
        > The selector for labels is "label" since GTK+ 3.20.

        Thank you very much for this. Is there a function to get the
        selector
        for a widget? Sort of gchar *gtk_widget_get_css_selector
        (GtkWidget *w)
        thing?


I'm not sure what would that accomplish. Could you elaborate?

It would enable my program to work. Currently it gets the string
"GtkLabel" from the type name of the widget, and that works for setting
the background color of various widgets in the program, replacing
deprecated calls.

I'm still puzzled as to why you need programmatic access to the CSS
element name.

Are you generating CSS fragments from a generic function with only the
widget type as the input?

You can use `gtk_widget_class_get_css_name()`:

  https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-class-get-css-name

But I'd strongly recommend you use CSS classes instead of styling the
bare element name.

CSS selectors in GTK+ work exactly like the HTML counterpart; you can
style "div" or "p" directly, but it's often much more appropriate to
create a specific CSS class, like "green-background", and add it to
the widget you wish to style.

        Looking through a few widgets it seems the rule is chop off
        the
        Gtk prefix and lower case what remains ... is that guaranteed?


No, it's not. It's part of the API reference for a reason.

If somebody creates a custom widget, with a custom CSS element name,
then they will have to document it.

yes, but surely there is no harm in you documenting what you do with the
widgets that come with Gtk in order to create a selector name?

Yes, that's why it's documented.

Otherwise
a) we have to look it up each time

Well, you have to look up all API when using it.

b) we can't create it programmatically for programs like the one I
posted.

You cannot generate random CSS fragments and expect them to work regardless.

CSS state is complex, and it depends on the current user theme. That's
why the recommended approach is to use additional classes. Selectors
with higher specificity are easier to apply, much more efficient, and
generally speaking, much more clean to conceptually understand.

Ciao,
 Emmanuele.

-- 
https://www.bassi.io
[@] ebassi [@gmail.com]


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