diff options
Diffstat (limited to 'src-qt5/core/lumina-desktop/panel-plugins/systemtray')
-rw-r--r-- | src-qt5/core/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp | 12 | ||||
-rw-r--r-- | src-qt5/core/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp | 4 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp b/src-qt5/core/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp index a71fd57e..edd0a4eb 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp @@ -80,6 +80,7 @@ void LSysTray::checkAll(){ if(!isRunning || stopping || checking){ pending = true; return; } //Don't check if not running at the moment checking = true; pending = false; + bool listChanged = 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"; @@ -94,6 +95,7 @@ void LSysTray::checkAll(){ LI->removeWidget(cont); cont->deleteLater(); i--; //List size changed + listChanged = true; //Re-adjust the maximum widget size to account for what is left if(this->layout()->direction()==QBoxLayout::LeftToRight){ this->setMaximumSize( trayIcons.length()*this->height(), 10000); @@ -103,7 +105,7 @@ void LSysTray::checkAll(){ }else{ //Tray Icon already exists //qDebug() << " - SysTray: Update Icon"; - trayIcons[i]->update(); + //trayIcons[i]->repaint(); wins.removeAt(index); //Already found - remove from the list } } @@ -139,13 +141,14 @@ void LSysTray::checkAll(){ continue; } LI->update(); //make sure there is no blank space in the layout + listChanged = true; } - /*if(listChanged){ + if(listChanged){ //Icons got moved around: be sure to re-draw all of them to fix visuals for(int i=0; i<trayIcons.length(); i++){ - trayIcons[i]->update(); + trayIcons[i]->repaint(); } - }*/ + } //qDebug() << " - System Tray: check done"; checking = false; if(pending){ QTimer::singleShot(0,this, SLOT(checkAll()) ); } @@ -164,4 +167,3 @@ void LSysTray::UpdateTrayWindow(WId win){ //qDebug() << "System Tray: Missing Window - check all"; QTimer::singleShot(0,this, SLOT(checkAll()) ); } - diff --git a/src-qt5/core/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp b/src-qt5/core/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp index 9fdbce50..6736359c 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp @@ -79,7 +79,7 @@ void TrayIcon::updateIcon(){ if(AID==0){ return; } //Make sure the icon is square QSize icosize = this->size(); - LSession::handle()->XCB->ResizeWindow(AID, icosize.width(), icosize.height()); + LSession::handle()->XCB->ResizeWindow(AID, icosize.width()*2, icosize.height()*2); QTimer::singleShot(500, this, SLOT(update()) ); //make sure to re-draw the window in a moment } @@ -103,7 +103,7 @@ void TrayIcon::paintEvent(QPaintEvent *event){ //qDebug() << " - Pix size:" << pix.size().width() << pix.size().height(); //qDebug() << " - Geom:" << this->geometry().x() << this->geometry().y() << this->geometry().width() << this->geometry().height(); if(!pix.isNull()){ - if(this->size() != pix.size()){ QTimer::singleShot(10, this, SLOT(updateIcon())); } + if((this->size()*2) != pix.size()){ QTimer::singleShot(10, this, SLOT(updateIcon())); } painter.drawPixmap(0,0,this->width(), this->height(), pix.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation) ); badpaints = 0; //good paint }else{ |