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



On Mon, 2017-05-08 at 08:42 +0100, Emmanuele Bassi wrote:
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?

yes


You can use `gtk_widget_class_get_css_name()`:

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


thanks for alerting me to this. My development system is Debian Stable,
so I don't have access to this function as it is from 3.20, however it
gave me a starting point for looking at what will be possible.

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.

I didn't find anything describing creating a GtkWidgetClass in the
gtk3/stable documentation, it seems that there is a field in the
GtkWidget structure pointing to such a structure accessed via

GTK_WIDGET_GET_CLASS (widget)

so I imagine that using

gtk_widget_class_set_css_name (class, name)

could mean you would get control over the style of that widget and any
others whose class you assigned that name. But I will have to wait for
Debian to catch up with Gtk 3.20 before I can seriously look at this.

Thanks again for your responses.

Richard Shann




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