Changeset View
Changeset View
Standalone View
Standalone View
scripts/minimizeall/contents/code/main.js
Show All 20 Lines | |||||
21 | var registeredBorders = []; | 21 | var registeredBorders = []; | ||
22 | 22 | | |||
23 | function isRelevant(client) { | 23 | function isRelevant(client) { | ||
24 | return client.minimizable && | 24 | return client.minimizable && | ||
25 | (client.onAllDesktops || client.desktop === workspace.currentDesktop); | 25 | (client.onAllDesktops || client.desktop === workspace.currentDesktop); | ||
26 | (!client.activities.length || client.activities.indexOf(workspace.currentActivity.toString()) > -1); | 26 | (!client.activities.length || client.activities.indexOf(workspace.currentActivity.toString()) > -1); | ||
27 | } | 27 | } | ||
28 | 28 | | |||
29 | var minimizeAllWindows = function() { | 29 | function minimizeAllWindows() { | ||
30 | var allClients = workspace.clientList(); | 30 | var allClients = workspace.clientList(); | ||
31 | var clients = []; | 31 | var relevantClients = []; | ||
32 | var minimize = false; | 32 | var minimize = false; | ||
33 | | ||||
33 | for (var i = 0; i < allClients.length; ++i) { | 34 | for (var i = 0; i < allClients.length; ++i) { | ||
34 | if (isRelevant(allClients[i])) { | 35 | if (!isRelevant(allClients[i])) { | ||
35 | clients.push(allClients[i]); | 36 | continue; | ||
36 | if (!allClients[i].minimized && allClients[i].minimizedForMinimizeAll !== true) { | 37 | } | ||
38 | if (!allClients[i].minimized) { | ||||
37 | minimize = true; | 39 | minimize = true; | ||
38 | } | 40 | } | ||
41 | relevantClients.push(allClients[i]); | ||||
39 | } | 42 | } | ||
43 | | ||||
44 | for (var i = 0; i < relevantClients.length; ++i) { | ||||
45 | var wasMinimizedByScript = relevantClients[i].minimizedByScript; | ||||
46 | delete relevantClients[i].minimizedByScript; | ||||
47 | | ||||
48 | if (minimize) { | ||||
49 | if (relevantClients[i].minimized) { | ||||
50 | continue; | ||||
40 | } | 51 | } | ||
41 | for (var i = 0; i < clients.length; ++i) { | 52 | relevantClients[i].minimized = true; | ||
42 | if ((minimize == clients[i].minimized) || // no change required at all | 53 | relevantClients[i].minimizedByScript = true; | ||
43 | (!minimize && clients[i].minimizedForMinimizeAll !== true)) { // unminimize, but not this one | 54 | } else { | ||
44 | delete clients[i].minimizedForMinimizeAll; | 55 | if (!wasMinimizedByScript) { | ||
45 | continue; | 56 | continue; | ||
46 | } | 57 | } | ||
47 | clients[i].minimized = minimize; | 58 | relevantClients[i].minimized = false; | ||
48 | clients[i].minimizedForMinimizeAll = minimize; | 59 | } | ||
49 | } | 60 | } | ||
50 | clients = []; | | |||
51 | } | 61 | } | ||
52 | 62 | | |||
53 | function init() { | 63 | function init() { | ||
54 | for (var i in registeredBorders) { | 64 | for (var i in registeredBorders) { | ||
55 | unregisterScreenEdge(registeredBorders[i]); | 65 | unregisterScreenEdge(registeredBorders[i]); | ||
56 | } | 66 | } | ||
57 | 67 | | |||
58 | registeredBorders = []; | 68 | registeredBorders = []; | ||
Show All 15 Lines |