Updating branch refs/heads/master to 79a2fd6c65a5879ed25d76fe9dccb2757505ba58 (commit) from c5dbd50e209fe008c88eb7f7de0717c06f04f8ca (commit)
commit 79a2fd6c65a5879ed25d76fe9dccb2757505ba58 Author: Valentin Dudouyt <valentin.dudo...@gmail.com> Date: Sun Dec 2 15:01:42 2012 +0700 Raise the only last activated instance on <Super>+<n> taskbar-widget.c | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) diff --git a/taskbar-widget.c b/taskbar-widget.c index 20a7ddc..bde51f0 100644 --- a/taskbar-widget.c +++ b/taskbar-widget.c @@ -185,6 +185,8 @@ struct _XfceTaskBarWNode XfceTaskBarGroup *group ; gboolean visible ; + /* last activated */ + guint64 timestamp; }; struct _XfceTaskBarGroup @@ -1033,6 +1035,7 @@ static void xfce_taskbar_active_window_changed (WnckScreen *screen, WnckWindow * if(wnode->window == active_window) { iconActive = TRUE ; + wnode->timestamp = g_get_real_time(); break ; } } @@ -1752,8 +1755,18 @@ void xfce_taskbar_selgrp_cmd(XfceTaskBar *taskbar, char id) { return; XfceTaskBarWNode *first = g_slist_nth_data(group->wnodes, 0); if(!first) { + // No instances are running xfce_taskbar_group_button_launch_pinned(group); - } else if (!wnck_window_is_active(first->window)) { + return; + } + // Trying to find an instance with greater timestamp + GSList *wi ; + for(wi=group->wnodes; wi != NULL; wi=wi->next) { + XfceTaskBarWNode *wnode = wi->data; + if(wnode->timestamp > first->timestamp) + first = wnode; + } + if (!wnck_window_is_active(first->window)) { xfce_taskbar_button_activate(first, 0); } } @@ -1940,6 +1953,7 @@ static XfceTaskBarWNode * xfce_taskbar_wnode_new (WnckWindow *window, XfceTaskBa wnode->window = window; wnode->group_name = g_strdup(wnck_application_get_name(wnck_window_get_application (window))); wnode->visible = xfce_taskbar_button_visible(wnode, active_ws); + wnode->timestamp = g_get_real_time(); // monitor window changes g_signal_connect (G_OBJECT (window), "icon-changed", G_CALLBACK (xfce_taskbar_button_icon_changed), wnode); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits