[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/desktop/applets/pager
From:       Chani Armitage <chanika () gmail ! com>
Date:       2010-11-11 15:00:16
Message-ID: 20101111150016.C388EAC89E () svn ! kde ! org
[Download RAW message or body]

SVN commit 1195583 by chani:

only show current activity's windows

 M  +2 -0      CMakeLists.txt  
 M  +29 -4     pager.cpp  
 M  +3 -1      pager.h  


--- trunk/KDE/kdebase/workspace/plasma/desktop/applets/pager/CMakeLists.txt \
#1195582:1195583 @@ -2,6 +2,7 @@
 
 include_directories(
     ${KDEBASE_WORKSPACE_SOURCE_DIR}/libs/kephal)
+include_directories(${KDEBASE_WORKSPACE_SOURCE_DIR}/libs/kworkspace)
 
 set(pager_SRCS
     pager.cpp)
@@ -9,6 +10,7 @@
 kde4_add_ui_files(pager_SRCS pagerConfig.ui )
 kde4_add_plugin(plasma_applet_pager ${pager_SRCS})
 target_link_libraries(plasma_applet_pager ${KDE4_KIO_LIBS} ${KDE4_PLASMA_LIBS} \
${KDE4_KCMUTILS_LIBRARY} kephal taskmanager) \
+target_link_libraries(plasma_applet_pager kworkspace)  
 install(TARGETS plasma_applet_pager DESTINATION ${PLUGIN_INSTALL_DIR})
 install(FILES plasma-pager-default.desktop DESTINATION ${SERVICES_INSTALL_DIR})
--- trunk/KDE/kdebase/workspace/plasma/desktop/applets/pager/pager.cpp \
#1195582:1195583 @@ -49,6 +49,7 @@
 #include <Plasma/Animator>
 
 #include <kephal/screens.h>
+#include <kactivityconsumer.h>
 
 #include <taskmanager/task.h>
 
@@ -150,7 +151,7 @@
     connect(KWindowSystem::self(), SIGNAL(numberOfDesktopsChanged(int)), this, \
                SLOT(numberOfDesktopsChanged(int)));
     connect(KWindowSystem::self(), SIGNAL(desktopNamesChanged()), this, \
                SLOT(desktopNamesChanged()));
     connect(KWindowSystem::self(), SIGNAL(stackingOrderChanged()), this, \
                SLOT(stackingOrderChanged()));
-    connect(KWindowSystem::self(), SIGNAL(windowChanged(WId,unsigned int)), this, \
SLOT(windowChanged(WId,unsigned int))); +    connect(KWindowSystem::self(), \
SIGNAL(windowChanged(WId,unsigned long*)), this, SLOT(windowChanged(WId,unsigned \
                long*)));
     connect(KWindowSystem::self(), SIGNAL(showingDesktopChanged(bool)), this, \
                SLOT(showingDesktopChanged(bool)));
     connect(Kephal::Screens::self(), SIGNAL(screenAdded(Kephal::Screen *)), \
                SLOT(desktopsSizeChanged()));
     connect(Kephal::Screens::self(), SIGNAL(screenRemoved(int)), \
SLOT(desktopsSizeChanged())); @@ -168,6 +169,10 @@
     recalculateGridSizes(m_rows);
 
     m_currentDesktop = KWindowSystem::currentDesktop();
+
+    KActivityConsumer *act = new KActivityConsumer(this);
+    connect(act, SIGNAL(currentActivityChanged(QString)), this, \
SLOT(currentActivityChanged(QString))); +    m_currentActivity = \
act->currentActivity();  }
 
 void Pager::configChanged()
@@ -574,6 +579,17 @@
             continue;
         }
 
+        //check activity
+        unsigned long properties[] = { 0, NET::WM2Activities };
+        NETWinInfo netInfo(QX11Info::display(), window, QX11Info::appRootWindow(), \
properties, 2); +        QString result(netInfo.activities());
+        if (!result.isEmpty()) {
+            QStringList activities = result.split(',');
+            if (!activities.contains(m_currentActivity)) {
+                continue;
+            }
+        }
+
         for (int i = 0; i < m_desktopCount; i++) {
             if (!info.isOnDesktop(i+1)) {
                 continue;
@@ -663,6 +679,15 @@
     }
 }
 
+void Pager::currentActivityChanged(const QString &activity)
+{
+    m_currentActivity = activity;
+
+    if (!m_timer->isActive()) {
+        m_timer->start(FAST_UPDATE_DELAY);
+    }
+}
+
 void Pager::windowAdded(WId id)
 {
     Q_UNUSED(id)
@@ -725,12 +750,12 @@
     }
 }
 
-void Pager::windowChanged(WId id, unsigned int properties)
+void Pager::windowChanged(WId id, unsigned long* dirty)
 {
     Q_UNUSED(id)
 
-    if (properties & NET::WMGeometry ||
-        properties & NET::WMDesktop) {
+    if (dirty[NETWinInfo::PROTOCOLS] & (NET::WMGeometry | NET::WMDesktop) ||
+        dirty[NETWinInfo::PROTOCOLS2] & NET::WM2Activities) {
         if (!m_timer->isActive()) {
             m_timer->start(UPDATE_DELAY);
         }
--- trunk/KDE/kdebase/workspace/plasma/desktop/applets/pager/pager.h #1195582:1195583
@@ -95,6 +95,7 @@
 
         void configAccepted();
         void currentDesktopChanged(int desktop);
+        void currentActivityChanged(const QString &activity);
         void desktopsSizeChanged();
         void windowAdded(WId id);
         void windowRemoved(WId id);
@@ -102,7 +103,7 @@
         void numberOfDesktopsChanged(int num);
         void desktopNamesChanged();
         void stackingOrderChanged();
-        void windowChanged(WId id, unsigned int properties);
+        void windowChanged(WId id, unsigned long *dirty);
         void showingDesktopChanged(bool showing);
 #ifdef Q_WS_X11
         void slotAddDesktop();
@@ -145,6 +146,7 @@
         int m_columns;
         int m_desktopCount;
         int m_currentDesktop;
+        QString m_currentActivity;
         bool m_desktopDown;
         qreal m_widthScaleFactor;
         qreal m_heightScaleFactor;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic