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

Reply via email to