Da gtk_style_context_get_background_color ist seit Version gtk V3.16 deprected Ich möchte folgende Stil-Eigenschaft vorzulesen: GTK_STYLE_PROPERTY_BACKGROUND_COLORErste Objekte aus einem Gwert
currrently mein Code sieht so aus:
GdkRGBA *color;
...
GValue value = G_VALUE_INIT;
gtk_style_context_get_property (context,GTK_STYLE_PROPERTY_BACKGROUND_COLOR, state, &value);
color = g_value_get_object (&value);
jedoch es scheint, als ob ich es falsch mache. Während der Laufzeit erhalte ich nur die folgende Glib-GObject-KRITISCH:
(thunar: 6564): Glib-GObject KRITISCHE **: g_value_get_object: Behauptung 'G_VALUE_HOLDS_OBJECT (Wert)'
fehlgeschlagen Wie kann ich also gtk-Eigenschaften nutzen, die komplexere Datentypen enthalten?
EDIT: die komplette Lösung, die für mich jetzt funktioniert:
GtkStateFlags state;
GdkRGBA *color;
GtkStyleContext *context = gtk_widget_get_style_context (widget);
// get the color
gtk_style_context_get (context, GTK_STATE_FLAG_SELECTED, GTK_STYLE_PROPERTY_BACKGROUND_COLOR, &color, NULL);
// do something with the color
gdk_cairo_set_source_rgba (cr, color);
// dont forget to free it afterwards !! (Otherwise segfaults may occur)
gdk_rgba_free (color);
GdkRgba es ist kein Objekt. Es ist eine einfache Struktur mit Farbkomponenten. –