From: Martin Dietze Date: Mon, 24 Aug 2009 19:40:47 +0000 (+0200) Subject: Do not switch workspace to follow new windows in others X-Git-Tag: wmaker-0.94.0-crm~112 X-Git-Url: https://repo.or.cz/w/wmaker-crm.git/commitdiff_plain/d6c134f420bfa1cd6b6a9474d01548933b559901?hp=442e3876c6e5a78c6ed385ec204647553f45c168 Do not switch workspace to follow new windows in others New windows should only be focused if they are in the current workspace. Not performing this check can lead to WM switching workspaces if a window is opened which: (a) is configured to appear in a particular workspace and (b) sends a _NET_ACTIVE_WINDOW message to give focus to something, e.g. a sub window. This behaviour was observed with firefox if a session with more than one tab open was restored at startup because: "If a Client wants to activate another window, it MUST send a _NET_ACTIVE_WINDOW client message to the root window:" Original-post: http://lists.windowmaker.info/dev/msg00442.html [crmafra: Added comment] --- diff --git a/src/wmspec.c b/src/wmspec.c index 87c0a191..b24cde20 100644 --- a/src/wmspec.c +++ b/src/wmspec.c @@ -1446,7 +1446,13 @@ Bool wNETWMProcessClientMessage(XClientMessageEvent * event) if (!wwin) return False; - if (event->message_type == net_active_window) { + /* + * Firefox with multiple tabs sends aditional 'net_active_window' + * signals on startup, which causes unnecessary workspace switching + * if its initial workspace is different from the current + */ + if (event->message_type == net_active_window && + wwin->frame->workspace == wwin->screen_ptr->current_workspace) { wNETWMShowingDesktop(scr, False); wMakeWindowVisible(wwin); } else if (event->message_type == net_close_window) {