// https://developer.gnome.org/gobject/stable/gtype-conventions.html boilerplate-window.h: -------------------------------------------------------------------------------- #define BOILERPLATE_TYPE_WINDOW_STATE (boilerplate_window_state_get_type ()) G_DECLARE_FINAL_TYPE (BoilerplateWindowState, boilerplate_window_state, BOILERPLATE, WINDOW_STATE, GObject) typedef struct { GObject parent_instance; int width; int height; int x; int y; gboolean maximized; gboolean fullscreen; } BoilerplateWindowState; struct _BoilerplateWindow { GtkApplicationWindow parent_instance; BoilerplateWindowState *state; }; boilerplate-window.c: static void boilerplate_window_constructed (): -------------------------------------------------------------------------------- self->state = g_object_new (boilerplate_window_state_get_type (), NULL); boilerplate-window.c: static void boilerplate_window_constructed (): -------------------------------------------------------------------------------- static gboolean boilerplate_window_window_state_event (): gboolean maximized; gboolean fullscreen; general files: -------------------------------------------------------------------------------- g_return_if_fail (BOILERPLATE_IS_APPLICATION (obj)); g_return_if_fail (BOILERPLATE_IS_WINDOW (obj)); g_return_if_fail (BOILERPLATE_IS_WINDOW_STATE (obj)); g_return_if_fail (BOILERPLATE_IS_LOG (obj)); g_assert (BOILERPLATE_IS_APPLICATION (obj)); g_assert (BOILERPLATE_IS_WINDOW (obj)); g_assert (BOILERPLATE_IS_WINDOW_STATE (obj)); g_assert (BOILERPLATE_IS_LOG (obj));