libgnt/libgnt

Use standard method of chaining up to parent methods.

2020-09-28, Elliott Sales de Andrade
d9dbe0d9d065
Parents ffb6069167a2
Children 20c59a277a74
Use standard method of chaining up to parent methods.

Testing Done:
Ran the `menu` example, and the Python GIR example from that other bug report.

Reviewed at https://reviews.imfreedom.org/r/142/
  • +14 -21
    gntmenu.c
  • +1 -4
    gntwindow.c
  • +2 -6
    wms/irssi.c
  • +1 -5
    wms/s.c
  • --- a/gntmenu.c Sun Sep 27 21:30:55 2020 -0500
    +++ b/gntmenu.c Mon Sep 28 17:55:33 2020 -0500
    @@ -57,13 +57,6 @@
    NUM_COLUMNS
    };
    -static void (*org_draw)(GntWidget *wid);
    -static void (*org_destroy)(GntWidget *wid);
    -static void (*org_map)(GntWidget *wid);
    -static void (*org_size_request)(GntWidget *wid);
    -static gboolean (*org_key_pressed)(GntWidget *w, const char *t);
    -static gboolean (*org_clicked)(GntWidget *w, GntMouseEvent event, int x, int y);
    -
    static void menuitem_activate(GntMenu *menu, GntMenuItem *item);
    G_DEFINE_TYPE(GntMenu, gnt_menu, GNT_TYPE_TREE)
    @@ -128,7 +121,7 @@
    C_(gnt_menuitem_get_text(item)));
    }
    } else {
    - org_draw(widget);
    + GNT_WIDGET_CLASS(gnt_menu_parent_class)->draw(widget);
    }
    }
    @@ -141,7 +134,7 @@
    gnt_widget_set_internal_size(widget, getmaxx(stdscr), 1);
    } else {
    gint width;
    - org_size_request(widget);
    + GNT_WIDGET_CLASS(gnt_menu_parent_class)->size_request(widget);
    gnt_widget_get_internal_size(widget, &width, NULL);
    gnt_widget_set_internal_size(widget, width,
    g_list_length(menu->list) + 2);
    @@ -247,7 +240,7 @@
    GntMenuItem *item = GNT_MENU_ITEM(iter->data);
    menu_tree_add(menu, item, NULL);
    }
    - org_map(widget);
    + GNT_WIDGET_CLASS(gnt_menu_parent_class)->map(widget);
    gnt_tree_adjust_columns(GNT_TREE(widget));
    }
    }
    @@ -403,7 +396,8 @@
    }
    if (gnt_bindable_perform_action_key(GNT_BINDABLE(widget), text))
    return TRUE;
    - return org_key_pressed(widget, text);
    + return GNT_WIDGET_CLASS(gnt_menu_parent_class)
    + ->key_pressed(widget, text);
    }
    return gnt_bindable_perform_action_key(GNT_BINDABLE(widget), text);
    @@ -415,7 +409,7 @@
    GntMenu *menu = GNT_MENU(widget);
    g_list_free_full(menu->list, g_object_unref);
    menu->list = NULL;
    - org_destroy(widget);
    + GNT_WIDGET_CLASS(gnt_menu_parent_class)->destroy(widget);
    }
    static void
    @@ -466,11 +460,17 @@
    static gboolean
    gnt_menu_clicked(GntWidget *widget, GntMouseEvent event, int x, int y)
    {
    - if (GNT_MENU(widget)->type != GNT_MENU_POPUP)
    + gboolean (*clicked)(GntWidget * w, GntMouseEvent event, int x, int y);
    +
    + if (GNT_MENU(widget)->type != GNT_MENU_POPUP) {
    return FALSE;
    + }
    - if (org_clicked && org_clicked(widget, event, x, y))
    + clicked = GNT_WIDGET_CLASS(gnt_menu_parent_class)->clicked;
    + if (clicked && clicked(widget, event, x, y)) {
    return TRUE;
    + }
    +
    gnt_widget_activate(widget);
    return TRUE;
    }
    @@ -481,13 +481,6 @@
    GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    GntTreeClass *tree_class = GNT_TREE_CLASS(klass);
    - 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;
    -
    widget_class->destroy = gnt_menu_destroy;
    widget_class->draw = gnt_menu_draw;
    widget_class->map = gnt_menu_map;
    --- a/gntwindow.c Sun Sep 27 21:30:55 2020 -0500
    +++ b/gntwindow.c Mon Sep 28 17:55:33 2020 -0500
    @@ -43,8 +43,6 @@
    static guint signals[SIGS] = { 0 };
    -static void (*org_destroy)(GntWidget *widget);
    -
    G_DEFINE_TYPE_WITH_PRIVATE(GntWindow, gnt_window, GNT_TYPE_BOX)
    static gboolean
    @@ -77,7 +75,7 @@
    g_clear_pointer((GntWidget **)&priv->menu, gnt_widget_destroy);
    g_clear_pointer(&priv->accels, g_hash_table_destroy);
    - org_destroy(widget);
    + GNT_WIDGET_CLASS(gnt_window_parent_class)->destroy(widget);
    }
    static void
    @@ -86,7 +84,6 @@
    GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
    GntWidgetClass *widget_class = GNT_WIDGET_CLASS(klass);
    - org_destroy = widget_class->destroy;
    widget_class->destroy = gnt_window_destroy;
    signals[SIG_WORKSPACE_HIDE] =
    --- a/wms/irssi.c Sun Sep 27 21:30:55 2020 -0500
    +++ b/wms/irssi.c Mon Sep 28 17:55:33 2020 -0500
    @@ -50,8 +50,6 @@
    G_DEFINE_TYPE(GntIrssiWM, gnt_irssi_wm, GNT_TYPE_WM)
    void gntwm_init(GntWM **wm);
    -static void (*org_new_window)(GntWM *wm, GntWidget *win);
    -
    static void
    get_xywh_for_frame(GntIrssiWM *irssi, int hor, int vert, int *x, int *y, int *w,
    int *h)
    @@ -166,7 +164,7 @@
    draw_line_separators(irssi);
    }
    }
    - org_new_window(wm, win);
    + GNT_WM_CLASS(gnt_irssi_wm_parent_class)->new_window(wm, win);
    return;
    }
    @@ -177,7 +175,7 @@
    * such. */
    get_xywh_for_frame(irssi, 0, 0, &x, &y, &w, &h);
    remove_border_set_position_size(wm, win, x, y, w, h);
    - org_new_window(wm, win);
    + GNT_WM_CLASS(gnt_irssi_wm_parent_class)->new_window(wm, win);
    }
    static void
    @@ -349,8 +347,6 @@
    {
    GntWMClass *pclass = GNT_WM_CLASS(klass);
    - org_new_window = pclass->new_window;
    -
    pclass->new_window = irssi_new_window;
    pclass->window_resized = irssi_window_resized;
    pclass->close_window = irssi_close_window;
    --- a/wms/s.c Sun Sep 27 21:30:55 2020 -0500
    +++ b/wms/s.c Mon Sep 28 17:55:33 2020 -0500
    @@ -35,8 +35,6 @@
    G_DEFINE_TYPE(GntSWM, gnt_s_wm, GNT_TYPE_WM)
    void gntwm_init(GntWM **wm);
    -static void (*org_new_window)(GntWM *wm, GntWidget *win);
    -
    static void
    envelope_main_window(GntWidget *win)
    {
    @@ -128,7 +126,7 @@
    }
    }
    }
    - org_new_window(wm, win);
    + GNT_WM_CLASS(gnt_s_wm_parent_class)->new_window(wm, win);
    if (main_window)
    gnt_wm_raise_window(wm, win);
    @@ -187,8 +185,6 @@
    {
    GntWMClass *pclass = GNT_WM_CLASS(klass);
    - org_new_window = pclass->new_window;
    -
    pclass->new_window = s_new_window;
    pclass->decorate_window = s_decorate_window;
    pclass->window_update = s_window_update;