I am trying to set the "ellipsize" enum property on a GtkCellRendererText object.
I am trying to use g_object_set_property
as follows:
GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
GValue val = G_VALUE_INIT;
g_value_init (&val, G_TYPE_ENUM);
g_value_set_enum (&val, PANGO_ELLIPSIZE_END);
g_object_set_property (G_OBJECT(renderer), "ellipsize", &val);
However, I get an error message at run time:
(infog:27114): GLib-GObject-WARNING **: 12:24:29.848: ../../../../gobject/gvalue.c:188: cannot initialize GValue with type 'GEnum', this type is abstract with regards to GValue use, use a more specific (derived) type
How do I get the type ID for enum PangoEllipsizeMode
that derives from G_TYPE_ENUM
?
You need to initialise the GValue
container with the type of the enumeration that the property expects. G_TYPE_ENUM
is the generic, abstract enumeration type.
The "ellipsize" property of GtkCellRendererText
expects a PangoEllipsizeMode
enumeration value, which has a GType of PANGO_TYPE_ELLIPSIZE_MODE
.
GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
GValue val = G_VALUE_INIT;
g_value_init (&val, PANGO_TYPE_ELLIPSIZE_MODE);
g_value_set_enum (&val, PANGO_ELLIPSIZE_END);
g_object_set_property (G_OBJECT(renderer), "ellipsize", &val);
// Always unset your value to release any memory that may be associated with it
g_value_unset (&val);