summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark McLoughlin <mark@skynet.ie>2004-09-21 14:51:11 +0000
committerMark McLoughlin <markmc@src.gnome.org>2004-09-21 14:51:11 +0000
commit32d0ab91654e39e53da0fe51b3e6bfe3a04ea3f7 (patch)
tree7e531be3f3207c8e357c7ec99490e41b39d5739d
parent43305237fd37039d667f42347a74e4bfb7aac31c (diff)
downloadlibwnck-32d0ab91654e39e53da0fe51b3e6bfe3a04ea3f7.tar.gz
Fix some runtime warning spew reported in bug #149313
2004-09-21 Mark McLoughlin <mark@skynet.ie> Fix some runtime warning spew reported in bug #149313 * libwnck/tasklist.c: (wnck_task_get_demands_attention): impl. handling task groups as well as individual tasks. (wnck_task_update_visible_state), (wnck_task_create_widgets): use get_demands_attention() * libwnck/window.[ch]: (update_actions): handle the minimize and fullscreen actions.
-rw-r--r--ChangeLog13
-rw-r--r--libwnck/tasklist.c44
-rw-r--r--libwnck/window.c16
-rw-r--r--libwnck/window.h3
4 files changed, 65 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 30a7655..178bcae 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2004-09-21 Mark McLoughlin <mark@skynet.ie>
+
+ Fix some runtime warning spew reported in bug #149313
+
+ * libwnck/tasklist.c:
+ (wnck_task_get_demands_attention): impl. handling task
+ groups as well as individual tasks.
+ (wnck_task_update_visible_state),
+ (wnck_task_create_widgets): use get_demands_attention()
+
+ * libwnck/window.[ch]: (update_actions): handle the minimize
+ and fullscreen actions.
+
2004-09-21 Ross Burton <ross@burtonini.com>
* libwnck/window.h: Add prototypes for wnck_window_set_fullscreen
diff --git a/libwnck/tasklist.c b/libwnck/tasklist.c
index 37a3c51..7f03f9e 100644
--- a/libwnck/tasklist.c
+++ b/libwnck/tasklist.c
@@ -2234,6 +2234,44 @@ wnck_task_get_icon (WnckTask *task)
return pixbuf;
}
+static gboolean
+wnck_task_get_demands_attention (WnckTask *task)
+{
+ GList *l;
+ WnckTask *win_task;
+ gboolean demands_attention;
+
+ demands_attention = FALSE;
+
+ switch (task->type)
+ {
+ case WNCK_TASK_CLASS_GROUP:
+ l = task->windows;
+ while (l)
+ {
+ win_task = WNCK_TASK (l->data);
+
+ if (wnck_window_get_state (win_task->window) & WNCK_WINDOW_STATE_DEMANDS_ATTENTION)
+ {
+ demands_attention = TRUE;
+ break;
+ }
+
+ l = l->next;
+ }
+ break;
+
+ case WNCK_TASK_WINDOW:
+ demands_attention =
+ wnck_window_get_state (task->window) & WNCK_WINDOW_STATE_DEMANDS_ATTENTION;
+ break;
+
+ case WNCK_TASK_STARTUP_SEQUENCE:
+ break;
+ }
+
+ return demands_attention != FALSE;
+}
static void
wnck_task_update_visible_state (WnckTask *task)
@@ -2251,8 +2289,7 @@ wnck_task_update_visible_state (WnckTask *task)
if (text != NULL)
{
gtk_label_set_text (GTK_LABEL (task->label), text);
- if (wnck_window_get_state (task->window) &
- WNCK_WINDOW_STATE_DEMANDS_ATTENTION)
+ if (wnck_task_get_demands_attention (task))
eel_gtk_label_make_bold ((GTK_LABEL (task->label)));
else
wnck_gtk_label_make_normal ((GTK_LABEL (task->label)));
@@ -2491,8 +2528,7 @@ wnck_task_create_widgets (WnckTask *task)
text = wnck_task_get_text (task);
task->label = gtk_label_new (text);
- if (wnck_window_get_state (task->window) &
- WNCK_WINDOW_STATE_DEMANDS_ATTENTION)
+ if (wnck_task_get_demands_attention (task))
eel_gtk_label_make_bold ((GTK_LABEL (task->label)));
gtk_widget_show (task->label);
diff --git a/libwnck/window.c b/libwnck/window.c
index 3cce520..02fb59a 100644
--- a/libwnck/window.c
+++ b/libwnck/window.c
@@ -1795,7 +1795,8 @@ update_actions (WnckWindow *window)
WNCK_WINDOW_ACTION_MAXIMIZE |
WNCK_WINDOW_ACTION_UNMAXIMIZE |
WNCK_WINDOW_ACTION_MINIMIZE |
- WNCK_WINDOW_ACTION_UNMINIMIZE;
+ WNCK_WINDOW_ACTION_UNMINIMIZE |
+ WNCK_WINDOW_ACTION_FULLSCREEN;
return;
}
@@ -1816,6 +1817,10 @@ update_actions (WnckWindow *window)
window->priv->actions |= WNCK_WINDOW_ACTION_STICK |
WNCK_WINDOW_ACTION_UNSTICK;
+ else if (atoms[i] == _wnck_atom_get ("_NET_WM_ACTION_MINIMIZE"))
+ window->priv->actions |= WNCK_WINDOW_ACTION_MINIMIZE |
+ WNCK_WINDOW_ACTION_UNMINIMIZE;
+
else if (atoms[i] == _wnck_atom_get ("_NET_WM_ACTION_MAXIMIZE_HORZ"))
window->priv->actions |= WNCK_WINDOW_ACTION_MAXIMIZE_HORIZONTALLY |
WNCK_WINDOW_ACTION_UNMAXIMIZE_HORIZONTALLY;
@@ -1829,6 +1834,10 @@ update_actions (WnckWindow *window)
else if (atoms[i] == _wnck_atom_get ("_NET_WM_ACTION_CLOSE"))
window->priv->actions |= WNCK_WINDOW_ACTION_CLOSE;
+
+ else if (atoms[i] == _wnck_atom_get ("_NET_WM_ACTION_FULLSCREEN"))
+ window->priv->actions |= WNCK_WINDOW_ACTION_FULLSCREEN;
+
else
{
const char *name = _wnck_atom_name (atoms [i]);
@@ -1845,11 +1854,6 @@ update_actions (WnckWindow *window)
window->priv->actions |=
WNCK_WINDOW_ACTION_MAXIMIZE |
WNCK_WINDOW_ACTION_UNMAXIMIZE;
-
- /* These are always enabled */
- window->priv->actions |=
- WNCK_WINDOW_ACTION_MINIMIZE |
- WNCK_WINDOW_ACTION_UNMINIMIZE;
}
static void
diff --git a/libwnck/window.h b/libwnck/window.h
index 8ef6c88..6e960f7 100644
--- a/libwnck/window.h
+++ b/libwnck/window.h
@@ -63,7 +63,8 @@ typedef enum
WNCK_WINDOW_ACTION_MINIMIZE = 1 << 12,
WNCK_WINDOW_ACTION_UNMINIMIZE = 1 << 13,
WNCK_WINDOW_ACTION_MAXIMIZE = 1 << 14,
- WNCK_WINDOW_ACTION_UNMAXIMIZE = 1 << 15
+ WNCK_WINDOW_ACTION_UNMAXIMIZE = 1 << 15,
+ WNCK_WINDOW_ACTION_FULLSCREEN = 1 << 16
} WnckWindowActions;
typedef enum