Author: olivier
Date: 2007-10-28 19:29:01 +0000 (Sun, 28 Oct 2007)
New Revision: 26213
Modified:
xfwm4/trunk/src/client.c
xfwm4/trunk/src/startup_notification.c
xfwm4/trunk/src/transients.c
xfwm4/trunk/src/transients.h
Log:
Improve compatibily with libwnck tasklist
Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c 2007-10-28 19:18:22 UTC (rev 26212)
+++ xfwm4/trunk/src/client.c 2007-10-28 19:29:01 UTC (rev 26213)
@@ -2637,11 +2637,13 @@
clientActivate (Client * c, Time timestamp)
{
ScreenInfo *screen_info;
+ Client *sibling;
g_return_if_fail (c != NULL);
TRACE ("entering clientActivate \"%s\" (0x%lx)", c->name, c->window);
screen_info = c->screen_info;
+ sibling = clientGetTransientFor(c);
if ((screen_info->current_ws == c->win_workspace) ||
(screen_info->params->activate_action != ACTIVATE_ACTION_NONE))
{
if (screen_info->current_ws != c->win_workspace)
@@ -2655,10 +2657,10 @@
workspaceSwitch (screen_info, c->win_workspace, NULL, FALSE,
timestamp);
}
}
- clientShow (c, TRUE);
+ clientRaise (sibling, None);
+ clientShow (sibling, TRUE);
clientClearAllShowDesktop (screen_info);
clientSetFocus (screen_info, c, timestamp, NO_FOCUS_FLAG);
- clientRaise (c, None);
}
else
{
Modified: xfwm4/trunk/src/startup_notification.c
===================================================================
--- xfwm4/trunk/src/startup_notification.c 2007-10-28 19:18:22 UTC (rev
26212)
+++ xfwm4/trunk/src/startup_notification.c 2007-10-28 19:29:01 UTC (rev
26213)
@@ -288,7 +288,10 @@
if ((c->user_time == (Time) 0) || TIMESTAMP_IS_BEFORE(c->user_time,
timestamp))
{
c->user_time = timestamp;
- myDisplaySetLastUserTime (screen_info->display_info, c->user_time);
+ if (c->user_time != (Time) 0)
+ {
+ myDisplaySetLastUserTime (screen_info->display_info,
c->user_time);
+ }
}
FLAG_SET (c->flags, CLIENT_FLAG_HAS_STARTUP_TIME);
Modified: xfwm4/trunk/src/transients.c
===================================================================
--- xfwm4/trunk/src/transients.c 2007-10-28 19:18:22 UTC (rev 26212)
+++ xfwm4/trunk/src/transients.c 2007-10-28 19:29:01 UTC (rev 26213)
@@ -293,6 +293,38 @@
return latest_modal;
}
+Client *
+clientGetTransientFor (Client * c)
+{
+ ScreenInfo *screen_info;
+ Client *latest_transient;
+ Client *c2;
+ GList *index;
+
+ g_return_val_if_fail (c != NULL, NULL);
+ TRACE ("entering clientGetTransientFor");
+
+ latest_transient = c;
+ screen_info = c->screen_info;
+ for (index = g_list_last(screen_info->windows_stack); index; index =
g_list_previous (index))
+ {
+ if (!clientIsTransient (latest_transient))
+ {
+ break;
+ }
+ c2 = (Client *) index->data;
+ if (c2)
+ {
+ if (clientIsTransientFor (latest_transient, c2))
+ {
+ latest_transient = c2;
+ }
+ }
+ }
+
+ return latest_transient;
+}
+
/* Build a GList of clients that have a transient relationship */
GList *
clientListTransient (Client * c)
Modified: xfwm4/trunk/src/transients.h
===================================================================
--- xfwm4/trunk/src/transients.h 2007-10-28 19:18:22 UTC (rev 26212)
+++ xfwm4/trunk/src/transients.h 2007-10-28 19:29:01 UTC (rev 26213)
@@ -47,6 +47,7 @@
gboolean clientTransientOrModalHasAncestor (Client *,
int);
Client *clientGetModalFor (Client *);
+Client *clientGetTransientFor (Client *);
GList *clientListTransient (Client *);
GList *clientListTransientOrModal (Client *);
gboolean clientCheckTransientWindow (Client *,
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits