qulogic/libgnt

Use G_DEFINE_TYPE for all widgets.

2019-04-03, Elliott Sales de Andrade
8643bb415dca
Parents 44cdc95eabee
Children 995fd98c9a53
Use G_DEFINE_TYPE for all widgets.
  • +23 -51
    gntbox.c
  • +13 -37
    gntbutton.c
  • +8 -39
    gntcheckbox.c
  • +15 -44
    gntcombobox.c
  • +12 -41
    gntentry.c
  • +10 -39
    gntfilesel.c
  • +13 -41
    gntlabel.c
  • +12 -40
    gntline.c
  • +22 -51
    gntmenu.c
  • +8 -35
    gntslider.c
  • +12 -42
    gnttextview.c
  • +19 -45
    gnttree.c
  • +9 -37
    gntwindow.c
  • --- a/gntbox.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntbox.c Wed Apr 03 21:39:23 2019 -0400
    @@ -42,9 +42,9 @@
    SIGS = 1,
    };
    -static GntWidgetClass *parent_class = NULL;
    +static GntWidget * find_focusable_widget(GntBox *box);
    -static GntWidget * find_focusable_widget(GntBox *box);
    +G_DEFINE_TYPE(GntBox, gnt_box, GNT_TYPE_WIDGET)
    static void
    add_to_focus(gpointer value, gpointer data)
    @@ -570,24 +570,25 @@
    gnt_box_class_init(GntBoxClass *klass)
    {
    GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
    - GObjectClass *gclass = G_OBJECT_CLASS(klass);
    - parent_class = GNT_WIDGET_CLASS(klass);
    - parent_class->destroy = gnt_box_destroy;
    - parent_class->draw = gnt_box_draw;
    - parent_class->expose = gnt_box_expose;
    - parent_class->map = gnt_box_map;
    - parent_class->size_request = gnt_box_size_request;
    - parent_class->set_position = gnt_box_set_position;
    - parent_class->key_pressed = gnt_box_key_pressed;
    - parent_class->clicked = gnt_box_clicked;
    - parent_class->lost_focus = gnt_box_lost_focus;
    - parent_class->gained_focus = gnt_box_gained_focus;
    - parent_class->confirm_size = gnt_box_confirm_size;
    - parent_class->size_changed = gnt_box_size_changed;
    + GObjectClass *obj_class = G_OBJECT_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - gclass->set_property = gnt_box_set_property;
    - gclass->get_property = gnt_box_get_property;
    - g_object_class_install_property(gclass,
    + widget_class->destroy = gnt_box_destroy;
    + widget_class->draw = gnt_box_draw;
    + widget_class->expose = gnt_box_expose;
    + widget_class->map = gnt_box_map;
    + widget_class->size_request = gnt_box_size_request;
    + widget_class->set_position = gnt_box_set_position;
    + widget_class->key_pressed = gnt_box_key_pressed;
    + widget_class->clicked = gnt_box_clicked;
    + widget_class->lost_focus = gnt_box_lost_focus;
    + widget_class->gained_focus = gnt_box_gained_focus;
    + widget_class->confirm_size = gnt_box_confirm_size;
    + widget_class->size_changed = gnt_box_size_changed;
    +
    + obj_class->set_property = gnt_box_set_property;
    + obj_class->get_property = gnt_box_get_property;
    + g_object_class_install_property(obj_class,
    PROP_VERTICAL,
    g_param_spec_boolean("vertical", "Vertical",
    "Whether the child widgets in the box should be stacked vertically.",
    @@ -595,7 +596,7 @@
    G_PARAM_READWRITE|G_PARAM_CONSTRUCT|G_PARAM_STATIC_STRINGS
    )
    );
    - g_object_class_install_property(gclass,
    + g_object_class_install_property(obj_class,
    PROP_HOMO,
    g_param_spec_boolean("homogeneous", "Homogeneous",
    "Whether the child widgets in the box should have the same size.",
    @@ -615,10 +616,9 @@
    }
    static void
    -gnt_box_init(GTypeInstance *instance, gpointer class)
    +gnt_box_init(GntBox *box)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    - GntBox *box = GNT_BOX(widget);
    + GntWidget *widget = GNT_WIDGET(box);
    /* Initially make both the height and width resizable.
    * Update the flags as necessary when widgets are added to it. */
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_X | GNT_WIDGET_GROW_Y);
    @@ -632,34 +632,6 @@
    /******************************************************************************
    * GntBox API
    *****************************************************************************/
    -GType
    -gnt_box_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntBoxClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_box_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntBox),
    - 0, /* n_preallocs */
    - gnt_box_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WIDGET,
    - "GntBox",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_box_new(gboolean homo, gboolean vert)
    {
    GntWidget *widget = g_object_new(GNT_TYPE_BOX, "homogeneous", homo,
    --- a/gntbutton.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntbutton.c Wed Apr 03 21:39:23 2019 -0400
    @@ -33,9 +33,10 @@
    SIGS = 1,
    };
    -static GntWidgetClass *parent_class = NULL;
    static gboolean small_button = FALSE;
    +G_DEFINE_TYPE(GntButton, gnt_button, GNT_TYPE_WIDGET)
    +
    static void
    gnt_button_draw(GntWidget *widget)
    {
    @@ -103,17 +104,18 @@
    }
    static void
    -gnt_button_class_init(GntWidgetClass *klass)
    +gnt_button_class_init(GntButtonClass *klass)
    {
    char *style;
    GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - parent_class = GNT_WIDGET_CLASS(klass);
    - parent_class->draw = gnt_button_draw;
    - parent_class->map = gnt_button_map;
    - parent_class->size_request = gnt_button_size_request;
    - parent_class->clicked = gnt_button_clicked;
    - parent_class->destroy = gnt_button_destroy;
    + widget_class = GNT_WIDGET_CLASS(klass);
    + widget_class->draw = gnt_button_draw;
    + widget_class->map = gnt_button_map;
    + widget_class->size_request = gnt_button_size_request;
    + widget_class->clicked = gnt_button_clicked;
    + widget_class->destroy = gnt_button_destroy;
    style = gnt_style_get_from_name(NULL, "small-button");
    small_button = gnt_style_parse_bool(style);
    @@ -125,10 +127,10 @@
    }
    static void
    -gnt_button_init(GTypeInstance *instance, gpointer class)
    +gnt_button_init(GntButton *button)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    - GntButton *button = GNT_BUTTON(instance);
    + GntWidget *widget = GNT_WIDGET(button);
    +
    button->priv = g_new0(GntButtonPriv, 1);
    widget->priv.minw = 4;
    @@ -142,32 +144,6 @@
    /******************************************************************************
    * GntButton API
    *****************************************************************************/
    -GType
    -gnt_button_get_type(void) {
    - static GType type = 0;
    -
    - if(type == 0) {
    - static const GTypeInfo info = {
    - sizeof(GntButtonClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_button_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntButton),
    - 0, /* n_preallocs */
    - gnt_button_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WIDGET,
    - "GntButton",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_button_new(const char *text)
    {
    GntWidget *widget = g_object_new(GNT_TYPE_BUTTON, NULL);
    --- a/gntcheckbox.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntcheckbox.c Wed Apr 03 21:39:23 2019 -0400
    @@ -29,9 +29,10 @@
    SIGS,
    };
    -static GntButtonClass *parent_class = NULL;
    static guint signals[SIGS] = { 0 };
    +G_DEFINE_TYPE(GntCheckBox, gnt_check_box, GNT_TYPE_BUTTON)
    +
    static void
    gnt_check_box_draw(GntWidget *widget)
    {
    @@ -90,15 +91,11 @@
    static void
    gnt_check_box_class_init(GntCheckBoxClass *klass)
    {
    - GntWidgetClass *wclass = GNT_WIDGET_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - parent_class = GNT_BUTTON_CLASS(klass);
    - /*parent_class->destroy = gnt_check_box_destroy;*/
    - wclass->draw = gnt_check_box_draw;
    - /*parent_class->map = gnt_check_box_map;*/
    - /*parent_class->size_request = gnt_check_box_size_request;*/
    - wclass->key_pressed = gnt_check_box_key_pressed;
    - wclass->clicked = gnt_check_box_clicked;
    + widget_class->draw = gnt_check_box_draw;
    + widget_class->key_pressed = gnt_check_box_key_pressed;
    + widget_class->clicked = gnt_check_box_clicked;
    signals[SIG_TOGGLED] =
    g_signal_new("toggled",
    @@ -111,9 +108,9 @@
    }
    static void
    -gnt_check_box_init(GTypeInstance *instance, gpointer class)
    +gnt_check_box_init(GntCheckBox *box)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    + GntWidget *widget = GNT_WIDGET(box);
    widget->priv.minh = 1;
    widget->priv.minw = 4;
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW);
    @@ -123,34 +120,6 @@
    /******************************************************************************
    * GntCheckBox API
    *****************************************************************************/
    -GType
    -gnt_check_box_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntCheckBoxClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_check_box_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntCheckBox),
    - 0, /* n_preallocs */
    - gnt_check_box_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_BUTTON,
    - "GntCheckBox",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_check_box_new(const char *text)
    {
    GntWidget *widget = g_object_new(GNT_TYPE_CHECK_BOX, NULL);
    --- a/gntcombobox.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntcombobox.c Wed Apr 03 21:39:23 2019 -0400
    @@ -35,10 +35,11 @@
    SIGS,
    };
    -static GntWidgetClass *parent_class = NULL;
    static guint signals[SIGS] = { 0 };
    static void (*widget_lost_focus)(GntWidget *widget);
    +G_DEFINE_TYPE(GntComboBox, gnt_combo_box, GNT_TYPE_WIDGET)
    +
    static void
    set_selection(GntComboBox *box, gpointer key)
    {
    @@ -263,19 +264,18 @@
    gnt_combo_box_class_init(GntComboBoxClass *klass)
    {
    GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
    -
    - parent_class = GNT_WIDGET_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - parent_class->destroy = gnt_combo_box_destroy;
    - parent_class->draw = gnt_combo_box_draw;
    - parent_class->map = gnt_combo_box_map;
    - parent_class->size_request = gnt_combo_box_size_request;
    - parent_class->key_pressed = gnt_combo_box_key_pressed;
    - parent_class->clicked = gnt_combo_box_clicked;
    - parent_class->size_changed = gnt_combo_box_size_changed;
    + widget_class->destroy = gnt_combo_box_destroy;
    + widget_class->draw = gnt_combo_box_draw;
    + widget_class->map = gnt_combo_box_map;
    + widget_class->size_request = gnt_combo_box_size_request;
    + widget_class->key_pressed = gnt_combo_box_key_pressed;
    + widget_class->clicked = gnt_combo_box_clicked;
    + widget_class->size_changed = gnt_combo_box_size_changed;
    - widget_lost_focus = parent_class->lost_focus;
    - parent_class->lost_focus = gnt_combo_box_lost_focus;
    + widget_lost_focus = widget_class->lost_focus;
    + widget_class->lost_focus = gnt_combo_box_lost_focus;
    signals[SIG_SELECTION_CHANGED] =
    g_signal_new("selection-changed",
    @@ -295,13 +295,12 @@
    }
    static void
    -gnt_combo_box_init(GTypeInstance *instance, gpointer class)
    +gnt_combo_box_init(GntComboBox *combo)
    {
    + GntWidget *widget = GNT_WIDGET(combo);
    GntWidget *box;
    - GntWidget *widget = GNT_WIDGET(instance);
    - GntComboBox *combo = GNT_COMBO_BOX(instance);
    - GNT_WIDGET_SET_FLAGS(GNT_WIDGET(instance),
    + GNT_WIDGET_SET_FLAGS(widget,
    GNT_WIDGET_GROW_X | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW);
    combo->dropdown = gnt_tree_new();
    @@ -318,34 +317,6 @@
    /******************************************************************************
    * GntComboBox API
    *****************************************************************************/
    -GType
    -gnt_combo_box_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntComboBoxClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_combo_box_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntComboBox),
    - 0, /* n_preallocs */
    - gnt_combo_box_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WIDGET,
    - "GntComboBox",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_combo_box_new()
    {
    GntWidget *widget = g_object_new(GNT_TYPE_COMBO_BOX, NULL);
    --- a/gntentry.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntentry.c Wed Apr 03 21:39:23 2019 -0400
    @@ -61,11 +61,11 @@
    static guint signals[SIGS] = { 0 };
    -static GntWidgetClass *parent_class = NULL;
    -
    static gboolean gnt_entry_key_pressed(GntWidget *widget, const char *text);
    static void gnt_entry_set_text_internal(GntEntry *entry, const char *text);
    +G_DEFINE_TYPE(GntEntry, gnt_entry, GNT_TYPE_WIDGET)
    +
    static gboolean
    update_kill_ring(GntEntry *entry, GntEntryAction action, const char *text, int len)
    {
    @@ -934,16 +934,16 @@
    gnt_entry_class_init(GntEntryClass *klass)
    {
    GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    char s[3] = {'\033', erasechar(), 0};
    - parent_class = GNT_WIDGET_CLASS(klass);
    - parent_class->clicked = gnt_entry_clicked;
    - parent_class->destroy = gnt_entry_destroy;
    - parent_class->draw = gnt_entry_draw;
    - parent_class->map = gnt_entry_map;
    - parent_class->size_request = gnt_entry_size_request;
    - parent_class->key_pressed = gnt_entry_key_pressed;
    - parent_class->lost_focus = gnt_entry_lost_focus;
    + widget_class->clicked = gnt_entry_clicked;
    + widget_class->destroy = gnt_entry_destroy;
    + widget_class->draw = gnt_entry_draw;
    + widget_class->map = gnt_entry_map;
    + widget_class->size_request = gnt_entry_size_request;
    + widget_class->key_pressed = gnt_entry_key_pressed;
    + widget_class->lost_focus = gnt_entry_lost_focus;
    signals[SIG_TEXT_CHANGED] =
    g_signal_new("text_changed",
    @@ -1030,10 +1030,9 @@
    }
    static void
    -gnt_entry_init(GTypeInstance *instance, gpointer class)
    +gnt_entry_init(GntEntry *entry)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    - GntEntry *entry = GNT_ENTRY(instance);
    + GntWidget *widget = GNT_WIDGET(entry);
    entry->flag = GNT_ENTRY_FLAG_ALL;
    entry->max = 0;
    @@ -1060,34 +1059,6 @@
    /******************************************************************************
    * GntEntry API
    *****************************************************************************/
    -GType
    -gnt_entry_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntEntryClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_entry_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntEntry),
    - 0, /* n_preallocs */
    - gnt_entry_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WIDGET,
    - "GntEntry",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_entry_new(const char *text)
    {
    GntWidget *widget = g_object_new(GNT_TYPE_ENTRY, NULL);
    --- a/gntfilesel.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntfilesel.c Wed Apr 03 21:39:23 2019 -0400
    @@ -44,13 +44,14 @@
    SIGS
    };
    -static GntWindowClass *parent_class = NULL;
    static guint signals[SIGS] = { 0 };
    static void (*orig_map)(GntWidget *widget);
    static void (*orig_size_request)(GntWidget *widget);
    static void select_activated_cb(GntWidget *button, GntFileSel *sel);
    +G_DEFINE_TYPE(GntFileSel, gnt_file_sel, GNT_TYPE_WINDOW)
    +
    static void
    gnt_file_sel_destroy(GntWidget *widget)
    {
    @@ -453,13 +454,13 @@
    gnt_file_sel_class_init(GntFileSelClass *klass)
    {
    GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
    - GntWidgetClass *kl = GNT_WIDGET_CLASS(klass);
    - parent_class = GNT_WINDOW_CLASS(klass);
    - kl->destroy = gnt_file_sel_destroy;
    - orig_map = kl->map;
    - kl->map = gnt_file_sel_map;
    - orig_size_request = kl->size_request;
    - kl->size_request = gnt_file_sel_size_request;
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    +
    + widget_class->destroy = gnt_file_sel_destroy;
    + orig_map = widget_class->map;
    + widget_class->map = gnt_file_sel_map;
    + orig_size_request = widget_class->size_request;
    + widget_class->size_request = gnt_file_sel_size_request;
    signals[SIG_FILE_SELECTED] =
    g_signal_new("file_selected",
    @@ -478,10 +479,8 @@
    }
    static void
    -gnt_file_sel_init(GTypeInstance *instance, gpointer class)
    +gnt_file_sel_init(GntFileSel *sel)
    {
    - GntFileSel *sel = GNT_FILE_SEL(instance);
    -
    sel->dirs = gnt_tree_new();
    gnt_tree_set_compare_func(GNT_TREE(sel->dirs), (GCompareFunc)g_utf8_collate);
    gnt_tree_set_hash_fns(GNT_TREE(sel->dirs), g_str_hash, g_str_equal, g_free);
    @@ -514,34 +513,6 @@
    /******************************************************************************
    * GntFileSel API
    *****************************************************************************/
    -GType
    -gnt_file_sel_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntFileSelClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_file_sel_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntFileSel),
    - 0, /* n_preallocs */
    - gnt_file_sel_init, /* instance_init */
    - NULL
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WINDOW,
    - "GntFileSel",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    static void
    select_activated_cb(GntWidget *button, GntFileSel *sel)
    {
    --- a/gntlabel.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntlabel.c Wed Apr 03 21:39:23 2019 -0400
    @@ -38,7 +38,7 @@
    SIGS = 1,
    };
    -static GntWidgetClass *parent_class = NULL;
    +G_DEFINE_TYPE(GntLabel, gnt_label, GNT_TYPE_WIDGET)
    static void
    gnt_label_destroy(GntWidget *widget)
    @@ -107,18 +107,18 @@
    static void
    gnt_label_class_init(GntLabelClass *klass)
    {
    - GObjectClass *gclass = G_OBJECT_CLASS(klass);
    + GObjectClass *obj_class = G_OBJECT_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - parent_class = GNT_WIDGET_CLASS(klass);
    - parent_class->destroy = gnt_label_destroy;
    - parent_class->draw = gnt_label_draw;
    - parent_class->map = NULL;
    - parent_class->size_request = gnt_label_size_request;
    + widget_class->destroy = gnt_label_destroy;
    + widget_class->draw = gnt_label_draw;
    + widget_class->map = NULL;
    + widget_class->size_request = gnt_label_size_request;
    - gclass->set_property = gnt_label_set_property;
    - gclass->get_property = gnt_label_get_property;
    + obj_class->set_property = gnt_label_set_property;
    + obj_class->get_property = gnt_label_get_property;
    - g_object_class_install_property(gclass,
    + g_object_class_install_property(obj_class,
    PROP_TEXT,
    g_param_spec_string("text", "Text",
    "The text for the label.",
    @@ -127,7 +127,7 @@
    )
    );
    - g_object_class_install_property(gclass,
    + g_object_class_install_property(obj_class,
    PROP_TEXT_FLAG,
    g_param_spec_int("text-flag", "Text flag",
    "Text attribute to use when displaying the text in the label.",
    @@ -142,9 +142,9 @@
    }
    static void
    -gnt_label_init(GTypeInstance *instance, gpointer class)
    +gnt_label_init(GntLabel *label)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    + GntWidget *widget = GNT_WIDGET(label);
    gnt_widget_set_take_focus(widget, FALSE);
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW);
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_X);
    @@ -156,34 +156,6 @@
    /******************************************************************************
    * GntLabel API
    *****************************************************************************/
    -GType
    -gnt_label_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntLabelClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_label_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntLabel),
    - 0, /* n_preallocs */
    - gnt_label_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WIDGET,
    - "GntLabel",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_label_new(const char *text)
    {
    return gnt_label_new_with_format(text, 0);
    --- a/gntline.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntline.c Wed Apr 03 21:39:23 2019 -0400
    @@ -34,7 +34,7 @@
    SIGS = 1,
    };
    -static GntWidgetClass *parent_class = NULL;
    +G_DEFINE_TYPE(GntLine, gnt_line, GNT_TYPE_WIDGET)
    static void
    gnt_line_draw(GntWidget *widget)
    @@ -107,15 +107,16 @@
    static void
    gnt_line_class_init(GntLineClass *klass)
    {
    - GObjectClass *gclass = G_OBJECT_CLASS(klass);
    - parent_class = GNT_WIDGET_CLASS(klass);
    - parent_class->draw = gnt_line_draw;
    - parent_class->map = gnt_line_map;
    - parent_class->size_request = gnt_line_size_request;
    + GObjectClass *obj_class = G_OBJECT_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - gclass->set_property = gnt_line_set_property;
    - gclass->get_property = gnt_line_get_property;
    - g_object_class_install_property(gclass,
    + widget_class->draw = gnt_line_draw;
    + widget_class->map = gnt_line_map;
    + widget_class->size_request = gnt_line_size_request;
    +
    + obj_class->set_property = gnt_line_set_property;
    + obj_class->get_property = gnt_line_get_property;
    + g_object_class_install_property(obj_class,
    PROP_VERTICAL,
    g_param_spec_boolean("vertical", "Vertical",
    "Whether it's a vertical line or a horizontal one.",
    @@ -126,9 +127,9 @@
    }
    static void
    -gnt_line_init(GTypeInstance *instance, gpointer class)
    +gnt_line_init(GntLine *line)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    + GntWidget *widget = GNT_WIDGET(line);
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER);
    widget->priv.minw = 1;
    widget->priv.minh = 1;
    @@ -138,37 +139,8 @@
    /******************************************************************************
    * GntLine API
    *****************************************************************************/
    -GType
    -gnt_line_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntLineClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_line_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntLine),
    - 0, /* n_preallocs */
    - gnt_line_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WIDGET,
    - "GntLine",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_line_new(gboolean vertical)
    {
    GntWidget *widget = g_object_new(GNT_TYPE_LINE, "vertical", vertical, NULL);
    return widget;
    }
    -
    --- a/gntmenu.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntmenu.c Wed Apr 03 21:39:23 2019 -0400
    @@ -40,8 +40,6 @@
    NUM_COLUMNS
    };
    -static GntTreeClass *parent_class = NULL;
    -
    static void (*org_draw)(GntWidget *wid);
    static void (*org_destroy)(GntWidget *wid);
    static void (*org_map)(GntWidget *wid);
    @@ -51,6 +49,8 @@
    static void menuitem_activate(GntMenu *menu, GntMenuItem *item);
    +G_DEFINE_TYPE(GntMenu, gnt_menu, GNT_TYPE_TREE)
    +
    static void
    menu_hide_all(GntMenu *menu)
    {
    @@ -434,34 +434,33 @@
    static void
    gnt_menu_class_init(GntMenuClass *klass)
    {
    - GntWidgetClass *wid_class = GNT_WIDGET_CLASS(klass);
    - parent_class = GNT_TREE_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    + GntTreeClass *tree_class = GNT_TREE_CLASS(klass);
    - org_destroy = wid_class->destroy;
    - org_map = wid_class->map;
    - org_draw = wid_class->draw;
    - org_key_pressed = wid_class->key_pressed;
    - org_size_request = wid_class->size_request;
    - org_clicked = wid_class->clicked;
    + org_destroy = widget_class->destroy;
    + org_map = widget_class->map;
    + org_draw = widget_class->draw;
    + org_key_pressed = widget_class->key_pressed;
    + org_size_request = widget_class->size_request;
    + org_clicked = widget_class->clicked;
    - wid_class->destroy = gnt_menu_destroy;
    - wid_class->draw = gnt_menu_draw;
    - wid_class->map = gnt_menu_map;
    - wid_class->size_request = gnt_menu_size_request;
    - wid_class->key_pressed = gnt_menu_key_pressed;
    - wid_class->activate = gnt_menu_activate;
    - wid_class->hide = gnt_menu_hide;
    - wid_class->clicked = gnt_menu_clicked;
    + widget_class->destroy = gnt_menu_destroy;
    + widget_class->draw = gnt_menu_draw;
    + widget_class->map = gnt_menu_map;
    + widget_class->size_request = gnt_menu_size_request;
    + widget_class->key_pressed = gnt_menu_key_pressed;
    + widget_class->activate = gnt_menu_activate;
    + widget_class->hide = gnt_menu_hide;
    + widget_class->clicked = gnt_menu_clicked;
    - parent_class->toggled = gnt_menu_toggled;
    -
    - GNTDEBUG;
    + tree_class->toggled = gnt_menu_toggled;
    }
    static void
    -gnt_menu_init(GTypeInstance *instance, gpointer class)
    +gnt_menu_init(GntMenu *menu)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    + GntWidget *widget = GNT_WIDGET(menu);
    +
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER |
    GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_TRANSIENT | GNT_WIDGET_DISABLE_ACTIONS);
    GNTDEBUG;
    @@ -470,34 +469,6 @@
    /******************************************************************************
    * GntMenu API
    *****************************************************************************/
    -GType
    -gnt_menu_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntMenuClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_menu_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntMenu),
    - 0, /* n_preallocs */
    - gnt_menu_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_TREE,
    - "GntMenu",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_menu_new(GntMenuType type)
    {
    GntWidget *widget = g_object_new(GNT_TYPE_MENU, NULL);
    --- a/gntslider.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntslider.c Wed Apr 03 21:39:23 2019 -0400
    @@ -34,7 +34,7 @@
    static guint signals[SIGS] = { 0 };
    -static GntWidgetClass *parent_class = NULL;
    +G_DEFINE_TYPE(GntSlider, gnt_slider, GNT_TYPE_WIDGET)
    /* returns TRUE if the value was changed */
    static gboolean
    @@ -190,10 +190,11 @@
    gnt_slider_class_init(GntSliderClass *klass)
    {
    GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
    - parent_class = GNT_WIDGET_CLASS(klass);
    - parent_class->draw = gnt_slider_draw;
    - parent_class->map = gnt_slider_map;
    - parent_class->size_request = gnt_slider_size_request;
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    +
    + widget_class->draw = gnt_slider_draw;
    + widget_class->map = gnt_slider_map;
    + widget_class->size_request = gnt_slider_size_request;
    klass->changed = NULL;
    @@ -222,9 +223,9 @@
    }
    static void
    -gnt_slider_init(GTypeInstance *instance, gpointer class)
    +gnt_slider_init(GntSlider *slider)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    + GntWidget *widget = GNT_WIDGET(slider);
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER | GNT_WIDGET_CAN_TAKE_FOCUS);
    widget->priv.minw = 1;
    widget->priv.minh = 1;
    @@ -234,34 +235,6 @@
    /******************************************************************************
    * GntSlider API
    *****************************************************************************/
    -GType
    -gnt_slider_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntSliderClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_slider_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntSlider),
    - 0, /* n_preallocs */
    - gnt_slider_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WIDGET,
    - "GntSlider",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_slider_new(gboolean vertical, int max, int min)
    {
    GntWidget *widget = g_object_new(GNT_TYPE_SLIDER, NULL);
    --- a/gnttextview.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gnttextview.c Wed Apr 03 21:39:23 2019 -0400
    @@ -59,14 +59,14 @@
    int end;
    } GntTextTag;
    -static GntWidgetClass *parent_class = NULL;
    -
    static gchar *select_start;
    static gchar *select_end;
    static gboolean double_click;
    static void reset_text_view(GntTextView *view);
    +G_DEFINE_TYPE(GntTextView, gnt_text_view, GNT_TYPE_WIDGET)
    +
    static gboolean
    text_view_contains(GntTextView *view, const char *str)
    {
    @@ -443,23 +443,21 @@
    static void
    gnt_text_view_class_init(GntTextViewClass *klass)
    {
    - parent_class = GNT_WIDGET_CLASS(klass);
    - parent_class->destroy = gnt_text_view_destroy;
    - parent_class->draw = gnt_text_view_draw;
    - parent_class->map = gnt_text_view_map;
    - parent_class->size_request = gnt_text_view_size_request;
    - parent_class->key_pressed = gnt_text_view_key_pressed;
    - parent_class->clicked = gnt_text_view_clicked;
    - parent_class->size_changed = gnt_text_view_size_changed;
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - GNTDEBUG;
    + widget_class->destroy = gnt_text_view_destroy;
    + widget_class->draw = gnt_text_view_draw;
    + widget_class->map = gnt_text_view_map;
    + widget_class->size_request = gnt_text_view_size_request;
    + widget_class->key_pressed = gnt_text_view_key_pressed;
    + widget_class->clicked = gnt_text_view_clicked;
    + widget_class->size_changed = gnt_text_view_size_changed;
    }
    static void
    -gnt_text_view_init(GTypeInstance *instance, gpointer class)
    +gnt_text_view_init(GntTextView *view)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    - GntTextView *view = GNT_TEXT_VIEW(widget);
    + GntWidget *widget = GNT_WIDGET(view);
    GntTextLine *line = g_new0(GntTextLine, 1);
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW |
    @@ -475,34 +473,6 @@
    /******************************************************************************
    * GntTextView API
    *****************************************************************************/
    -GType
    -gnt_text_view_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntTextViewClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_text_view_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntTextView),
    - 0, /* n_preallocs */
    - gnt_text_view_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WIDGET,
    - "GntTextView",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_text_view_new()
    {
    GntWidget *widget = g_object_new(GNT_TYPE_TEXT_VIEW, NULL);
    --- a/gnttree.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gnttree.c Wed Apr 03 21:39:23 2019 -0400
    @@ -100,9 +100,10 @@
    static void tree_selection_changed(GntTree *, GntTreeRow *, GntTreeRow *);
    static void _gnt_tree_init_internals(GntTree *tree, int col);
    -static GntWidgetClass *parent_class = NULL;
    static guint signals[SIGS] = { 0 };
    +G_DEFINE_TYPE(GntTree, gnt_tree, GNT_TYPE_WIDGET)
    +
    static void
    readjust_columns(GntTree *tree)
    {
    @@ -1036,20 +1037,20 @@
    gnt_tree_class_init(GntTreeClass *klass)
    {
    GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
    - GObjectClass *gclass = G_OBJECT_CLASS(klass);
    + GObjectClass *obj_class = G_OBJECT_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - parent_class = GNT_WIDGET_CLASS(klass);
    - parent_class->destroy = gnt_tree_destroy;
    - parent_class->draw = gnt_tree_draw;
    - parent_class->map = gnt_tree_map;
    - parent_class->size_request = gnt_tree_size_request;
    - parent_class->key_pressed = gnt_tree_key_pressed;
    - parent_class->clicked = gnt_tree_clicked;
    - parent_class->size_changed = gnt_tree_size_changed;
    + widget_class->destroy = gnt_tree_destroy;
    + widget_class->draw = gnt_tree_draw;
    + widget_class->map = gnt_tree_map;
    + widget_class->size_request = gnt_tree_size_request;
    + widget_class->key_pressed = gnt_tree_key_pressed;
    + widget_class->clicked = gnt_tree_clicked;
    + widget_class->size_changed = gnt_tree_size_changed;
    - gclass->set_property = gnt_tree_set_property;
    - gclass->get_property = gnt_tree_get_property;
    - g_object_class_install_property(gclass,
    + obj_class->set_property = gnt_tree_set_property;
    + obj_class->get_property = gnt_tree_get_property;
    + g_object_class_install_property(obj_class,
    PROP_COLUMNS,
    g_param_spec_int("columns", "Columns",
    "Number of columns in the tree.",
    @@ -1057,7 +1058,7 @@
    G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS
    )
    );
    - g_object_class_install_property(gclass,
    + g_object_class_install_property(obj_class,
    PROP_EXPANDER,
    g_param_spec_int("expander-level", "Expander level",
    "Number of levels to show expander in the tree.",
    @@ -1121,12 +1122,13 @@
    }
    static void
    -gnt_tree_init(GTypeInstance *instance, gpointer class)
    +gnt_tree_init(GntTree *tree)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    - GntTree *tree = GNT_TREE(widget);
    + GntWidget *widget = GNT_WIDGET(tree);
    +
    tree->show_separator = TRUE;
    tree->priv = g_new0(GntTreePriv, 1);
    +
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_X | GNT_WIDGET_GROW_Y |
    GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW);
    gnt_widget_set_take_focus(widget, TRUE);
    @@ -1138,34 +1140,6 @@
    /******************************************************************************
    * GntTree API
    *****************************************************************************/
    -GType
    -gnt_tree_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntTreeClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_tree_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntTree),
    - 0, /* n_preallocs */
    - gnt_tree_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_WIDGET,
    - "GntTree",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    static void
    free_tree_col(gpointer data)
    {
    --- a/gntwindow.c Wed Apr 03 20:58:39 2019 -0400
    +++ b/gntwindow.c Wed Apr 03 21:39:23 2019 -0400
    @@ -41,9 +41,9 @@
    static guint signals[SIGS] = { 0 };
    -static GntBoxClass *parent_class = NULL;
    +static void (*org_destroy)(GntWidget *widget);
    -static void (*org_destroy)(GntWidget *widget);
    +G_DEFINE_TYPE(GntWindow, gnt_window, GNT_TYPE_BOX)
    static gboolean
    show_menu(GntBindable *bind, GList *null)
    @@ -83,11 +83,10 @@
    gnt_window_class_init(GntWindowClass *klass)
    {
    GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
    - GntWidgetClass *wid_class = GNT_WIDGET_CLASS(klass);
    - parent_class = GNT_BOX_CLASS(klass);
    + GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - org_destroy = wid_class->destroy;
    - wid_class->destroy = gnt_window_destroy;
    + org_destroy = widget_class->destroy;
    + widget_class->destroy = gnt_window_destroy;
    signals[SIG_WORKSPACE_HIDE] =
    g_signal_new("workspace-hidden",
    @@ -114,12 +113,13 @@
    }
    static void
    -gnt_window_init(GTypeInstance *instance, gpointer class)
    +gnt_window_init(GntWindow *win)
    {
    - GntWidget *widget = GNT_WIDGET(instance);
    - GntWindow *win = GNT_WINDOW(widget);
    + GntWidget *widget = GNT_WIDGET(win);
    +
    GNT_WIDGET_UNSET_FLAGS(widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW);
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_CAN_TAKE_FOCUS);
    +
    win->priv = g_new0(GntWindowPriv, 1);
    win->priv->accels = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
    GNTDEBUG;
    @@ -128,34 +128,6 @@
    /******************************************************************************
    * GntWindow API
    *****************************************************************************/
    -GType
    -gnt_window_get_type(void)
    -{
    - static GType type = 0;
    -
    - if(type == 0)
    - {
    - static const GTypeInfo info = {
    - sizeof(GntWindowClass),
    - NULL, /* base_init */
    - NULL, /* base_finalize */
    - (GClassInitFunc)gnt_window_class_init,
    - NULL, /* class_finalize */
    - NULL, /* class_data */
    - sizeof(GntWindow),
    - 0, /* n_preallocs */
    - gnt_window_init, /* instance_init */
    - NULL /* value_table */
    - };
    -
    - type = g_type_register_static(GNT_TYPE_BOX,
    - "GntWindow",
    - &info, 0);
    - }
    -
    - return type;
    -}
    -
    GntWidget *gnt_window_new()
    {
    GntWidget *widget = g_object_new(GNT_TYPE_WINDOW, NULL);