On 7 May 2017 at 20:57, Richard Shann <rich...@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 <rich...@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
>>         <rich...@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]
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to