aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Moore <ken@pcbsd.org>2015-05-13 12:39:15 -0400
committerKen Moore <ken@pcbsd.org>2015-05-13 12:39:15 -0400
commit76aac7b677197f187de19a0f9ec0323e40a39029 (patch)
treedc70b00623d17e0802d86743c4e34fe18e1e9f29
parentWhen using the time/date or date/time clock formats, put a newline instead of... (diff)
downloadlumina-76aac7b677197f187de19a0f9ec0323e40a39029.tar.gz
lumina-76aac7b677197f187de19a0f9ec0323e40a39029.tar.bz2
lumina-76aac7b677197f187de19a0f9ec0323e40a39029.zip
A couple quick updates to the system tray:
1) Keep track of any events that come in during a check, and run another check when ready. 2) If an update event comes in for an icon which is not internally found, have it run the full check to see if it is missing an icon.
-rw-r--r--lumina-desktop/panel-plugins/systemtray/LSysTray.cpp12
-rw-r--r--lumina-desktop/panel-plugins/systemtray/LSysTray.h2
2 files changed, 9 insertions, 5 deletions
diff --git a/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp b/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp
index bdd605d0..74705b16 100644
--- a/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp
+++ b/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp
@@ -34,7 +34,7 @@ LSysTray::LSysTray(QWidget *parent, QString id, bool horizontal) : LPPlugin(pare
upTimer = new QTimer(this);
upTimer->setInterval(300000); //maximum time between refreshes is 5 minutes
connect(upTimer, SIGNAL(timeout()), this, SLOT(checkAll()) );
- isRunning = false; stopping = false; checking = false;
+ isRunning = false; stopping = false; checking = false; pending = false;
QTimer::singleShot(100, this, SLOT(start()) );
connect(LSession::handle(), SIGNAL(TrayListChanged()), this, SLOT(checkAll()) );
@@ -88,8 +88,9 @@ void LSysTray::stop(){
// PRIVATE FUNCTIONS
// ========================
void LSysTray::checkAll(){
- if(!isRunning || stopping || checking){ return; } //Don't check if not running at the moment
+ if(!isRunning || stopping || checking){ pending = true; return; } //Don't check if not running at the moment
checking = true;
+ pending = false;
//Make sure this tray should handle the windows (was not disabled in the backend)
bool TrayRunning = LSession::handle()->registerVisualTray(this->winId());
//qDebug() << "System Tray: Check tray apps";
@@ -156,6 +157,7 @@ void LSysTray::checkAll(){
}*/
//qDebug() << " - System Tray: check done";
checking = false;
+ if(pending){ QTimer::singleShot(0,this, SLOT(checkAll()) ); }
}
void LSysTray::UpdateTrayWindow(WId win){
@@ -164,9 +166,11 @@ void LSysTray::UpdateTrayWindow(WId win){
if(trayIcons[i]->appID()==win){
//qDebug() << "System Tray: Update Window " << win;
trayIcons[i]->update();
- break;
+ return; //finished now
}
- }
+ }
+ //Could not find tray in the list, run the checkall routine to make sure we are not missing any
+ QTimer::singleShot(0,this, SLOT(checkAll()) );
}
diff --git a/lumina-desktop/panel-plugins/systemtray/LSysTray.h b/lumina-desktop/panel-plugins/systemtray/LSysTray.h
index 786ca730..2f7872b3 100644
--- a/lumina-desktop/panel-plugins/systemtray/LSysTray.h
+++ b/lumina-desktop/panel-plugins/systemtray/LSysTray.h
@@ -34,7 +34,7 @@ public:
}
private:
- bool isRunning, stopping, checking;
+ bool isRunning, stopping, checking, pending;
QList<TrayIcon*> trayIcons;
QFrame *frame;
QBoxLayout *LI; //layout items
bgstack15