I have a label with some constraints on the content so I’m managing a separate text buffer. I found most functions needing both the label and the buffer so I decided to combine them into a struct:
struct nums_display {
GtkLabel* display;
char buffer[NUMS_DISPLAY_LEN];
};
That worked but, since I’m trying to learn the GTK ecosystem I figured I’d try to subclass the label and add the buffer as a child. When I convert this to a minimal g_object class it fails to compile complaining that there is no GtkLabelClass:
../src/nums_app_display.h:25:17: error: unknown type name ‘GtkLabelClass’
25 | GtkLabel);
| ^~~~~~~~
/usr/include/glib-2.0/gobject/gtype.h:1405:20: note: in definition of macro ‘G_DECLARE_FINAL_TYPE’
1405 | typedef struct { ParentName##Class parent_class; } ModuleObjName##Class; \
| ^~~~~~~~~~
../src/nums_app_display.c:26:18: error: field ‘parent’ has incomplete type
26 | GtkLabel parent;
| ^~~~~~
I found this topic from a year ago that encourages composition which would be my first, working attempt. Am I reading this correct that subclassing most specialized widgets (even labels) is discouraged and this is why my compilation fails?