aboutsummaryrefslogtreecommitdiff
path: root/lumina-desktop/panel-plugins
diff options
context:
space:
mode:
Diffstat (limited to 'lumina-desktop/panel-plugins')
-rw-r--r--lumina-desktop/panel-plugins/LPPlugin.h1
-rw-r--r--lumina-desktop/panel-plugins/LTBWidget.h17
-rw-r--r--lumina-desktop/panel-plugins/systemtray/LSysTray.cpp14
-rw-r--r--lumina-desktop/panel-plugins/systemtray/LSysTray.h2
-rw-r--r--lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp22
-rw-r--r--lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp27
-rw-r--r--lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp2
-rw-r--r--lumina-desktop/panel-plugins/userbutton/UserItemWidget.cpp14
8 files changed, 52 insertions, 47 deletions
diff --git a/lumina-desktop/panel-plugins/LPPlugin.h b/lumina-desktop/panel-plugins/LPPlugin.h
index ae4e7fbc..c8347a8e 100644
--- a/lumina-desktop/panel-plugins/LPPlugin.h
+++ b/lumina-desktop/panel-plugins/LPPlugin.h
@@ -28,6 +28,7 @@ public:
plugintype=ptype;
this->setContentsMargins(0,0,0,0);
this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+ this->setFocusPolicy(Qt::NoFocus); //no keyboard focus on the panel/plugins
if(horizontal){LY = new QBoxLayout(QBoxLayout::LeftToRight, this); }
else{ LY = new QBoxLayout(QBoxLayout::TopToBottom, this); }
LY->setContentsMargins(0,0,0,0);
diff --git a/lumina-desktop/panel-plugins/LTBWidget.h b/lumina-desktop/panel-plugins/LTBWidget.h
index 5252c619..7ca46d0d 100644
--- a/lumina-desktop/panel-plugins/LTBWidget.h
+++ b/lumina-desktop/panel-plugins/LTBWidget.h
@@ -12,20 +12,21 @@
#include <QWheelEvent>
#include "Globals.h"
+#include <LuminaX11.h>
class LTBWidget : public QToolButton{
Q_OBJECT
private:
- Lumina::STATES cstate;
+ LXCB::WINDOWSTATE cstate;
QString rawstyle;
void updateBackground(){
QString background = "background: transparent; "; //default value
QString border = "border: 1px solid transparent;";
- if(cstate == Lumina::NONE){ } //just use the defaults
- else if(cstate == Lumina::VISIBLE){ background = "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 255, 255, 240), stop:0.505682 rgba(240, 240, 240, 150), stop:1 rgba(210, 210, 210, 55));"; border="border: 1px solid transparent;"; }
- else if(cstate == Lumina::INVISIBLE){background = "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(215, 215, 215, 240), stop:0.505682 rgba(184, 185, 186, 150), stop:1 rgba(221, 246, 255, 55));"; border="border: 1px solid transparent;"; }
- else if(cstate == Lumina::ACTIVE){ background= "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(241, 233, 156, 240), stop:0.355682 rgba(255, 243, 127, 150), stop:1 rgba(221, 246, 255, 55));"; border ="border: 1px solid transparent;"; }
- else if(cstate == Lumina::NOTIFICATION){ background= "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(252, 187, 127, 240), stop:0.505682 rgba(255, 222, 197, 150), stop:1 rgba(221, 246, 255, 55));"; border="border: 1px solid transparent;"; }
+ if(cstate == LXCB::IGNORE){ } //just use the defaults
+ else if(cstate == LXCB::VISIBLE){ background = "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 255, 255, 240), stop:0.505682 rgba(240, 240, 240, 150), stop:1 rgba(210, 210, 210, 55));"; border="border: 1px solid transparent;"; }
+ else if(cstate == LXCB::INVISIBLE){background = "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(215, 215, 215, 240), stop:0.505682 rgba(184, 185, 186, 150), stop:1 rgba(221, 246, 255, 55));"; border="border: 1px solid transparent;"; }
+ else if(cstate == LXCB::ACTIVE){ background= "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(241, 233, 156, 240), stop:0.355682 rgba(255, 243, 127, 150), stop:1 rgba(221, 246, 255, 55));"; border ="border: 1px solid transparent;"; }
+ else if(cstate == LXCB::ATTENTION){ background= "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(252, 187, 127, 240), stop:0.505682 rgba(255, 222, 197, 150), stop:1 rgba(221, 246, 255, 55));"; border="border: 1px solid transparent;"; }
QString raw = rawstyle;
this->setStyleSheet( raw.replace("%1",background).replace("%2", border) );
}
@@ -37,7 +38,7 @@ signals:
public:
LTBWidget(QWidget* parent) : QToolButton(parent){
//this->setStyleSheet( this->styleSheet()+" LTBWidget::menu-indicator{image: none;}");
- cstate = Lumina::NONE;
+ cstate = LXCB::IGNORE;
this->setPopupMode(QToolButton::InstantPopup);
this->setAutoRaise(true);
@@ -48,7 +49,7 @@ public:
~LTBWidget(){
}
- void setState(Lumina::STATES newstate){
+ void setState(LXCB::WINDOWSTATE newstate){
cstate = newstate;
updateBackground();
}
diff --git a/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp b/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp
index dacb7b55..1eafffee 100644
--- a/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp
+++ b/lumina-desktop/panel-plugins/systemtray/LSysTray.cpp
@@ -53,7 +53,7 @@ void LSysTray::start(){
isRunning = LSession::handle()->registerVisualTray(this->winId());
qDebug() << "Visual Tray Started:" << this->type() << isRunning;
if(isRunning){
- upTimer->start();
+ //upTimer->start();
QTimer::singleShot(0,this, SLOT(checkAll()) );
}
//Make sure we catch all events right away
@@ -169,6 +169,7 @@ void LSysTray::checkAll(){
if(!isRunning || stopping || checking){ return; } //Don't check if not running at the moment
checking = true;
//qDebug() << "System Tray: Check tray apps";
+ bool listChanged = false;
QList<WId> wins = LSession::handle()->currentTrayApps(this->winId());
for(int i=0; i<trayIcons.length(); i++){
int index = wins.indexOf(trayIcons[i]->appID());
@@ -179,6 +180,7 @@ void LSysTray::checkAll(){
LI->removeWidget(cont);
delete cont;
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);
@@ -217,9 +219,17 @@ void LSysTray::checkAll(){
LI->removeWidget(cont);
delete cont;
continue;
- }
+ }else{
+ listChanged = true;
+ }
LI->update(); //make sure there is no blank space in the layout
}
+ /*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();
+ }
+ }*/
//qDebug() << " - System Tray: check done";
checking = false;
}
diff --git a/lumina-desktop/panel-plugins/systemtray/LSysTray.h b/lumina-desktop/panel-plugins/systemtray/LSysTray.h
index f45a52ad..1b482ef7 100644
--- a/lumina-desktop/panel-plugins/systemtray/LSysTray.h
+++ b/lumina-desktop/panel-plugins/systemtray/LSysTray.h
@@ -12,7 +12,7 @@
#include <QHBoxLayout>
#include <QDebug>
#include <QX11Info>
-#include <QX11EmbedContainer>
+//#include <QX11EmbedContainer>
#include <QCoreApplication>
//Local includes
diff --git a/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp b/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp
index 64c7c77d..716a49ed 100644
--- a/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp
+++ b/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp
@@ -6,11 +6,13 @@
//===========================================
#include "TrayIcon.h"
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
+//#include <X11/Xlib.h>
+//#include <X11/Xutil.h>
#include <X11/extensions/Xdamage.h>
-static Damage dmgID = 0;
+//#include <xcb/damage.h>
+//static xcb_damage_damage_t dmgID;
+static int dmgID = 0;
TrayIcon::TrayIcon(QWidget *parent) : QWidget(parent){
AID = 0; //nothing yet
@@ -36,10 +38,10 @@ void TrayIcon::attachApp(WId id){
if( LX11::EmbedWindow(AID, IID) ){
LX11::RestoreWindow(AID); //make it visible
//XSelectInput(QX11Info::display(), AID, StructureNotifyMask);
+ //xcb_damage_create(QX11Info::connection(), dmgID, AID, XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES);
dmgID = XDamageCreate( QX11Info::display(), AID, XDamageReportRawRectangles );
- updateIcon();
qDebug() << "New System Tray App:" << AID;
- QTimer::singleShot(500, this, SLOT(updateIcon()) );
+ QTimer::singleShot(1000, this, SLOT(updateIcon()) );
}else{
qWarning() << "Could not Embed Tray Application:" << AID;
//LX11::DestroyWindow(IID);
@@ -64,9 +66,9 @@ void TrayIcon::detachApp(){
//Now detach the application window and clean up
qDebug() << " - Unembed";
LX11::UnembedWindow(tmp);
- if(dmgID!=0){
- XDamageDestroy(QX11Info::display(), dmgID);
- }
+ //if(dmgID!=0){
+ //XDamageDestroy(QX11Info::display(), dmgID);
+ //}
qDebug() << " - finished app:" << tmp;
//if(IID!=this->winId()){ LX11::DestroyWindow(IID); }
IID = 0;
@@ -98,6 +100,7 @@ void TrayIcon::updateIcon(){
//Make sure the icon is square
QSize icosize = this->size();
LX11::ResizeWindow(AID, icosize.width(), icosize.height());
+ QTimer::singleShot(500, this, SLOT(update()) ); //make sure to re-draw the window in a moment
}
// =============
@@ -115,7 +118,7 @@ void TrayIcon::paintEvent(QPaintEvent *event){
QPixmap pix = LX11::WindowImage(AID, false);
if(pix.isNull()){
//Try to grab the window directly with Qt
- //qDebug() << " - - Grab window directly";
+ qDebug() << " - - Grab window directly";
pix = QPixmap::grabWindow(AID);
}
//qDebug() << " - Pix size:" << pix.size().width() << pix.size().height();
@@ -138,6 +141,7 @@ void TrayIcon::resizeEvent(QResizeEvent *event){
//qDebug() << "Resize Event:" << event->size().width() << event->size().height();
if(AID!=0){
LX11::ResizeWindow(AID, event->size().width(), event->size().height());
+ QTimer::singleShot(500, this, SLOT(update()) ); //make sure to re-draw the window in a moment
}
}
diff --git a/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp b/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp
index 6ea7854e..9dfc0979 100644
--- a/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp
+++ b/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp
@@ -5,6 +5,7 @@
// See the LICENSE file for full details
//===========================================
#include "LTaskButton.h"
+#include "LSession.h"
LTaskButton::LTaskButton(QWidget *parent) : LTBWidget(parent){
actMenu = new QMenu(this);
@@ -71,7 +72,7 @@ void LTaskButton::UpdateButton(){
LWINLIST = WINLIST;
winMenu->clear();
- Lumina::STATES showstate = Lumina::NOSHOW;
+ LXCB::WINDOWSTATE showstate = LXCB::IGNORE;
for(int i=0; i<WINLIST.length(); i++){
if(WINLIST[i].windowID() == 0){
WINLIST.removeAt(i);
@@ -88,31 +89,19 @@ void LTaskButton::UpdateButton(){
if(cname.contains(" - ")){ cname = cname.section(" - ",-1); }
}
this->setToolTip(cname);
- /*
- if(this->icon().isNull()){
- this->setIcon( LXDG::findIcon(cname.toLower(),"") );
- if(this->icon().isNull()){
- this->setIcon( LXDG::findIcon("preferences-system-windows","") );
- noicon=true;
- }else{
- noicon = false;
- }
- }else{
- noicon = false;
- }*/
}
bool junk;
QAction *tmp = winMenu->addAction( WINLIST[i].icon(junk), WINLIST[i].text() );
tmp->setData(i); //save which number in the WINLIST this entry is for
- Lumina::STATES stat = WINLIST[i].status();
- if(stat==Lumina::NOTIFICATION){ showstate = stat; } //highest priority
- else if( stat==Lumina::ACTIVE && showstate != Lumina::NOTIFICATION){ showstate = stat; } //next priority
- else if( stat==Lumina::Lumina::VISIBLE && showstate != Lumina::NOTIFICATION && showstate != Lumina::ACTIVE){ showstate = stat; }
- else if(showstate == Lumina::INVISIBLE || showstate == Lumina::NOSHOW){ showstate = stat; } //anything is the same/better
+ LXCB::WINDOWSTATE stat = LSession::handle()->XCB->WindowState(WINLIST[i].windowID());
+ if(stat==LXCB::ATTENTION){ showstate = stat; } //highest priority
+ else if( stat==LXCB::ACTIVE && showstate != LXCB::ATTENTION){ showstate = stat; } //next priority
+ else if( stat==LXCB::VISIBLE && showstate != LXCB::ATTENTION && showstate != LXCB::ACTIVE){ showstate = stat; }
+ else if(showstate == LXCB::INVISIBLE || showstate == LXCB::IGNORE){ showstate = stat; } //anything is the same/better
}
//Now setup the button appropriately
// - visibility
- if(showstate == Lumina::NOSHOW || WINLIST.length() < 1){ this->setVisible(false); }
+ if(showstate == LXCB::IGNORE || WINLIST.length() < 1){ this->setVisible(false); }
else{ this->setVisible(true); }
// - functionality
if(WINLIST.length() == 1){
diff --git a/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp b/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp
index 674c9088..8f131c9e 100644
--- a/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp
+++ b/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp
@@ -31,7 +31,7 @@ void LTaskManagerPlugin::UpdateButtons(){
//Make sure this only runs one at a time
updating=true;
//Get the current window list
- QList<WId> winlist = LX11::WindowList();
+ QList<WId> winlist = LSession::handle()->XCB->WindowList();
//qDebug() << "Update Buttons:" << winlist;
//Now go through all the current buttons first
for(int i=0; i<BUTTONS.length(); i++){
diff --git a/lumina-desktop/panel-plugins/userbutton/UserItemWidget.cpp b/lumina-desktop/panel-plugins/userbutton/UserItemWidget.cpp
index 7a1983d2..9bfbbb8d 100644
--- a/lumina-desktop/panel-plugins/userbutton/UserItemWidget.cpp
+++ b/lumina-desktop/panel-plugins/userbutton/UserItemWidget.cpp
@@ -13,24 +13,24 @@ UserItemWidget::UserItemWidget(QWidget *parent, QString itemPath, bool isDir, bo
bool ok = false;
XDGDesktop item = LXDG::loadDesktopFile(itemPath, ok);
if(ok){
- icon->setPixmap( LXDG::findIcon(item.icon, "preferences-system-windows-actions").pixmap(30,30) );
+ icon->setPixmap( LXDG::findIcon(item.icon, "preferences-system-windows-actions").pixmap(32,32) );
name->setText( this->fontMetrics().elidedText(item.name, Qt::ElideRight, 180) );
}else{
- icon->setPixmap( LXDG::findIcon("unknown","").pixmap(30,30) );
+ icon->setPixmap( LXDG::findIcon("unknown","").pixmap(32,32) );
name->setText( this->fontMetrics().elidedText(itemPath.section("/",-1), Qt::ElideRight, 180) );
}
}else if(isDir){
if(itemPath.endsWith("/")){ itemPath.chop(1); }
if(goback){
- icon->setPixmap( LXDG::findIcon("go-previous","").pixmap(30,30) );
+ icon->setPixmap( LXDG::findIcon("go-previous","").pixmap(32,32) );
name->setText( tr("Go Back") );
}else{
- icon->setPixmap( LXDG::findIcon("folder","").pixmap(30,30) );
+ icon->setPixmap( LXDG::findIcon("folder","").pixmap(32,32) );
name->setText( this->fontMetrics().elidedText(itemPath.section("/",-1), Qt::ElideRight, 180) );
}
}else{
if(itemPath.endsWith("/")){ itemPath.chop(1); }
- icon->setPixmap( LXDG::findMimeIcon(itemPath.section("/",-1).section(".",-1)).pixmap(30,30) );
+ icon->setPixmap( LXDG::findMimeIcon(itemPath.section("/",-1).section(".",-1)).pixmap(32,32) );
name->setText( this->fontMetrics().elidedText(itemPath.section("/",-1), Qt::ElideRight, 180) );
}
linkPath = QFile::symLinkTarget(itemPath);
@@ -48,7 +48,7 @@ UserItemWidget::UserItemWidget(QWidget *parent, XDGDesktop item) : QFrame(parent
linkPath = QFile::symLinkTarget(item.filePath);
isShortcut = item.filePath.contains("/home/") && (item.filePath.contains("/Desktop/") || item.filePath.contains("/.lumina/favorites/") );
//Now fill it appropriately
- icon->setPixmap( LXDG::findIcon(item.icon,"preferences-system-windows-actions").pixmap(30,30) );
+ icon->setPixmap( LXDG::findIcon(item.icon,"preferences-system-windows-actions").pixmap(32,32) );
name->setText( this->fontMetrics().elidedText(item.name, Qt::ElideRight, 180) );
icon->setWhatsThis(item.filePath);
//Now setup the button appropriately
@@ -70,7 +70,7 @@ void UserItemWidget::createWidget(){
button->setIconSize( QSize(14,14) );
button->setAutoRaise(true);
icon = new QLabel(this);
- icon->setFixedSize( QSize(30,30) );
+ icon->setFixedSize( QSize(34,34) );
name = new QLabel(this);
//Add them to the layout
this->setLayout(new QHBoxLayout());
bgstack15