libgnt/libgnt

Merged in default (pull request #22)

2019-04-09, Gary Kramlich
9c8fc70af8eb
Merged in default (pull request #22)

Use widget flag accessors, take 2

Approved-by: Gary Kramlich
  • +17 -21
    gntbox.c
  • +2 -1
    gntbutton.c
  • +5 -6
    gntcombobox.c
  • +2 -3
    gntentry.c
  • +5 -3
    gntfilesel.c
  • +2 -2
    gntmain.c
  • +1 -1
    gntslider.c
  • +2 -3
    gnttextview.c
  • +21 -19
    gnttree.c
  • +34 -10
    gntwidget.c
  • +24 -0
    gntwidget.h
  • +14 -13
    gntwm.c
  • +1 -1
    gntws.c
  • +1 -1
    wms/irssi.c
  • +3 -4
    wms/s.c
  • --- a/gntbox.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntbox.c Tue Apr 09 18:56:43 2019 +0000
    @@ -54,7 +54,7 @@
    if (GNT_IS_BOX(w))
    g_list_foreach(GNT_BOX(w)->list, add_to_focus, box);
    - else if (GNT_WIDGET_IS_FLAG_SET(w, GNT_WIDGET_CAN_TAKE_FOCUS))
    + else if (gnt_widget_get_take_focus(w))
    box->focus = g_list_append(box->focus, w);
    }
    @@ -82,8 +82,7 @@
    g_list_foreach(box->list, (GFunc)gnt_widget_draw, NULL);
    - if (box->title && !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
    - {
    + if (box->title && gnt_widget_get_has_border(widget)) {
    int pos, right;
    char *title = g_strdup(box->title);
    @@ -122,7 +121,7 @@
    for (iter = box->list; iter; iter = iter->next)
    {
    - if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(iter->data), GNT_WIDGET_INVISIBLE))
    + if (!gnt_widget_get_visible(GNT_WIDGET(iter->data)))
    continue;
    gnt_widget_set_position(GNT_WIDGET(iter->data), curx, cury);
    gnt_widget_get_size(GNT_WIDGET(iter->data), &w, &h);
    @@ -274,9 +273,10 @@
    box->active = iter->next->data;
    else if (box->focus)
    box->active = box->focus->data;
    - if (!GNT_WIDGET_IS_FLAG_SET(box->active, GNT_WIDGET_INVISIBLE) &&
    - GNT_WIDGET_IS_FLAG_SET(box->active, GNT_WIDGET_CAN_TAKE_FOCUS))
    + if (gnt_widget_get_visible(box->active) &&
    + gnt_widget_get_take_focus(box->active)) {
    break;
    + }
    } while (box->active != last);
    }
    @@ -297,7 +297,7 @@
    box->active = g_list_last(box->focus)->data;
    else
    box->active = iter->prev->data;
    - if (!GNT_WIDGET_IS_FLAG_SET(box->active, GNT_WIDGET_INVISIBLE))
    + if (gnt_widget_get_visible(box->active))
    break;
    } while (box->active != last);
    }
    @@ -308,7 +308,7 @@
    GntBox *box = GNT_BOX(widget);
    gboolean ret;
    - if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_DISABLE_ACTIONS))
    + if (!gnt_widget_get_disable_actions(widget))
    return FALSE;
    if (box->active == NULL && !find_focusable_widget(box))
    @@ -422,8 +422,8 @@
    gnt_widget_get_size(wid, &w, &h);
    if (wid != last && !child && w > 0 && h > 0 &&
    - !GNT_WIDGET_IS_FLAG_SET(wid, GNT_WIDGET_INVISIBLE) &&
    - gnt_widget_confirm_size(wid, w - wchange, h - hchange)) {
    + gnt_widget_get_visible(wid) &&
    + gnt_widget_confirm_size(wid, w - wchange, h - hchange)) {
    child = wid;
    break;
    }
    @@ -519,7 +519,7 @@
    if (cx >= x && cx < x + w && cy >= y && cy < y + h) {
    if (event <= GNT_MIDDLE_MOUSE_DOWN &&
    - GNT_WIDGET_IS_FLAG_SET(wid, GNT_WIDGET_CAN_TAKE_FOCUS)) {
    + gnt_widget_get_take_focus(wid)) {
    while (widget->parent)
    widget = widget->parent;
    gnt_box_give_focus_to_child(GNT_BOX(widget), wid);
    @@ -662,7 +662,7 @@
    char *prev = b->title;
    GntWidget *w = GNT_WIDGET(b);
    b->title = g_strdup(title);
    - if (w->window && !GNT_WIDGET_IS_FLAG_SET(w, GNT_WIDGET_NO_BORDER)) {
    + if (w->window && gnt_widget_get_has_border(w)) {
    /* Erase the old title */
    int pos, right;
    get_title_thingies(b, prev, &pos, &right);
    @@ -691,10 +691,7 @@
    {
    GList *iter;
    GntWidget *widget = GNT_WIDGET(box);
    - int pos = 1;
    -
    - if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
    - pos = 0;
    + int pos = gnt_widget_get_has_border(widget) ? 1 : 0;
    if (!box->active)
    find_focusable_widget(box);
    @@ -710,7 +707,7 @@
    continue;
    }
    - if (GNT_WIDGET_IS_FLAG_SET(w, GNT_WIDGET_INVISIBLE))
    + if (!gnt_widget_get_visible(w))
    continue;
    if (GNT_IS_BOX(w))
    @@ -759,9 +756,8 @@
    void gnt_box_remove(GntBox *box, GntWidget *widget)
    {
    box->list = g_list_remove(box->list, widget);
    - if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS)
    - && GNT_WIDGET(box)->parent == NULL && box->focus)
    - {
    + if (gnt_widget_get_take_focus(widget) &&
    + GNT_WIDGET(box)->parent == NULL && box->focus) {
    if (widget == box->active)
    {
    find_next_focus(box);
    @@ -771,7 +767,7 @@
    box->focus = g_list_remove(box->focus, widget);
    }
    - if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(box), GNT_WIDGET_MAPPED))
    + if (gnt_widget_get_mapped(GNT_WIDGET(box)))
    gnt_widget_draw(GNT_WIDGET(box));
    }
    --- a/gntbutton.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntbutton.c Tue Apr 09 18:56:43 2019 +0000
    @@ -66,8 +66,9 @@
    gnt_util_get_text_bound(button->priv->text,
    &widget->priv.width, &widget->priv.height);
    widget->priv.width += 4;
    - if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
    + if (gnt_widget_get_has_border(widget)) {
    widget->priv.height += 2;
    + }
    }
    static void
    --- a/gntcombobox.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntcombobox.c Tue Apr 09 18:56:43 2019 +0000
    @@ -105,8 +105,7 @@
    static void
    gnt_combo_box_size_request(GntWidget *widget)
    {
    - if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED))
    - {
    + if (!gnt_widget_get_mapped(widget)) {
    GntWidget *dd = GNT_COMBO_BOX(widget)->dropdown;
    gnt_widget_size_request(dd);
    widget->priv.height = 3; /* For now, a combobox will have border */
    @@ -150,7 +149,7 @@
    gnt_combo_box_key_pressed(GntWidget *widget, const char *text)
    {
    GntComboBox *box = GNT_COMBO_BOX(widget);
    - gboolean showing = !!GNT_WIDGET_IS_FLAG_SET(box->dropdown->parent, GNT_WIDGET_MAPPED);
    + gboolean showing = gnt_widget_get_mapped(box->dropdown->parent);
    if (showing) {
    if (text[1] == 0) {
    @@ -215,7 +214,7 @@
    gnt_combo_box_lost_focus(GntWidget *widget)
    {
    GntComboBox *combo = GNT_COMBO_BOX(widget);
    - if (GNT_WIDGET_IS_FLAG_SET(combo->dropdown->parent, GNT_WIDGET_MAPPED))
    + if (gnt_widget_get_mapped(combo->dropdown->parent))
    hide_popup(combo, FALSE);
    widget_lost_focus(widget);
    }
    @@ -225,7 +224,7 @@
    G_GNUC_UNUSED int x, G_GNUC_UNUSED int y)
    {
    GntComboBox *box = GNT_COMBO_BOX(widget);
    - gboolean dshowing = GNT_WIDGET_IS_FLAG_SET(box->dropdown->parent, GNT_WIDGET_MAPPED);
    + gboolean dshowing = gnt_widget_get_mapped(box->dropdown->parent);
    if (event == GNT_MOUSE_SCROLL_UP) {
    if (dshowing)
    @@ -255,7 +254,7 @@
    static gboolean
    dropdown_menu(GntBindable *b, G_GNUC_UNUSED GList *params)
    {
    - if (GNT_WIDGET_IS_FLAG_SET(GNT_COMBO_BOX(b)->dropdown->parent, GNT_WIDGET_MAPPED))
    + if (gnt_widget_get_mapped(GNT_COMBO_BOX(b)->dropdown->parent))
    return FALSE;
    popup_dropdown(GNT_COMBO_BOX(b));
    return TRUE;
    --- a/gntentry.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntentry.c Tue Apr 09 18:56:43 2019 +0000
    @@ -306,8 +306,7 @@
    static void
    gnt_entry_size_request(GntWidget *widget)
    {
    - if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED))
    - {
    + if (!gnt_widget_get_mapped(widget)) {
    widget->priv.height = 1;
    widget->priv.width = 20;
    }
    @@ -1102,7 +1101,7 @@
    if ((entry->cursor = entry->end - cursor) > entry->end)
    entry->cursor = entry->end;
    - if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(entry), GNT_WIDGET_MAPPED))
    + if (gnt_widget_get_mapped(GNT_WIDGET(entry)))
    entry_redraw(GNT_WIDGET(entry));
    }
    --- a/gntfilesel.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntfilesel.c Tue Apr 09 18:56:43 2019 +0000
    @@ -200,8 +200,9 @@
    gnt_tree_remove_all(GNT_TREE(sel->files));
    gnt_entry_set_text(GNT_ENTRY(sel->location), NULL);
    if (sel->current == NULL) {
    - if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(sel), GNT_WIDGET_MAPPED))
    + if (gnt_widget_get_mapped(GNT_WIDGET(sel))) {
    gnt_widget_draw(GNT_WIDGET(sel));
    + }
    return TRUE;
    }
    @@ -240,8 +241,9 @@
    }
    }
    g_list_free_full(files, (GDestroyNotify)gnt_file_free);
    - if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(sel), GNT_WIDGET_MAPPED))
    + if (gnt_widget_get_mapped(GNT_WIDGET(sel))) {
    gnt_widget_draw(GNT_WIDGET(sel));
    + }
    return TRUE;
    }
    @@ -312,7 +314,7 @@
    file_sel_changed(GntWidget *widget, G_GNUC_UNUSED gpointer old,
    G_GNUC_UNUSED gpointer current, GntFileSel *sel)
    {
    - if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_HAS_FOCUS)) {
    + if (gnt_widget_get_has_focus(widget)) {
    g_free(sel->suggest);
    sel->suggest = NULL;
    update_location(sel);
    --- a/gntmain.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntmain.c Tue Apr 09 18:56:43 2019 +0000
    @@ -212,8 +212,8 @@
    if (widget && gnt_wm_process_click(wm, event, x, y, widget))
    return TRUE;
    - if (event == GNT_LEFT_MOUSE_DOWN && widget && widget != wm->_list.window &&
    - !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) {
    + if (event == GNT_LEFT_MOUSE_DOWN && widget &&
    + widget != wm->_list.window && !gnt_widget_get_transient(widget)) {
    if (widget != wm->cws->ordered->data) {
    gnt_wm_raise_window(wm, widget);
    }
    --- a/gntslider.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntslider.c Tue Apr 09 18:56:43 2019 +0000
    @@ -53,7 +53,7 @@
    redraw_slider(GntSlider *slider)
    {
    GntWidget *widget = GNT_WIDGET(slider);
    - if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED))
    + if (gnt_widget_get_mapped(widget))
    gnt_widget_draw(widget);
    }
    --- a/gnttextview.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gnttextview.c Tue Apr 09 18:56:43 2019 +0000
    @@ -189,8 +189,7 @@
    static void
    gnt_text_view_size_request(GntWidget *widget)
    {
    - if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED))
    - {
    + if (!gnt_widget_get_mapped(widget)) {
    gnt_widget_set_size(widget, 64, 20);
    }
    }
    @@ -437,7 +436,7 @@
    static void
    gnt_text_view_size_changed(GntWidget *widget, int w, G_GNUC_UNUSED int h)
    {
    - if (w != widget->priv.width && GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED)) {
    + if (w != widget->priv.width && gnt_widget_get_mapped(widget)) {
    gnt_text_view_reflow(GNT_TEXT_VIEW(widget));
    }
    }
    --- a/gnttree.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gnttree.c Tue Apr 09 18:56:43 2019 +0000
    @@ -111,8 +111,9 @@
    int width;
    #define WIDTH(i) (tree->columns[i].width_ratio ? tree->columns[i].width_ratio : tree->columns[i].width)
    gnt_widget_get_size(GNT_WIDGET(tree), &width, NULL);
    - if (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER))
    + if (gnt_widget_get_has_border(GNT_WIDGET(tree))) {
    width -= 2;
    + }
    width -= 1; /* Exclude the scrollbar from the calculation */
    for (i = 0, total = 0; i < tree->ncol ; i++) {
    if (tree->columns[i].flags & GNT_TREE_COLUMN_INVISIBLE)
    @@ -425,13 +426,10 @@
    int rows, scrcol;
    int current = 0;
    - if (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_MAPPED))
    + if (!gnt_widget_get_mapped(GNT_WIDGET(tree)))
    return;
    - if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
    - pos = 0;
    - else
    - pos = 1;
    + pos = gnt_widget_get_has_border(widget) ? 1 : 0;
    if (tree->top == NULL)
    tree->top = tree->root;
    @@ -642,7 +640,7 @@
    {
    GntTree *tree = GNT_TREE(widget);
    int i, width = 0;
    - width = 1 + 2 * (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER));
    + width = gnt_widget_get_has_border(GNT_WIDGET(tree)) ? 3 : 1;
    for (i = 0; i < tree->ncol; i++)
    if (!COLUMN_INVISIBLE(tree, i)) {
    width = width + tree->columns[i].width;
    @@ -766,8 +764,10 @@
    if (tree->top != tree->root)
    {
    int dist = get_distance(tree->top, tree->current);
    - row = get_prev_n(tree->top, widget->priv.height - 1 -
    - tree->show_title * 2 - 2 * (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER) == 0));
    + row = get_prev_n(
    + tree->top,
    + widget->priv.height - 1 - tree->show_title * 2 -
    + (gnt_widget_get_has_border(widget) ? 2 : 0));
    if (row == NULL)
    row = tree->root;
    tree->top = row;
    @@ -896,9 +896,7 @@
    } else if (event == GNT_LEFT_MOUSE_DOWN) {
    GntTreeRow *row;
    GntTree *tree = GNT_TREE(widget);
    - int pos = 1;
    - if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
    - pos = 0;
    + int pos = gnt_widget_get_has_border(widget) ? 1 : 0;
    if (tree->show_title)
    pos += 2;
    pos = y - widget->priv.y - pos;
    @@ -1173,16 +1171,18 @@
    {
    GntWidget *widget = GNT_WIDGET(tree);
    widget->priv.height = rows;
    - if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
    + if (gnt_widget_get_has_border(widget)) {
    widget->priv.height += 2;
    + }
    }
    int gnt_tree_get_visible_rows(GntTree *tree)
    {
    GntWidget *widget = GNT_WIDGET(tree);
    int ret = widget->priv.height;
    - if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
    + if (gnt_widget_get_has_border(widget)) {
    ret -= 2;
    + }
    return ret;
    }
    @@ -1522,7 +1522,7 @@
    int gnt_tree_get_selection_visible_line(GntTree *tree)
    {
    return get_distance(tree->top, tree->current) +
    - !!(GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER));
    + !gnt_widget_get_has_border(GNT_WIDGET(tree));
    }
    void gnt_tree_change_text(GntTree *tree, gpointer key, int colno, const char *text)
    @@ -1543,9 +1543,11 @@
    col->text = g_strdup(text ? text : "");
    }
    - if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_MAPPED) &&
    - get_distance(tree->top, row) >= 0 && get_distance(row, tree->bottom) >= 0)
    + if (gnt_widget_get_mapped(GNT_WIDGET(tree)) &&
    + get_distance(tree->top, row) >= 0 &&
    + get_distance(row, tree->bottom) >= 0) {
    redraw_tree(tree);
    + }
    }
    }
    @@ -1791,7 +1793,7 @@
    row = get_next(row);
    }
    - twidth = 1 + 2 * (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER));
    + twidth = gnt_widget_get_has_border(GNT_WIDGET(tree)) ? 3 : 1;
    for (i = 0; i < tree->ncol; i++) {
    if (tree->columns[i].flags & GNT_TREE_COLUMN_FIXED_SIZE)
    widths[i] = tree->columns[i].width;
    @@ -1838,7 +1840,7 @@
    break;
    }
    }
    - if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_MAPPED))
    + if (gnt_widget_get_mapped(GNT_WIDGET(tree)))
    readjust_columns(tree);
    }
    --- a/gntwidget.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntwidget.c Tue Apr 09 18:56:43 2019 +0000
    @@ -91,13 +91,20 @@
    gnt_widget_dummy_confirm_size(GntWidget *widget, int width, int height)
    {
    gboolean shadow;
    - if (width < widget->priv.minw || height < widget->priv.minh)
    + if (width < widget->priv.minw || height < widget->priv.minh) {
    return FALSE;
    + }
    +
    shadow = gnt_widget_has_shadow(widget);
    - if (widget->priv.width + shadow != width && !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_GROW_X))
    + if (widget->priv.width + shadow != width &&
    + !gnt_widget_get_grow_x(widget)) {
    return FALSE;
    - if (widget->priv.height + shadow != height && !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_GROW_Y))
    + }
    + if (widget->priv.height + shadow != height &&
    + !gnt_widget_get_grow_y(widget)) {
    return FALSE;
    + }
    +
    return TRUE;
    }
    @@ -258,6 +265,14 @@
    GNT_WIDGET_UNSET_FLAGS(widget, GNT_WIDGET_CAN_TAKE_FOCUS);
    }
    +gboolean
    +gnt_widget_get_take_focus(GntWidget *widget)
    +{
    + g_return_val_if_fail(GNT_IS_WIDGET(widget), FALSE);
    +
    + return GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS);
    +}
    +
    void
    gnt_widget_destroy(GntWidget *widget)
    {
    @@ -309,12 +324,13 @@
    gnt_widget_key_pressed(GntWidget *widget, const char *keys)
    {
    gboolean ret;
    - if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS))
    + if (!gnt_widget_get_take_focus(widget))
    return FALSE;
    - if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_DISABLE_ACTIONS) &&
    - gnt_bindable_perform_action_key(GNT_BINDABLE(widget), keys))
    + if (!gnt_widget_get_disable_actions(widget) &&
    + gnt_bindable_perform_action_key(GNT_BINDABLE(widget), keys)) {
    return TRUE;
    + }
    keys = gnt_bindable_remap_keys(GNT_BINDABLE(widget), keys);
    g_signal_emit(widget, signals[SIG_KEY_PRESSED], 0, keys, &ret);
    @@ -436,8 +452,7 @@
    if (height <= 0)
    height = widget->priv.height;
    - if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED))
    - {
    + if (gnt_widget_get_mapped(widget)) {
    ret = gnt_widget_confirm_size(widget, width, height);
    }
    @@ -478,7 +493,7 @@
    gboolean
    gnt_widget_set_focus(GntWidget *widget, gboolean set)
    {
    - if (!(GNT_WIDGET_FLAGS(widget) & GNT_WIDGET_CAN_TAKE_FOCUS))
    + if (!gnt_widget_get_take_focus(widget))
    return FALSE;
    if (set && !gnt_widget_get_has_focus(widget)) {
    @@ -517,8 +532,9 @@
    if (!g_object_get_data(G_OBJECT(widget), "gnt:queue_update"))
    return FALSE;
    - if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED))
    + if (gnt_widget_get_mapped(widget)) {
    gnt_screen_update(widget);
    + }
    g_object_set_data(G_OBJECT(widget), "gnt:queue_update", NULL);
    return FALSE;
    }
    @@ -553,6 +569,14 @@
    GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_INVISIBLE);
    }
    +gboolean
    +gnt_widget_get_visible(GntWidget *widget)
    +{
    + g_return_val_if_fail(GNT_IS_WIDGET(widget), FALSE);
    +
    + return !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_INVISIBLE);
    +}
    +
    gboolean gnt_widget_has_shadow(GntWidget *widget)
    {
    return (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_SHADOW) &&
    --- a/gntwidget.h Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntwidget.h Tue Apr 09 18:56:43 2019 +0000
    @@ -337,6 +337,18 @@
    void gnt_widget_set_take_focus(GntWidget *widget, gboolean set);
    /**
    + * gnt_widget_get_take_focus:
    + * @widget: The widget.
    + *
    + * Get whether a widget can take focus or not.
    + *
    + * Returns: %TRUE if the widget can take focus.
    + *
    + * Since: 2.9.0
    + */
    +gboolean gnt_widget_get_take_focus(GntWidget *widget);
    +
    +/**
    * gnt_widget_set_visible:
    * @widget: The widget.
    * @set: Whether the widget is visible or not.
    @@ -346,6 +358,18 @@
    void gnt_widget_set_visible(GntWidget *widget, gboolean set);
    /**
    + * gnt_widget_get_visible:
    + * @widget: The widget.
    + *
    + * Get the visibility of a widget.
    + *
    + * Returns: Whether the widget is visible or not.
    + *
    + * Since: 2.9.0
    + */
    +gboolean gnt_widget_get_visible(GntWidget *widget);
    +
    +/**
    * gnt_widget_has_shadow:
    * @widget: The widget.
    *
    --- a/gntwm.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntwm.c Tue Apr 09 18:56:43 2019 +0000
    @@ -439,7 +439,7 @@
    pos = 0;
    } else
    wid = g_list_nth_data(wm->cws->list, pos);
    - } while (urgent && !GNT_WIDGET_IS_FLAG_SET(wid, GNT_WIDGET_URGENT) && pos != orgpos);
    + } while (urgent && !gnt_widget_get_is_urgent(wid) && pos != orgpos);
    gnt_wm_raise_window(wm, wid);
    }
    @@ -1033,7 +1033,7 @@
    int w, h;
    WINDOW *d;
    - if (GNT_WIDGET_IS_FLAG_SET(win, GNT_WIDGET_NO_BORDER))
    + if (!gnt_widget_get_has_border(win))
    return;
    d = win->window;
    @@ -1713,7 +1713,7 @@
    if (wm->cws->ordered && wid == wm->cws->ordered->data)
    flag |= GNT_TEXT_FLAG_DIM;
    - else if (GNT_WIDGET_IS_FLAG_SET(wid, GNT_WIDGET_URGENT))
    + else if (gnt_widget_get_is_urgent(wid))
    flag |= GNT_TEXT_FLAG_BOLD;
    gnt_tree_set_row_flags(GNT_TREE(wm->windows->tree), wid, flag);
    @@ -1761,7 +1761,7 @@
    refresh_node(widget, node, GINT_TO_POINTER(TRUE));
    - transient = !!GNT_WIDGET_IS_FLAG_SET(node->me, GNT_WIDGET_TRANSIENT);
    + transient = gnt_widget_get_transient(node->me);
    #if 1
    {
    @@ -1826,8 +1826,8 @@
    while (widget->parent)
    widget = widget->parent;
    - if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_INVISIBLE) ||
    - g_hash_table_lookup(wm->nodes, widget)) {
    + if (!gnt_widget_get_visible(widget) ||
    + g_hash_table_lookup(wm->nodes, widget)) {
    update_screen(wm);
    return;
    }
    @@ -1845,9 +1845,10 @@
    g_signal_emit(wm, signals[SIG_NEW_WIN], 0, widget);
    g_signal_emit(wm, signals[SIG_DECORATE_WIN], 0, widget);
    - if (wm->windows && !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) {
    - if ((GNT_IS_BOX(widget) && GNT_BOX(widget)->title) && wm->_list.window != widget
    - && GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS)) {
    + if (wm->windows && !gnt_widget_get_transient(widget)) {
    + if ((GNT_IS_BOX(widget) && GNT_BOX(widget)->title) &&
    + wm->_list.window != widget &&
    + gnt_widget_get_take_focus(widget)) {
    gnt_tree_add_row_last(GNT_TREE(wm->windows->tree), widget,
    gnt_tree_create_row(GNT_TREE(wm->windows->tree), GNT_BOX(widget)->title),
    g_object_get_data(G_OBJECT(wm->windows->tree), "workspace") ? wm->cws : NULL);
    @@ -1868,7 +1869,7 @@
    {
    GntWS *s;
    int pos;
    - gboolean transient = !!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT);
    + gboolean transient = gnt_widget_get_transient(widget);
    s = gnt_wm_widget_find_workspace(wm, widget);
    @@ -2128,7 +2129,7 @@
    g_signal_emit(wm, signals[SIG_MOVED], 0, node);
    if (gnt_style_get_bool(GNT_STYLE_REMPOS, TRUE) && GNT_IS_BOX(widget) &&
    - !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) {
    + !gnt_widget_get_transient(widget)) {
    const char *title = GNT_BOX(widget)->title;
    if (title) {
    GntPosition *p = g_new0(GntPosition, 1);
    @@ -2191,11 +2192,11 @@
    } else
    g_signal_emit(wm, signals[SIG_UPDATE_WIN], 0, node);
    - if (ws == wm->cws || GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) {
    + if (ws == wm->cws || gnt_widget_get_transient(widget)) {
    gnt_wm_copy_win(widget, node);
    gnt_ws_draw_taskbar(wm->cws, FALSE);
    update_screen(wm);
    - } else if (ws && ws != wm->cws && GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_URGENT)) {
    + } else if (ws && ws != wm->cws && gnt_widget_get_is_urgent(widget)) {
    if (!act || (act && !g_list_find(act, ws)))
    act = g_list_prepend(act, ws);
    update_act_msg();
    --- a/gntws.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/gntws.c Tue Apr 09 18:56:43 2019 +0000
    @@ -110,7 +110,7 @@
    if (w == ws->ordered->data) {
    /* This is the current window in focus */
    color = GNT_COLOR_TITLE;
    - } else if (GNT_WIDGET_IS_FLAG_SET(w, GNT_WIDGET_URGENT)) {
    + } else if (gnt_widget_get_is_urgent(w)) {
    /* This is a window with the URGENT hint set */
    color = GNT_COLOR_URGENT;
    } else {
    --- a/wms/irssi.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/wms/irssi.c Tue Apr 09 18:56:43 2019 +0000
    @@ -160,7 +160,7 @@
    irssi = GNT_IRSSI_WM(wm);
    name = gnt_widget_get_name(win);
    if (!name || !strstr(name, "conversation-window")) {
    - if (!GNT_IS_MENU(win) && !GNT_WIDGET_IS_FLAG_SET(win, GNT_WIDGET_TRANSIENT)) {
    + if (!GNT_IS_MENU(win) && !gnt_widget_get_transient(win)) {
    if ((!name || strcmp(name, "buddylist"))) {
    gnt_widget_get_size(win, &w, &h);
    x = (getmaxx(stdscr) - w) / 2;
    --- a/wms/s.c Mon Apr 08 23:56:31 2019 -0400
    +++ b/wms/s.c Tue Apr 09 18:56:43 2019 +0000
    @@ -61,7 +61,7 @@
    {
    int w, h;
    - if (GNT_WIDGET_IS_FLAG_SET(win, GNT_WIDGET_NO_BORDER | GNT_WIDGET_TRANSIENT))
    + if (!gnt_widget_get_has_border(win) || gnt_widget_get_transient(win))
    return;
    gnt_widget_get_size(win, &w, &h);
    @@ -121,7 +121,7 @@
    mvwin(win->window, y, x);
    gnt_widget_set_size(win, -1, h + 2); /* XXX: Why is the +2 needed here? -- sadrul */
    - } else if (!GNT_WIDGET_IS_FLAG_SET(win, GNT_WIDGET_TRANSIENT)) {
    + } else if (!gnt_widget_get_transient(win)) {
    const char *title = GNT_BOX(win)->title;
    if (title == NULL || !g_hash_table_lookup(wm->positions, title)) {
    /* In the middle of the screen */
    @@ -163,8 +163,7 @@
    return FALSE;
    /* This might be a place to bring up a context menu */
    - if (event != GNT_LEFT_MOUSE_DOWN ||
    - GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
    + if (event != GNT_LEFT_MOUSE_DOWN || !gnt_widget_get_has_border(widget))
    return FALSE;
    gnt_widget_get_position(widget, &x, &y);