qulogic/libgnt

Add getter for GntWidget->window.

2019-04-26, Elliott Sales de Andrade
a0be04705005
Add getter for GntWidget->window.
  • +31 -16
    gntbox.c
  • +5 -4
    gntbutton.c
  • +8 -8
    gntcheckbox.c
  • +14 -11
    gntcombobox.c
  • +11 -11
    gntentry.c
  • +8 -7
    gntlabel.c
  • +3 -2
    gntline.c
  • +7 -7
    gntmenu.c
  • +23 -15
    gntprogressbar.c
  • +14 -9
    gntslider.c
  • +26 -19
    gnttextview.c
  • +24 -21
    gnttree.c
  • +7 -0
    gntwidget.c
  • +12 -0
    gntwidget.h
  • +12 -9
    gntwm.c
  • +2 -2
    wms/irssi.c
  • +11 -7
    wms/s.c
  • --- a/gntbox.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntbox.c Fri Apr 26 16:56:55 2019 -0400
    @@ -105,6 +105,7 @@
    {
    GntBox *box = GNT_BOX(widget);
    GntBoxPrivate *priv = gnt_box_get_instance_private(box);
    + WINDOW *window = gnt_widget_get_window(widget);
    if (priv->focus == NULL && gnt_widget_get_parent(widget) == NULL) {
    g_list_foreach(priv->list, (GFunc)add_to_focus, box);
    @@ -118,13 +119,18 @@
    get_title_thingies(box, title, &pos, &right);
    - if (gnt_widget_has_focus(widget))
    - wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_TITLE));
    - else
    - wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_TITLE_D));
    - mvwaddch(widget->window, 0, pos-1, ACS_RTEE | gnt_color_pair(GNT_COLOR_NORMAL));
    - mvwaddstr(widget->window, 0, pos, C_(title));
    - mvwaddch(widget->window, 0, right, ACS_LTEE | gnt_color_pair(GNT_COLOR_NORMAL));
    + if (gnt_widget_has_focus(widget)) {
    + wbkgdset(window,
    + '\0' | gnt_color_pair(GNT_COLOR_TITLE));
    + } else {
    + wbkgdset(window,
    + '\0' | gnt_color_pair(GNT_COLOR_TITLE_D));
    + }
    + mvwaddch(window, 0, pos - 1,
    + ACS_RTEE | gnt_color_pair(GNT_COLOR_NORMAL));
    + mvwaddstr(window, 0, pos, C_(title));
    + mvwaddch(window, 0, right,
    + ACS_LTEE | gnt_color_pair(GNT_COLOR_NORMAL));
    g_free(title);
    }
    @@ -438,7 +444,8 @@
    gnt_widget_get_position(widget, &widgetx, &widgety);
    win = newwin(height, width, widgety + y, widgetx + x);
    - copywin(widget->window, win, y, x, 0, 0, height - 1, width - 1, FALSE);
    + copywin(gnt_widget_get_window(widget), win, y, x, 0, 0, height - 1,
    + width - 1, FALSE);
    wrefresh(win);
    delwin(win);
    }
    @@ -750,12 +757,13 @@
    prev = priv->title;
    priv->title = g_strdup(title);
    w = GNT_WIDGET(box);
    - if (w->window && gnt_widget_get_has_border(w)) {
    + if (gnt_widget_get_window(w) && gnt_widget_get_has_border(w)) {
    /* Erase the old title */
    int pos, right;
    get_title_thingies(box, prev, &pos, &right);
    - mvwhline(w->window, 0, pos - 1, ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL),
    - right - pos + 2);
    + mvwhline(gnt_widget_get_window(w), 0, pos - 1,
    + ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL),
    + right - pos + 2);
    }
    g_free(prev);
    }
    @@ -805,6 +813,7 @@
    {
    GntBoxPrivate *priv = NULL;
    GntWidget *widget = NULL;
    + WINDOW *widget_window;
    GList *iter;
    gint widgetx, widgety, widgetwidth, widgetheight;
    int pos;
    @@ -813,6 +822,7 @@
    priv = gnt_box_get_instance_private(box);
    widget = GNT_WIDGET(box);
    + widget_window = gnt_widget_get_window(widget);
    gnt_widget_get_position(widget, &widgetx, &widgety);
    gnt_widget_get_internal_size(widget, &widgetwidth, &widgetheight);
    pos = gnt_widget_get_has_border(widget) ? 1 : 0;
    @@ -823,6 +833,7 @@
    for (iter = priv->list; iter; iter = iter->next) {
    GntWidget *w = GNT_WIDGET(iter->data);
    + WINDOW *wwin;
    int height, width;
    gint x, y;
    @@ -865,11 +876,13 @@
    }
    }
    - copywin(w->window, widget->window, 0, 0,
    - y, x, y + height - 1, x + width - 1, FALSE);
    + wwin = gnt_widget_get_window(w);
    + copywin(wwin, widget_window, 0, 0, y, x, y + height - 1,
    + x + width - 1, FALSE);
    gnt_widget_set_position(w, x + widgetx, y + widgety);
    if (w == priv->active) {
    - wmove(widget->window, y + getcury(w->window), x + getcurx(w->window));
    + wmove(widget_window, y + getcury(wwin),
    + x + getcurx(wwin));
    }
    }
    }
    @@ -1013,8 +1026,9 @@
    gnt_widget_set_focus(priv->active, TRUE);
    }
    - if (GNT_WIDGET(box)->window)
    + if (gnt_widget_get_window(GNT_WIDGET(box))) {
    gnt_widget_draw(GNT_WIDGET(box));
    + }
    }
    void gnt_box_give_focus_to_child(GntBox *box, GntWidget *widget)
    @@ -1038,7 +1052,8 @@
    gnt_widget_set_focus(priv->active, TRUE);
    }
    - if (GNT_WIDGET(box)->window)
    + if (gnt_widget_get_window(GNT_WIDGET(box))) {
    gnt_widget_draw(GNT_WIDGET(box));
    + }
    }
    --- a/gntbutton.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntbutton.c Fri Apr 26 16:56:55 2019 -0400
    @@ -49,6 +49,7 @@
    {
    GntButton *button = GNT_BUTTON(widget);
    GntButtonPrivate *priv = gnt_button_get_instance_private(button);
    + WINDOW *window = gnt_widget_get_window(widget);
    GntColorType type;
    gboolean focus;
    @@ -57,14 +58,14 @@
    else
    type = GNT_COLOR_NORMAL;
    - wbkgdset(widget->window, '\0' | gnt_color_pair(type));
    - mvwaddstr(widget->window, (small_button) ? 0 : 1, 2, C_(priv->text));
    + wbkgdset(window, '\0' | gnt_color_pair(type));
    + mvwaddstr(window, (small_button) ? 0 : 1, 2, C_(priv->text));
    if (small_button) {
    gint width;
    type = GNT_COLOR_HIGHLIGHT;
    gnt_widget_get_internal_size(widget, &width, NULL);
    - mvwchgat(widget->window, 0, 0, width,
    - focus ? A_BOLD : A_REVERSE, type, NULL);
    + mvwchgat(window, 0, 0, width, focus ? A_BOLD : A_REVERSE, type,
    + NULL);
    }
    GNTDEBUG;
    --- a/gntcheckbox.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntcheckbox.c Fri Apr 26 16:56:55 2019 -0400
    @@ -45,6 +45,7 @@
    {
    GntCheckBox *cb = GNT_CHECK_BOX(widget);
    GntCheckBoxPrivate *priv = gnt_check_box_get_instance_private(cb);
    + WINDOW *window = gnt_widget_get_window(widget);
    GntColorType type;
    gboolean focus = gnt_widget_has_focus(widget);
    @@ -53,18 +54,17 @@
    else
    type = GNT_COLOR_NORMAL;
    - wbkgdset(widget->window, '\0' | gnt_color_pair(type));
    + wbkgdset(window, '\0' | gnt_color_pair(type));
    - mvwaddch(widget->window, 0, 0, '[');
    - mvwaddch(widget->window, 0, 1,
    + mvwaddch(window, 0, 0, '[');
    + mvwaddch(window, 0, 1,
    (priv->checked ? 'X' : ' ') |
    (focus ? A_UNDERLINE : A_NORMAL));
    - mvwaddch(widget->window, 0, 2, ']');
    + mvwaddch(window, 0, 2, ']');
    - wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL));
    - mvwaddstr(widget->window, 0, 4,
    - C_(gnt_button_get_text(GNT_BUTTON(cb))));
    - (void)wmove(widget->window, 0, 1);
    + wbkgdset(window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL));
    + mvwaddstr(window, 0, 4, C_(gnt_button_get_text(GNT_BUTTON(cb))));
    + (void)wmove(window, 0, 1);
    GNTDEBUG;
    }
    --- a/gntcombobox.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntcombobox.c Fri Apr 26 16:56:55 2019 -0400
    @@ -59,8 +59,9 @@
    /* XXX: make sure the key actually does exist */
    gpointer old = box->selected;
    box->selected = key;
    - if (GNT_WIDGET(box)->window)
    + if (gnt_widget_get_window(GNT_WIDGET(box))) {
    gnt_widget_draw(GNT_WIDGET(box));
    + }
    if (box->dropdown)
    gnt_tree_set_selected(GNT_TREE(box->dropdown), key);
    g_signal_emit(box, signals[SIG_SELECTION_CHANGED], 0, old, key);
    @@ -84,6 +85,7 @@
    gnt_combo_box_draw(GntWidget *widget)
    {
    GntComboBox *box = GNT_COMBO_BOX(widget);
    + WINDOW *window = gnt_widget_get_window(widget);
    char *text = NULL, *s;
    GntColorType type;
    gint width;
    @@ -100,19 +102,19 @@
    else
    type = GNT_COLOR_NORMAL;
    - wbkgdset(widget->window, '\0' | gnt_color_pair(type));
    + wbkgdset(window, '\0' | gnt_color_pair(type));
    gnt_widget_get_internal_size(widget, &width, NULL);
    s = (char *)gnt_util_onscreen_width_to_pointer(text, width - 4, &len);
    *s = '\0';
    - mvwaddstr(widget->window, 1, 1, C_(text));
    - whline(widget->window, ' ' | gnt_color_pair(type), width - 4 - len);
    - mvwaddch(widget->window, 1, width - 3,
    + mvwaddstr(window, 1, 1, C_(text));
    + whline(window, ' ' | gnt_color_pair(type), width - 4 - len);
    + mvwaddch(window, 1, width - 3,
    ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL));
    - mvwaddch(widget->window, 1, width - 2,
    + mvwaddch(window, 1, width - 2,
    ACS_DARROW | gnt_color_pair(GNT_COLOR_NORMAL));
    - (void)wmove(widget->window, 1, 1);
    + (void)wmove(window, 1, 1);
    g_free(text);
    GNTDEBUG;
    @@ -147,6 +149,7 @@
    {
    GntWidget *widget = GNT_WIDGET(box);
    GntWidget *parent = gnt_widget_get_parent(box->dropdown);
    + WINDOW *window;
    gint widgetx, widgety, widgetwidth, widgetheight;
    gint height;
    gint y;
    @@ -160,10 +163,10 @@
    if (y + height + 2 >= getmaxy(stdscr))
    y = widgety - height - 1;
    gnt_widget_set_position(parent, widgetx, y);
    - if (parent->window)
    - {
    - mvwin(parent->window, y, widgetx);
    - wresize(parent->window, height + 2, widgetwidth);
    + window = gnt_widget_get_window(parent);
    + if (window) {
    + mvwin(window, y, widgetx);
    + wresize(window, height + 2, widgetwidth);
    }
    gnt_widget_set_internal_size(parent, widgetwidth, height + 2);
    --- a/gntentry.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntentry.c Fri Apr 26 16:56:55 2019 -0400
    @@ -312,35 +312,35 @@
    {
    GntEntry *entry = GNT_ENTRY(widget);
    GntEntryPrivate *priv = gnt_entry_get_instance_private(entry);
    + WINDOW *window = gnt_widget_get_window(widget);
    gint width;
    int stop;
    gboolean focus;
    int curpos;
    if ((focus = gnt_widget_has_focus(widget)))
    - wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_TEXT_NORMAL));
    + wbkgdset(window, '\0' | gnt_color_pair(GNT_COLOR_TEXT_NORMAL));
    else
    - wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
    + wbkgdset(window, '\0' | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
    if (priv->masked) {
    - mvwhline(widget->window, 0, 0,
    - gnt_ascii_only() ? '*' : ACS_BULLET,
    + mvwhline(window, 0, 0, gnt_ascii_only() ? '*' : ACS_BULLET,
    g_utf8_pointer_to_offset(priv->scroll, priv->end));
    } else
    - mvwprintw(widget->window, 0, 0, "%s", C_(priv->scroll));
    + mvwprintw(window, 0, 0, "%s", C_(priv->scroll));
    stop = gnt_util_onscreen_width(priv->scroll, priv->end);
    gnt_widget_get_internal_size(GNT_WIDGET(entry), &width, NULL);
    if (stop < width) {
    - mvwhline(widget->window, 0, stop, GNT_ENTRY_CHAR, width - stop);
    + mvwhline(window, 0, stop, GNT_ENTRY_CHAR, width - stop);
    }
    curpos = gnt_util_onscreen_width(priv->scroll, priv->cursor);
    - if (focus)
    - mvwchgat(widget->window, 0, curpos, 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL);
    - (void)wmove(widget->window, 0, curpos);
    -
    - GNTDEBUG;
    + if (focus) {
    + mvwchgat(window, 0, curpos, 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL,
    + NULL);
    + }
    + (void)wmove(window, 0, curpos);
    }
    static void
    --- a/gntlabel.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntlabel.c Fri Apr 26 16:56:55 2019 -0400
    @@ -60,13 +60,12 @@
    static void
    gnt_label_draw(GntWidget *widget)
    {
    + WINDOW *window = gnt_widget_get_window(widget);
    GntLabel *label = GNT_LABEL(widget);
    chtype flag = gnt_text_format_flag_to_chtype(label->flags);
    - wbkgdset(widget->window, '\0' | flag);
    - mvwaddstr(widget->window, 0, 0, C_(label->text));
    -
    - GNTDEBUG;
    + wbkgdset(window, '\0' | flag);
    + mvwaddstr(window, 0, 0, C_(label->text));
    }
    static void
    @@ -179,11 +178,13 @@
    void gnt_label_set_text(GntLabel *label, const char *text)
    {
    + WINDOW *window;
    +
    g_object_set(label, "text", text, NULL);
    - if (GNT_WIDGET(label)->window)
    - {
    - werase(GNT_WIDGET(label)->window);
    + window = gnt_widget_get_window(GNT_WIDGET(label));
    + if (window) {
    + werase(window);
    gnt_widget_draw(GNT_WIDGET(label));
    }
    }
    --- a/gntline.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntline.c Fri Apr 26 16:56:55 2019 -0400
    @@ -49,15 +49,16 @@
    gnt_line_draw(GntWidget *widget)
    {
    GntLine *line = GNT_LINE(widget);
    + WINDOW *window = gnt_widget_get_window(widget);
    gint width, height;
    gnt_widget_get_internal_size(widget, &width, &height);
    if (line->vertical) {
    - mvwvline(widget->window, 1, 0,
    + mvwvline(window, 1, 0,
    ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL),
    height - 2);
    } else {
    - mvwhline(widget->window, 0, 1,
    + mvwhline(window, 0, 1,
    ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL),
    width - 2);
    }
    --- a/gntmenu.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntmenu.c Fri Apr 26 16:56:55 2019 -0400
    @@ -100,12 +100,13 @@
    guint i;
    if (menu->type == GNT_MENU_TOPLEVEL) {
    + WINDOW *window = gnt_widget_get_window(widget);
    gint x, y;
    gnt_widget_get_position(widget, &x, &y);
    - wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_HIGHLIGHT));
    - werase(widget->window);
    + wbkgdset(window, '\0' | gnt_color_pair(GNT_COLOR_HIGHLIGHT));
    + werase(window);
    for (i = 0, iter = menu->list; iter; iter = iter->next, i++) {
    GntMenuItem *item = GNT_MENU_ITEM(iter->data);
    @@ -120,11 +121,10 @@
    }
    if (i == menu->selected)
    type |= A_REVERSE;
    - gnt_menuitem_set_position(
    - item, getcurx(widget->window) + x,
    - getcury(widget->window) + y + 1);
    - wbkgdset(widget->window, type);
    - wprintw(widget->window, " %s ",
    + gnt_menuitem_set_position(item, getcurx(window) + x,
    + getcury(window) + y + 1);
    + wbkgdset(window, type);
    + wprintw(window, " %s ",
    C_(gnt_menuitem_get_text(item)));
    }
    } else {
    --- a/gntprogressbar.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntprogressbar.c Fri Apr 26 16:56:55 2019 -0400
    @@ -47,6 +47,7 @@
    {
    GntProgressBarPrivate *priv = gnt_progress_bar_get_instance_private (
    GNT_PROGRESS_BAR (widget));
    + WINDOW *window = gnt_widget_get_window(widget);
    gchar progress[8];
    gint width, height;
    gint start, end, i, pos;
    @@ -69,24 +70,28 @@
    /* background */
    for (i = 0; i < height; i++) {
    - mvwhline(widget->window, i, 0, ' ' | color,
    - width);
    + mvwhline(window, i, 0, ' ' | color, width);
    }
    /* foreground */
    for (i = 0; i < height; i++) {
    - mvwhline (widget->window, i, start, ACS_CKBOARD | color | A_REVERSE, end);
    + mvwhline(window, i, start,
    + ACS_CKBOARD | color | A_REVERSE, end);
    }
    /* text */
    if (priv->show_value) {
    pos = width / 2 - strlen(progress) / 2;
    for (i = 0; i < progress[i]; i++, pos++) {
    - wattrset (widget->window, color | ((pos < start || pos > end) ? A_NORMAL : A_REVERSE));
    - mvwprintw(widget->window, height / 2,
    - pos, "%c", progress[i]);
    + wattrset(window,
    + color | ((pos < start ||
    + pos > end)
    + ? A_NORMAL
    + : A_REVERSE));
    + mvwprintw(window, height / 2, pos, "%c",
    + progress[i]);
    }
    - wattrset (widget->window, color);
    + wattrset(window, color);
    }
    break;
    @@ -101,25 +106,28 @@
    /* background */
    for (i = 0; i < width; i++) {
    - mvwvline(widget->window, 0, i, ' ' | color,
    - height);
    + mvwvline(window, 0, i, ' ' | color, height);
    }
    /* foreground */
    for (i = 0; i < width; i++) {
    - mvwvline (widget->window, start, i, ACS_CKBOARD | color | A_REVERSE, end);
    + mvwvline(window, start, i,
    + ACS_CKBOARD | color | A_REVERSE, end);
    }
    /* text */
    if (priv->show_value) {
    pos = height / 2 - strlen(progress) / 2;
    for (i = 0; i < progress[i]; i++, pos++) {
    - wattrset (widget->window, color | ((pos < start || pos > end) ? A_NORMAL : A_REVERSE));
    - mvwprintw(widget->window, pos,
    - width / 2, "%c\n",
    - progress[i]);
    + wattrset(window,
    + color | ((pos < start ||
    + pos > end)
    + ? A_NORMAL
    + : A_REVERSE));
    + mvwprintw(window, pos, width / 2,
    + "%c\n", progress[i]);
    }
    - wattrset (widget->window, color);
    + wattrset(window, color);
    }
    break;
    --- a/gntslider.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntslider.c Fri Apr 26 16:56:55 2019 -0400
    @@ -82,6 +82,7 @@
    {
    GntSlider *slider = GNT_SLIDER(widget);
    GntSliderPrivate *priv = gnt_slider_get_instance_private(slider);
    + WINDOW *window = gnt_widget_get_window(widget);
    int attr = 0;
    int position, size = 0;
    @@ -101,18 +102,22 @@
    else
    position = 0;
    if (priv->vertical) {
    - mvwvline(widget->window, size-position, 0, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL) | A_BOLD,
    - position);
    - mvwvline(widget->window, 0, 0, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL),
    - size-position);
    + mvwvline(window, size - position, 0,
    + ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL) | A_BOLD,
    + position);
    + mvwvline(window, 0, 0,
    + ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL),
    + size - position);
    } else {
    - mvwhline(widget->window, 0, 0, ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL) | A_BOLD,
    - position);
    - mvwhline(widget->window, 0, position, ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL),
    - size - position);
    + mvwhline(window, 0, 0,
    + ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL) | A_BOLD,
    + position);
    + mvwhline(window, 0, position,
    + ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL),
    + size - position);
    }
    - mvwaddch(widget->window, priv->vertical ? (size - position - 1) : 0,
    + mvwaddch(window, priv->vertical ? (size - position - 1) : 0,
    priv->vertical ? 0 : position,
    ACS_CKBOARD | gnt_color_pair(attr));
    }
    --- a/gnttextview.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gnttextview.c Fri Apr 26 16:56:55 2019 -0400
    @@ -85,6 +85,7 @@
    gnt_text_view_draw(GntWidget *widget)
    {
    GntTextView *view = GNT_TEXT_VIEW(widget);
    + WINDOW *window = gnt_widget_get_window(widget);
    gint width, height;
    int n;
    int i = 0;
    @@ -95,8 +96,8 @@
    gnt_widget_get_internal_size(widget, &width, &height);
    - wbkgd(widget->window, gnt_color_pair(GNT_COLOR_NORMAL));
    - werase(widget->window);
    + wbkgd(window, gnt_color_pair(GNT_COLOR_NORMAL));
    + werase(window);
    n = g_list_length(view->list);
    if ((view->flags & GNT_TEXT_VIEW_TOP_ALIGN) && n < height) {
    @@ -116,7 +117,7 @@
    GList *iter;
    GntTextLine *line = lines->data;
    - (void)wmove(widget->window, height - 1 - i - comp, 0);
    + (void)wmove(window, height - 1 - i - comp, 0);
    for (iter = line->segments; iter; iter = iter->next)
    {
    @@ -127,8 +128,9 @@
    *end = '\0';
    if (select_start && select_start < view->string->str + seg->start && select_end > view->string->str + seg->end) {
    fl |= A_REVERSE;
    - wattrset(widget->window, fl);
    - wprintw(widget->window, "%s", C_(view->string->str + seg->start));
    + wattrset(window, fl);
    + wprintw(window, "%s",
    + C_(view->string->str + seg->start));
    } else if (select_start && select_end &&
    ((select_start >= view->string->str + seg->start && select_start <= view->string->str + seg->end) ||
    (select_end <= view->string->str + seg->end && select_start <= view->string->str + seg->start))) {
    @@ -141,19 +143,20 @@
    else
    fl = seg->flags;
    str = g_strndup(cur, last - cur);
    - wattrset(widget->window, fl);
    - waddstr(widget->window, C_(str));
    + wattrset(window, fl);
    + waddstr(window, C_(str));
    g_free(str);
    cur = g_utf8_next_char(cur);
    }
    } else {
    - wattrset(widget->window, fl);
    - wprintw(widget->window, "%s", C_(view->string->str + seg->start));
    + wattrset(window, fl);
    + wprintw(window, "%s",
    + C_(view->string->str + seg->start));
    }
    *end = back;
    }
    - wattroff(widget->window, A_UNDERLINE | A_BLINK | A_REVERSE);
    - whline(widget->window, ' ', width - line->length - has_scroll);
    + wattroff(window, A_UNDERLINE | A_BLINK | A_REVERSE);
    + whline(window, ' ', width - line->length - has_scroll);
    }
    scrcol = width - 1;
    @@ -181,19 +184,21 @@
    else if (showing + position < rows && view->list && !view->list->prev)
    position = rows - showing;
    - mvwvline(widget->window, position + 1, scrcol,
    - ACS_CKBOARD | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D), showing);
    + mvwvline(window, position + 1, scrcol,
    + ACS_CKBOARD | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D),
    + showing);
    }
    if (has_scroll) {
    - mvwaddch(widget->window, 0, scrcol,
    - (lines ? ACS_UARROW : ' ') | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
    - mvwaddch(widget->window, height - 1, scrcol,
    + mvwaddch(window, 0, scrcol,
    + (lines ? ACS_UARROW : ' ') |
    + gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
    + mvwaddch(window, height - 1, scrcol,
    ((view->list && view->list->prev) ? ACS_DARROW : ' ') |
    gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
    }
    - wmove(widget->window, 0, 0);
    + wmove(window, 0, 0);
    }
    static void
    @@ -437,8 +442,9 @@
    }
    view->list = list;
    gnt_widget_set_drawing(GNT_WIDGET(view), FALSE);
    - if (GNT_WIDGET(view)->window)
    + if (gnt_widget_get_window(GNT_WIDGET(view))) {
    gnt_widget_draw(GNT_WIDGET(view));
    + }
    g_string_free(string, TRUE);
    }
    @@ -694,8 +700,9 @@
    g_list_free_full(view->tags, (GDestroyNotify)free_tag);
    view->tags = NULL;
    - if (GNT_WIDGET(view)->window)
    + if (gnt_widget_get_window(GNT_WIDGET(view))) {
    gnt_widget_draw(GNT_WIDGET(view));
    + }
    }
    int gnt_text_view_get_lines_below(GntTextView *view)
    --- a/gnttree.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gnttree.c Fri Apr 26 16:56:55 2019 -0400
    @@ -456,7 +456,7 @@
    NEXT_X;
    }
    if (!COLUMN_INVISIBLE(priv, i + 1) && notfirst) {
    - mvwaddch(widget->window, y, x, type);
    + mvwaddch(gnt_widget_get_window(widget), y, x, type);
    }
    }
    }
    @@ -467,6 +467,7 @@
    GntTreePrivate *priv = gnt_tree_get_instance_private(tree);
    int start, i;
    GntWidget *widget = GNT_WIDGET(tree);
    + WINDOW *window = gnt_widget_get_window(widget);
    GntTreeRow *row;
    gint width, height;
    int pos, up, down = 0;
    @@ -487,17 +488,17 @@
    tree_selection_changed(tree, NULL, priv->current);
    }
    - wbkgd(widget->window, gnt_color_pair(GNT_COLOR_NORMAL));
    + wbkgd(window, gnt_color_pair(GNT_COLOR_NORMAL));
    start = 0;
    if (priv->show_title) {
    int i;
    int x = pos;
    - mvwhline(widget->window, pos + 1, pos,
    + mvwhline(window, pos + 1, pos,
    ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL),
    width - pos - 1);
    - mvwhline(widget->window, pos, pos,
    + mvwhline(window, pos, pos,
    ' ' | gnt_color_pair(GNT_COLOR_NORMAL),
    width - pos - 1);
    @@ -505,7 +506,7 @@
    if (COLUMN_INVISIBLE(priv, i)) {
    continue;
    }
    - mvwaddnstr(widget->window, pos, x + (x != pos),
    + mvwaddnstr(window, pos, x + (x != pos),
    priv->columns[i].title,
    priv->columns[i].width);
    NEXT_X;
    @@ -606,9 +607,9 @@
    attr |= gnt_color_pair(GNT_COLOR_NORMAL);
    }
    - wbkgdset(widget->window, '\0' | attr);
    - mvwaddstr(widget->window, i, pos, C_(str));
    - whline(widget->window, ' ', scrcol - wr);
    + wbkgdset(window, '\0' | attr);
    + mvwaddstr(window, i, pos, C_(str));
    + whline(window, ' ', scrcol - wr);
    priv->bottom = row;
    g_free(str);
    tree_mark_columns(tree, pos, i,
    @@ -616,9 +617,9 @@
    attr);
    }
    - wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL));
    + wbkgdset(window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL));
    while (i < height - pos) {
    - mvwhline(widget->window, i, pos, ' ', width - pos * 2 - 1);
    + mvwhline(window, i, pos, ' ', width - pos * 2 - 1);
    tree_mark_columns(tree, pos, i,
    (priv->show_separator ? ACS_VLINE : ' '));
    i++;
    @@ -652,17 +653,18 @@
    position += pos + start + 1;
    - mvwvline(widget->window, pos + start + 1, scrcol,
    - ' ' | gnt_color_pair(GNT_COLOR_NORMAL), rows);
    - mvwvline(widget->window, position, scrcol,
    - ACS_CKBOARD | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D), showing);
    + mvwvline(window, pos + start + 1, scrcol,
    + ' ' | gnt_color_pair(GNT_COLOR_NORMAL), rows);
    + mvwvline(window, position, scrcol,
    + ACS_CKBOARD | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D),
    + showing);
    }
    - mvwaddch(widget->window, start + pos, scrcol,
    + mvwaddch(window, start + pos, scrcol,
    ((priv->top != priv->root) ? ACS_UARROW : ' ') |
    gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
    - mvwaddch(widget->window, height - pos - 1, scrcol,
    + mvwaddch(window, height - pos - 1, scrcol,
    (row ? ACS_DARROW : ' ') |
    gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
    @@ -670,11 +672,11 @@
    if (SEARCHING(priv)) {
    const char *str = gnt_util_onscreen_width_to_pointer(
    priv->search->str, scrcol - 1, NULL);
    - wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
    - mvwaddnstr(widget->window, height - pos - 1, pos,
    - priv->search->str, str - priv->search->str);
    + wbkgdset(window, '\0' | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
    + mvwaddnstr(window, height - pos - 1, pos, priv->search->str,
    + str - priv->search->str);
    }
    - wmove(widget->window, current, pos);
    + wmove(window, current, pos);
    gnt_widget_queue_update(widget);
    }
    @@ -2039,8 +2041,9 @@
    row = g_hash_table_lookup(priv->hash, key);
    if (row) {
    row->collapsed = !expanded;
    - if (GNT_WIDGET(tree)->window)
    + if (gnt_widget_get_window(GNT_WIDGET(tree))) {
    gnt_widget_draw(GNT_WIDGET(tree));
    + }
    g_signal_emit(tree, signals[SIG_COLLAPSED], 0, key, row->collapsed);
    }
    }
    --- a/gntwidget.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntwidget.c Fri Apr 26 16:56:55 2019 -0400
    @@ -411,6 +411,13 @@
    gnt_widget_set_mapped(widget, FALSE);
    }
    +WINDOW *
    +gnt_widget_get_window(GntWidget *widget)
    +{
    + g_return_val_if_fail(GNT_IS_WIDGET(widget), NULL);
    + return widget->window;
    +}
    +
    void
    gnt_widget_set_parent(GntWidget *widget, GntWidget *parent)
    {
    --- a/gntwidget.h Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntwidget.h Fri Apr 26 16:56:55 2019 -0400
    @@ -187,6 +187,18 @@
    void gnt_widget_hide(GntWidget *widget);
    /**
    + * gnt_widget_get_window:
    + * @widget: The widget.
    + *
    + * Get the window of a widget.
    + *
    + * Returns: (transfer none) (nullable): The widget's window.
    + *
    + * Since: 3.0.0
    + */
    +WINDOW *gnt_widget_get_window(GntWidget *widget);
    +
    +/**
    * gnt_widget_set_parent:
    * @widget: The widget.
    * @parent: The parent widget.
    --- a/gntwm.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/gntwm.c Fri Apr 26 16:56:55 2019 -0400
    @@ -126,7 +126,7 @@
    WINDOW *src, *dst;
    if (!node)
    return;
    - src = widget->window;
    + src = gnt_widget_get_window(widget);
    dst = node->window;
    copywin(src, dst, node->scroll, 0, 0, 0, getmaxy(dst) - 1, getmaxx(dst) - 1, 0);
    @@ -134,11 +134,12 @@
    if (GNT_IS_WINDOW(widget) || GNT_IS_BOX(widget)) {
    GntWidget *active = gnt_box_get_active(GNT_BOX(widget));
    if (active) {
    + WINDOW *active_window = gnt_widget_get_window(active);
    gint curx, cury, widgetx, widgety;
    gnt_widget_get_position(active, &curx, &cury);
    gnt_widget_get_position(widget, &widgetx, &widgety);
    - curx += getcurx(active->window) - widgetx;
    - cury += getcury(active->window) - widgety;
    + curx += getcurx(active_window) - widgetx;
    + cury += getcury(active_window) - widgety;
    if (wmove(node->window, cury, curx) != OK) {
    (void)wmove(node->window, 0, 0);
    }
    @@ -1049,7 +1050,7 @@
    if (!gnt_widget_get_has_border(win))
    return;
    - d = win->window;
    + d = gnt_widget_get_window(win);
    gnt_widget_get_size(win, &w, &h);
    if (gnt_widget_has_shadow(win)) {
    @@ -1184,7 +1185,7 @@
    static void
    remove_tag(GntWidget *widget, G_GNUC_UNUSED gpointer data)
    {
    - mvwhline(widget->window, 0, 1,
    + mvwhline(gnt_widget_get_window(widget), 0, 1,
    ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL), 3);
    gnt_widget_draw(widget);
    }
    @@ -1209,8 +1210,9 @@
    }
    wm->tagged = g_list_prepend(wm->tagged, widget);
    - wbkgdset(widget->window, ' ' | gnt_color_pair(GNT_COLOR_HIGHLIGHT));
    - mvwprintw(widget->window, 0, 1, "[T]");
    + wbkgdset(gnt_widget_get_window(widget),
    + ' ' | gnt_color_pair(GNT_COLOR_HIGHLIGHT));
    + mvwprintw(gnt_widget_get_window(widget), 0, 1, "[T]");
    gnt_widget_draw(widget);
    return TRUE;
    }
    @@ -1770,8 +1772,9 @@
    GntNode *node;
    gboolean transient = FALSE;
    - if (widget->window == NULL)
    + if (gnt_widget_get_window(widget) == NULL) {
    return;
    + }
    node = g_new0(GntNode, 1);
    node->me = widget;
    @@ -1851,7 +1854,7 @@
    if (title && (p = g_hash_table_lookup(wm->positions, title)) != NULL) {
    sanitize_position(widget, &p->x, &p->y, TRUE);
    gnt_widget_set_position(widget, p->x, p->y);
    - mvwin(widget->window, p->y, p->x);
    + mvwin(gnt_widget_get_window(widget), p->y, p->x);
    }
    }
    --- a/wms/irssi.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/wms/irssi.c Fri Apr 26 16:56:55 2019 -0400
    @@ -145,7 +145,7 @@
    gnt_widget_set_take_focus(win, TRUE);
    gnt_widget_set_position(win, x, y);
    - mvwin(win->window, y, x);
    + mvwin(gnt_widget_get_window(win), y, x);
    gnt_widget_set_size(win, (w < 0) ? -1 : w + 2, h + 2);
    }
    @@ -168,7 +168,7 @@
    x = (getmaxx(stdscr) - w) / 2;
    y = (getmaxy(stdscr) - h) / 2;
    gnt_widget_set_position(win, x, y);
    - mvwin(win->window, y, x);
    + mvwin(gnt_widget_get_window(win), y, x);
    } else {
    gnt_window_set_maximize(GNT_WINDOW(win), GNT_WINDOW_MAXIMIZE_Y);
    remove_border_set_position_size(wm, win, 0, 0, -1, getmaxy(stdscr) - 1);
    --- a/wms/s.c Fri Apr 26 05:56:54 2019 -0400
    +++ b/wms/s.c Fri Apr 26 16:56:55 2019 -0400
    @@ -51,24 +51,28 @@
    static void
    envelope_main_window(GntWidget *win)
    {
    + WINDOW *window;
    int w, h;
    + window = gnt_widget_get_window(win);
    gnt_widget_get_size(win, &w, &h);
    - wresize(win->window, h, w + 1);
    - mvwvline(win->window, 0, w, ACS_VLINE | COLOR_PAIR(GNT_COLOR_NORMAL), h);
    - touchwin(win->window);
    + wresize(window, h, w + 1);
    + mvwvline(window, 0, w, ACS_VLINE | COLOR_PAIR(GNT_COLOR_NORMAL), h);
    + touchwin(window);
    }
    static void
    envelope_normal_window(GntWidget *win)
    {
    + WINDOW *window;
    int w, h;
    if (!gnt_widget_get_has_border(win) || gnt_widget_get_transient(win))
    return;
    + window = gnt_widget_get_window(win);
    gnt_widget_get_size(win, &w, &h);
    - wbkgdset(win->window, ' ' | COLOR_PAIR(GNT_COLOR_NORMAL));
    - mvwprintw(win->window, 0, w - 4, "[X]");
    + wbkgdset(window, ' ' | COLOR_PAIR(GNT_COLOR_NORMAL));
    + mvwprintw(window, 0, w - 4, "[X]");
    }
    static void
    @@ -120,7 +124,7 @@
    gnt_widget_set_take_focus(win, TRUE);
    gnt_widget_set_position(win, x, y);
    - mvwin(win->window, y, x);
    + mvwin(gnt_widget_get_window(win), y, x);
    gnt_widget_set_size(win, -1, h + 2); /* XXX: Why is the +2 needed here? -- sadrul */
    } else if (!gnt_widget_get_transient(win)) {
    @@ -131,7 +135,7 @@
    y = (maxy - h) / 2;
    gnt_widget_set_position(win, x, y);
    - mvwin(win->window, y, x);
    + mvwin(gnt_widget_get_window(win), y, x);
    }
    }
    }