Re: How to get Colors?



a) CSS styling is broken in gtk. I have tried to use it set various widgets and a lot of the time it fails.

b) The only functions which work semi-consistently in gtk+ 3.0 are: gtk_widget_override_color() and gtk_widget_override_background_color()

c) The above functions work for most widgets, except for a few cases like the background for labels in spinbuttons and the background colour for tabs in gtk notebook widgets. There is apparently no way to set these. You can try via the above functions or by CSS but the colour cannot be changed within an application.

Regards,
Salsaman





On Mon, May 4, 2015 at 10:01 AM, The Devils Jester <thedevilsjester gmail com> wrote:

That may be an elegant solution to drawing using theme parts, but thats not the question.  That is not an elegant solution for getting solid colors that are similar to the overall theme, but not using gradients or textures.  The deprecated function gives me a useful, expected value, what ever it does to give a reasonable approximation has worked great for years, where as the other function gives me black for all background colors, all the time, on almost every widget. (Some give white).

On May 4, 2015 7:49 AM, "Emmanuele Bassi" <ebassi gmail com> wrote:
Hi;

On 4 May 2015 at 13:38, The Devils Jester <thedevilsjester gmail com> wrote:
> I am aware of the dynamics of GTK

If you say this, followed by:

> In the same vein, of colors, can someone explain what I am doing wrong when:
> gtk_style_context_get_background_color(context, GTK_STATE_FLAG_NORMAL,
> &bg_n); gives me nothing but black for the same widget that
> gtk_widget_get_style gives me the (expected) rgb (214,214,214) ?

Then it means you're not really aware of the dynamics of GTK.

The gtk_widget_get_style() function is a deprecated API that we had to
leave in there because the CSS style machinery wasn't finished by the
time we released 3.0, and because applications would have needed much
more porting from 2.x to 3.0 if we downright eliminated that function.
It was not optimal, but the other option would have been to delay GTK
3.0 by another 6 to 12 months, and that would have had a cascade of
effects on the rest of the ecosystem based on GTK+. Historical reasons
aside, this means that gtk_widget_get_style() returns a best effort
value which may or may not make sense.

For instance, if you ask gtk_widget_get_style() the for the background
color of a widget using a with a background image in CSS, what color
should you get? What happens if the widget is using a gradient? Right
now, it's completely undefined. That is why you don't query a style
context for a background color: you just ask the style context to draw
a background, according to the state in which the style context is.

> but the need to render custom widgets to
> use a similar color palette to the current theme is a real one that does not
> seem to have an elegant solution.

The elegant solution is to use the gtk_render_* family of functions.

Ciao,
 Emmanuele.

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

_______________________________________________
gtk-list mailing list
gtk-list gnome org
https://mail.gnome.org/mailman/listinfo/gtk-list




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