--- a/gntwm.c Fri May 03 02:48:52 2019 +0000
+++ b/gntwm.c Fri May 03 03:10:06 2019 +0000
@@ -67,6 +67,15 @@
#define IDLE_CHECK_INTERVAL 5 /* 5 seconds */
+ GList *tagged; /* tagged windows */ + GntListWindow *windows; /* Window-list window */ + GntListWindow *actions; /* Action-list window */ @@ -109,7 +118,7 @@
static gboolean started_python = FALSE;
-G_DEFINE_TYPE(GntWM, gnt_wm, GNT_TYPE_BINDABLE)
+G_DEFINE_TYPE_WITH_PRIVATE(GntWM, gnt_wm, GNT_TYPE_BINDABLE) @@ -387,20 +396,18 @@
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); wm->name_places = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
wm->title_places = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
gnt_style_read_workspaces(wm);
- if (wm->workspaces == NULL) {
+ if (priv->workspaces == NULL) { wm->cws = gnt_ws_new("default");
gnt_wm_add_workspace(wm, wm->cws);
- wm->cws = wm->workspaces->data;
+ wm->cws = priv->workspaces->data;
wm->nodes = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, free_node);
wm->positions = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
if (gnt_style_get_bool(GNT_STYLE_REMPOS, TRUE))
@@ -558,10 +565,11 @@
destroy__list(G_GNUC_UNUSED GntWidget *widget, GntWM *wm)
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm);
@@ -584,6 +592,7 @@
window_list_activate(GntTree *tree, GntWM *wm)
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); GntBindable *sel = gnt_tree_get_selection_data(GNT_TREE(tree));
gnt_widget_destroy(wm->_list.window);
@@ -592,7 +601,8 @@
- gnt_wm_switch_workspace(wm, g_list_index(wm->workspaces, sel));
+ gnt_wm_switch_workspace(wm, + g_list_index(priv->workspaces, sel)); gnt_wm_raise_window(wm, GNT_WIDGET(sel));
@@ -601,8 +611,9 @@
populate_window_list(GntWM *wm, gboolean workspace)
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); - GntTree *tree = GNT_TREE(wm->windows->tree);
+ GntTree *tree = GNT_TREE(priv->windows->tree); for (iter = gnt_ws_get_list(wm->cws); iter; iter = iter->next) {
GntBox *box = GNT_BOX(iter->data);
@@ -615,7 +626,7 @@
update_window_in_list(wm, GNT_WIDGET(box));
- GList *ws = wm->workspaces;
+ GList *ws = priv->workspaces; for (; ws; ws = ws->next) {
gnt_tree_add_row_last(tree, ws->data,
gnt_tree_create_row(tree, gnt_ws_get_name(GNT_WS(ws->data))), NULL);
@@ -668,12 +679,13 @@
list_of_windows(GntWM *wm, gboolean workspace)
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); - wm->windows = &wm->_list;
+ priv->windows = &wm->_list; - win = wm->windows->window;
- tree = wm->windows->tree;
+ win = priv->windows->window; + tree = priv->windows->tree; gnt_box_set_title(GNT_BOX(win), workspace ? "Workspace List" : "Window List");
@@ -967,6 +979,7 @@
GntWM *wm = GNT_WM(bindable);
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); if (wm->_list.window || wm->menu)
@@ -975,10 +988,10 @@
- wm->actions = &wm->_list;
+ priv->actions = &wm->_list; - win = wm->actions->window;
- tree = wm->actions->tree;
+ win = priv->actions->window; + tree = priv->actions->tree; gnt_box_set_title(GNT_BOX(win), "Actions");
gnt_widget_set_has_border(tree, FALSE);
@@ -1194,6 +1207,7 @@
tag_widget(GntBindable *b, G_GNUC_UNUSED GList *params)
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); @@ -1202,14 +1216,14 @@
widget = gnt_ws_get_top_widget(wm->cws);
- link = g_list_find(wm->tagged, widget);
+ link = g_list_find(priv->tagged, widget); - wm->tagged = g_list_delete_link(wm->tagged, link);
+ priv->tagged = g_list_delete_link(priv->tagged, link); - wm->tagged = g_list_prepend(wm->tagged, widget);
+ priv->tagged = g_list_prepend(priv->tagged, widget); wbkgdset(gnt_widget_get_window(widget),
' ' | gnt_color_pair(GNT_COLOR_HIGHLIGHT));
mvwprintw(gnt_widget_get_window(widget), 0, 1, "[T]");
@@ -1221,15 +1235,16 @@
place_tagged(GntBindable *b, G_GNUC_UNUSED GList *params)
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); - for (iter = wm->tagged; iter; iter = g_list_delete_link(iter, iter)) {
+ for (iter = priv->tagged; iter; iter = g_list_delete_link(iter, iter)) { GntWidget *widget = GNT_WIDGET(iter->data);
gnt_wm_widget_move_workspace(wm, wm->cws, widget);
@@ -1250,9 +1265,10 @@
workspace_new(GntBindable *bindable, G_GNUC_UNUSED GList *params)
GntWM *wm = GNT_WM(bindable);
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); GntWS *ws = gnt_ws_new(NULL);
gnt_wm_add_workspace(wm, ws);
- gnt_wm_switch_workspace(wm, g_list_index(wm->workspaces, ws));
+ gnt_wm_switch_workspace(wm, g_list_index(priv->workspaces, ws)); @@ -1405,14 +1421,17 @@
gnt_wm_destroy(GObject *obj)
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); g_hash_table_foreach(wm->nodes, (GHFunc)accumulate_windows, &list);
g_list_free_full(list, (GDestroyNotify)gnt_widget_destroy);
g_hash_table_destroy(wm->nodes);
- g_list_free_full(wm->workspaces, g_object_unref);
+ g_list_free_full(priv->workspaces, g_object_unref); + priv->workspaces = NULL; @@ -1615,13 +1634,25 @@
gnt_wm_add_workspace(GntWM *wm, GntWS *ws)
- wm->workspaces = g_list_append(wm->workspaces, ws);
+ GntWMPrivate *priv = NULL; + g_return_if_fail(GNT_IS_WM(wm)); + g_return_if_fail(GNT_IS_WS(ws)); + priv = gnt_wm_get_instance_private(wm); + priv->workspaces = g_list_append(priv->workspaces, ws); gnt_wm_switch_workspace(GntWM *wm, gint n)
- GntWS *s = g_list_nth_data(wm->workspaces, n);
+ GntWMPrivate *priv = NULL; + g_return_val_if_fail(GNT_IS_WM(wm), FALSE); + priv = gnt_wm_get_instance_private(wm); + s = g_list_nth_data(priv->workspaces, n); @@ -1649,14 +1680,26 @@
gnt_wm_switch_workspace_prev(GntWM *wm)
- int n = g_list_index(wm->workspaces, wm->cws);
+ GntWMPrivate *priv = NULL; + g_return_val_if_fail(GNT_IS_WM(wm), FALSE); + priv = gnt_wm_get_instance_private(wm); + n = g_list_index(priv->workspaces, wm->cws); return gnt_wm_switch_workspace(wm, --n);
gnt_wm_switch_workspace_next(GntWM *wm)
- int n = g_list_index(wm->workspaces, wm->cws);
+ GntWMPrivate *priv = NULL; + g_return_val_if_fail(GNT_IS_WM(wm), FALSE); + priv = gnt_wm_get_instance_private(wm); + n = g_list_index(priv->workspaces, wm->cws); return gnt_wm_switch_workspace(wm, ++n);
@@ -1707,7 +1750,13 @@
GntWS *gnt_wm_widget_find_workspace(GntWM *wm, GntWidget *widget)
- GList *l = g_list_find_custom(wm->workspaces, widget, widget_in_workspace);
+ GntWMPrivate *priv = NULL; + g_return_val_if_fail(GNT_IS_WM(wm), NULL); + priv = gnt_wm_get_instance_private(wm); + l = g_list_find_custom(priv->workspaces, widget, widget_in_workspace); @@ -1715,17 +1764,24 @@
void gnt_wm_set_workspaces(GntWM *wm, GList *workspaces)
- wm->workspaces = workspaces;
+ GntWMPrivate *priv = NULL; + g_return_if_fail(GNT_IS_WM(wm)); + priv = gnt_wm_get_instance_private(wm); + priv->workspaces = workspaces; gnt_wm_switch_workspace(wm, 0);
update_window_in_list(GntWM *wm, GntWidget *wid)
+ GntWMPrivate *priv = gnt_wm_get_instance_private(wm); GntTextFormatFlags flag = 0;
- if (wm->windows == NULL)
+ if (priv->windows == NULL) { if (gnt_ws_is_top_widget(wm->cws, wid)) {
flag |= GNT_TEXT_FLAG_DIM;
@@ -1733,7 +1789,7 @@
flag |= GNT_TEXT_FLAG_BOLD;
- gnt_tree_set_row_flags(GNT_TREE(wm->windows->tree), wid, flag);
+ gnt_tree_set_row_flags(GNT_TREE(priv->windows->tree), wid, flag); @@ -1838,6 +1894,11 @@
void gnt_wm_new_window(GntWM *wm, GntWidget *widget)
+ GntWMPrivate *priv = NULL; + g_return_if_fail(GNT_IS_WM(wm)); + priv = gnt_wm_get_instance_private(wm); widget = gnt_widget_get_toplevel(widget);
if (!gnt_widget_get_visible(widget) ||
@@ -1859,17 +1920,17 @@
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_get_transient(widget)) {
+ if (priv->windows && !gnt_widget_get_transient(widget)) { if ((GNT_IS_BOX(widget) &&
gnt_box_get_title(GNT_BOX(widget))) &&
wm->_list.window != widget &&
gnt_widget_get_take_focus(widget)) {
- GNT_TREE(wm->windows->tree), widget,
+ GNT_TREE(priv->windows->tree), widget, - GNT_TREE(wm->windows->tree),
+ GNT_TREE(priv->windows->tree), gnt_box_get_title(GNT_BOX(widget))),
- g_object_get_data(G_OBJECT(wm->windows->tree),
+ g_object_get_data(G_OBJECT(priv->windows->tree), @@ -1888,9 +1949,15 @@
void gnt_wm_window_close(GntWM *wm, GntWidget *widget)
+ GntWMPrivate *priv = NULL; - gboolean transient = gnt_widget_get_transient(widget);
+ g_return_if_fail(GNT_IS_WM(wm)); + priv = gnt_wm_get_instance_private(wm); + transient = gnt_widget_get_transient(widget); s = gnt_wm_widget_find_workspace(wm, widget);
@@ -1900,8 +1967,8 @@
g_signal_emit(wm, signals[SIG_CLOSE_WIN], 0, widget);
g_hash_table_remove(wm->nodes, widget);
- gnt_tree_remove(GNT_TREE(wm->windows->tree), widget);
+ gnt_tree_remove(GNT_TREE(priv->windows->tree), widget); @@ -2228,12 +2295,16 @@
void gnt_wm_raise_window(GntWM *wm, GntWidget *widget)
- GntWS *ws = gnt_wm_widget_find_workspace(wm, widget);
+ GntWMPrivate *priv = NULL; - g_return_if_fail(wm != NULL);
+ g_return_if_fail(GNT_IS_WM(wm)); + priv = gnt_wm_get_instance_private(wm); + ws = gnt_wm_widget_find_workspace(wm, widget); - gnt_wm_switch_workspace(wm, g_list_index(wm->workspaces, ws));
+ gnt_wm_switch_workspace(wm, g_list_index(priv->workspaces, ws)); g_return_if_fail(wm->cws != NULL);