Hello,
I'm not sure that this is the best way to go about fixing the
onCurrentDesktop update. This fixes the tasks data engine but
libtaskmanager is still broken...
I have attached a patch that fixes the problem in libtaskmanager and
makes this commit (897412) no longer necessary. I'd like to ask those
more familiar with libtaskmanager if my changes make sense.
Also, there is still a minor problem with some of the calls to
Task::refresh() being munged by d->lastUpdate in libs/taskmanager/task.cpp.
Alain.
Thomas Schildknecht wrote:
SVN commit 897412 by tschildknecht:
Fix the onCurrentDesktop update
M +16 -0 tasksengine.cpp
M +1 -0 tasksengine.h
--- trunk/KDE/kdebase/workspace/plasma/dataengines/tasks/tasksengine.cpp
#897411:897412
@@ -68,6 +68,7 @@
connect(TaskManager::TaskManager::self(),
SIGNAL(startupRemoved(StartupPtr)), this, SLOT(startupRemoved(StartupPtr)));
connect(TaskManager::TaskManager::self(), SIGNAL(taskAdded(TaskPtr)),
this, SLOT(taskAdded(TaskPtr)));
connect(TaskManager::TaskManager::self(), SIGNAL(taskRemoved(TaskPtr)),
this, SLOT(taskRemoved(TaskPtr)));
+ connect(TaskManager::TaskManager::self(), SIGNAL(desktopChanged(int)),
this, SLOT(desktopChanged(int)));
}
void TasksEngine::startupAdded(StartupPtr startup)
@@ -94,6 +95,21 @@
removeSource(getTaskName(task));
}
+void TasksEngine::desktopChanged(int desktop)
+{
+ Q_UNUSED(desktop);
+ QHashIterator <QString, Plasma::DataContainer*> it(containerDict());
+
+ while (it.hasNext()) {
+ TaskSource *source = static_cast<TaskSource*>(it.next().value());
+ bool onCurrent = source->m_task->isOnCurrentDesktop();
+ if (source->data()["onCurrentDesktop"].toBool() != onCurrent) {
+ source->setData("onCurrentDesktop", onCurrent);
+ }
+ source->checkForUpdate();
+ }
+}
+
void TasksEngine::addStartup(StartupPtr startup)
{
TaskSource *taskSource = new TaskSource(startup, this);
--- trunk/KDE/kdebase/workspace/plasma/dataengines/tasks/tasksengine.h
#897411:897412
@@ -62,6 +62,7 @@
void startupRemoved(StartupPtr startup);
void taskAdded(TaskPtr task);
void taskRemoved(TaskPtr task);
+ void desktopChanged(int desktop);
private:
friend class TaskSource;
Index: libs/taskmanager/taskmanager.cpp
===================================================================
--- libs/taskmanager/taskmanager.cpp (revision 898139)
+++ libs/taskmanager/taskmanager.cpp (working copy)
@@ -370,6 +370,12 @@
void TaskManager::currentDesktopChanged(int desktop)
{
+ QHashIterator<WId, TaskPtr> it(d->tasksByWId);
+ while (it.hasNext()) {
+ TaskPtr t = static_cast<TaskPtr>(it.next().value());
+ t->refresh(NET::WMDesktop);
+ }
+
emit desktopChanged(desktop);
}
Index: plasma/dataengines/tasks/tasksengine.h
===================================================================
--- plasma/dataengines/tasks/tasksengine.h (revision 898139)
+++ plasma/dataengines/tasks/tasksengine.h (working copy)
@@ -62,7 +62,6 @@
void startupRemoved(StartupPtr startup);
void taskAdded(TaskPtr task);
void taskRemoved(TaskPtr task);
- void desktopChanged(int desktop);
private:
friend class TaskSource;
Index: plasma/dataengines/tasks/tasksengine.cpp
===================================================================
--- plasma/dataengines/tasks/tasksengine.cpp (revision 898139)
+++ plasma/dataengines/tasks/tasksengine.cpp (working copy)
@@ -68,7 +68,6 @@
connect(TaskManager::TaskManager::self(), SIGNAL(startupRemoved(StartupPtr)), this, SLOT(startupRemoved(StartupPtr)));
connect(TaskManager::TaskManager::self(), SIGNAL(taskAdded(TaskPtr)), this, SLOT(taskAdded(TaskPtr)));
connect(TaskManager::TaskManager::self(), SIGNAL(taskRemoved(TaskPtr)), this, SLOT(taskRemoved(TaskPtr)));
- connect(TaskManager::TaskManager::self(), SIGNAL(desktopChanged(int)), this, SLOT(desktopChanged(int)));
}
void TasksEngine::startupAdded(StartupPtr startup)
@@ -95,21 +94,6 @@
removeSource(getTaskName(task));
}
-void TasksEngine::desktopChanged(int desktop)
-{
- Q_UNUSED(desktop);
- QHashIterator <QString, Plasma::DataContainer*> it(containerDict());
-
- while (it.hasNext()) {
- TaskSource *source = static_cast<TaskSource*>(it.next().value());
- bool onCurrent = source->m_task->isOnCurrentDesktop();
- if (source->data()["onCurrentDesktop"].toBool() != onCurrent) {
- source->setData("onCurrentDesktop", onCurrent);
- source->checkForUpdate();
- }
- }
-}
-
void TasksEngine::addStartup(StartupPtr startup)
{
TaskSource *taskSource = new TaskSource(startup, this);
_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel