Changeset View
Changeset View
Standalone View
Standalone View
activities.cpp
Show All 13 Lines | |||||
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | GNU General Public License for more details. | 15 | GNU General Public License for more details. | ||
16 | 16 | | |||
17 | You should have received a copy of the GNU General Public License | 17 | You should have received a copy of the GNU General Public License | ||
18 | along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
19 | *********************************************************************/ | 19 | *********************************************************************/ | ||
20 | #include "activities.h" | 20 | #include "activities.h" | ||
21 | // KWin | 21 | // KWin | ||
22 | #include "client.h" | 22 | #include "x11client.h" | ||
23 | #include "workspace.h" | 23 | #include "workspace.h" | ||
24 | // KDE | 24 | // KDE | ||
25 | #include <KConfigGroup> | 25 | #include <KConfigGroup> | ||
26 | #include <kactivities/controller.h> | 26 | #include <kactivities/controller.h> | ||
27 | // Qt | 27 | // Qt | ||
28 | #include <QtConcurrentRun> | 28 | #include <QtConcurrentRun> | ||
29 | #include <QDBusInterface> | 29 | #include <QDBusInterface> | ||
30 | #include <QDBusPendingCall> | 30 | #include <QDBusPendingCall> | ||
Show All 36 Lines | 64 | { | |||
67 | } | 67 | } | ||
68 | m_previous = m_current; | 68 | m_previous = m_current; | ||
69 | m_current = newActivity; | 69 | m_current = newActivity; | ||
70 | emit currentChanged(newActivity); | 70 | emit currentChanged(newActivity); | ||
71 | } | 71 | } | ||
72 | 72 | | |||
73 | void Activities::slotRemoved(const QString &activity) | 73 | void Activities::slotRemoved(const QString &activity) | ||
74 | { | 74 | { | ||
75 | foreach (Client * client, Workspace::self()->clientList()) { | 75 | foreach (X11Client *client, Workspace::self()->clientList()) { | ||
76 | client->setOnActivity(activity, false); | 76 | client->setOnActivity(activity, false); | ||
77 | } | 77 | } | ||
78 | //toss out any session data for it | 78 | //toss out any session data for it | ||
79 | KConfigGroup cg(KSharedConfig::openConfig(), QByteArray("SubSession: ").append(activity.toUtf8()).constData()); | 79 | KConfigGroup cg(KSharedConfig::openConfig(), QByteArray("SubSession: ").append(activity.toUtf8()).constData()); | ||
80 | cg.deleteGroup(); | 80 | cg.deleteGroup(); | ||
81 | } | 81 | } | ||
82 | 82 | | |||
83 | void Activities::toggleClientOnActivity(Client* c, const QString &activity, bool dont_activate) | 83 | void Activities::toggleClientOnActivity(X11Client *c, const QString &activity, bool dont_activate) | ||
84 | { | 84 | { | ||
85 | //int old_desktop = c->desktop(); | 85 | //int old_desktop = c->desktop(); | ||
86 | bool was_on_activity = c->isOnActivity(activity); | 86 | bool was_on_activity = c->isOnActivity(activity); | ||
87 | bool was_on_all = c->isOnAllActivities(); | 87 | bool was_on_all = c->isOnAllActivities(); | ||
88 | //note: all activities === no activities | 88 | //note: all activities === no activities | ||
89 | bool enable = was_on_all || !was_on_activity; | 89 | bool enable = was_on_all || !was_on_activity; | ||
90 | c->setOnActivity(activity, enable); | 90 | c->setOnActivity(activity, enable); | ||
91 | if (c->isOnActivity(activity) == was_on_activity && c->isOnAllActivities() == was_on_all) // No change | 91 | if (c->isOnActivity(activity) == was_on_activity && c->isOnAllActivities() == was_on_all) // No change | ||
Show All 12 Lines | 103 | } else | |||
104 | ws->raiseClient(c); | 104 | ws->raiseClient(c); | ||
105 | 105 | | |||
106 | //notifyWindowDesktopChanged( c, old_desktop ); | 106 | //notifyWindowDesktopChanged( c, old_desktop ); | ||
107 | 107 | | |||
108 | auto transients_stacking_order = ws->ensureStackingOrder(c->transients()); | 108 | auto transients_stacking_order = ws->ensureStackingOrder(c->transients()); | ||
109 | for (auto it = transients_stacking_order.constBegin(); | 109 | for (auto it = transients_stacking_order.constBegin(); | ||
110 | it != transients_stacking_order.constEnd(); | 110 | it != transients_stacking_order.constEnd(); | ||
111 | ++it) { | 111 | ++it) { | ||
112 | Client *c = dynamic_cast<Client *>(*it); | 112 | X11Client *c = dynamic_cast<X11Client *>(*it); | ||
113 | if (!c) { | 113 | if (!c) { | ||
114 | continue; | 114 | continue; | ||
115 | } | 115 | } | ||
116 | toggleClientOnActivity(c, activity, dont_activate); | 116 | toggleClientOnActivity(c, activity, dont_activate); | ||
117 | } | 117 | } | ||
118 | ws->updateClientArea(); | 118 | ws->updateClientArea(); | ||
119 | } | 119 | } | ||
120 | 120 | | |||
Show All 40 Lines | 160 | if (ws->sessionSaving()) | |||
161 | return; //ksmserver doesn't queue requests (yet) | 161 | return; //ksmserver doesn't queue requests (yet) | ||
162 | 162 | | |||
163 | qCDebug(KWIN_CORE) << id; | 163 | qCDebug(KWIN_CORE) << id; | ||
164 | 164 | | |||
165 | QSet<QByteArray> saveSessionIds; | 165 | QSet<QByteArray> saveSessionIds; | ||
166 | QSet<QByteArray> dontCloseSessionIds; | 166 | QSet<QByteArray> dontCloseSessionIds; | ||
167 | const ClientList &clients = ws->clientList(); | 167 | const ClientList &clients = ws->clientList(); | ||
168 | for (ClientList::const_iterator it = clients.constBegin(); it != clients.constEnd(); ++it) { | 168 | for (ClientList::const_iterator it = clients.constBegin(); it != clients.constEnd(); ++it) { | ||
169 | const Client* c = (*it); | 169 | const X11Client *c = (*it); | ||
170 | const QByteArray sessionId = c->sessionId(); | 170 | const QByteArray sessionId = c->sessionId(); | ||
171 | if (sessionId.isEmpty()) { | 171 | if (sessionId.isEmpty()) { | ||
172 | continue; //TODO support old wm_command apps too? | 172 | continue; //TODO support old wm_command apps too? | ||
173 | } | 173 | } | ||
174 | 174 | | |||
175 | //qDebug() << sessionId; | 175 | //qDebug() << sessionId; | ||
176 | 176 | | |||
177 | //if it's on the activity that's closing, it needs saving | 177 | //if it's on the activity that's closing, it needs saving | ||
▲ Show 20 Lines • Show All 41 Lines • Show Last 20 Lines |