aboutsummaryrefslogtreecommitdiff
path: root/lumina-desktop/panel-plugins
diff options
context:
space:
mode:
authorKen Moore <ken@pcbsd.org>2015-01-01 10:18:35 -0500
committerKen Moore <ken@pcbsd.org>2015-01-01 10:18:35 -0500
commit64c9ecca216ce03287908c510a7af3adff112832 (patch)
treeebfdb821a450121a8ebd9352b2c57ce0cdd3d0ef /lumina-desktop/panel-plugins
parentMake sure that any argv[] -> QString translations from CLI input are run thro... (diff)
downloadlumina-64c9ecca216ce03287908c510a7af3adff112832.tar.gz
lumina-64c9ecca216ce03287908c510a7af3adff112832.tar.bz2
lumina-64c9ecca216ce03287908c510a7af3adff112832.zip
Large update of XLib -> XCB usage
1) Add ability for task manager to minimize/maximize window from details menu 2) Add quick check/movement of new windows to make sure they are not underneath any panels
Diffstat (limited to 'lumina-desktop/panel-plugins')
-rw-r--r--lumina-desktop/panel-plugins/LTBWidget.h1
-rw-r--r--lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp46
-rw-r--r--lumina-desktop/panel-plugins/taskmanager/LTaskButton.h4
-rw-r--r--lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp10
4 files changed, 46 insertions, 15 deletions
diff --git a/lumina-desktop/panel-plugins/LTBWidget.h b/lumina-desktop/panel-plugins/LTBWidget.h
index 7ca46d0d..d1e69b6e 100644
--- a/lumina-desktop/panel-plugins/LTBWidget.h
+++ b/lumina-desktop/panel-plugins/LTBWidget.h
@@ -16,6 +16,7 @@
class LTBWidget : public QToolButton{
Q_OBJECT
+
private:
LXCB::WINDOWSTATE cstate;
QString rawstyle;
diff --git a/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp b/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp
index 3b88b537..79981754 100644
--- a/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp
+++ b/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp
@@ -7,6 +7,10 @@
#include "LTaskButton.h"
#include "LSession.h"
+#ifndef DEBUG
+#define DEBUG 0
+#endif
+
LTaskButton::LTaskButton(QWidget *parent, bool smallDisplay) : LTBWidget(parent){
actMenu = new QMenu(this);
winMenu = new QMenu(this);
@@ -119,11 +123,14 @@ void LTaskButton::UpdateButton(){
else{ this->setText("("+QString::number(WINLIST.length())+")"); }
}
this->setState(showstate); //Make sure this is after the button setup so that it properly sets the margins/etc
+ cstate = showstate; //save this for later
}
void LTaskButton::UpdateMenus(){
//Action menu is very simple right now - can expand it later
actMenu->clear();
+ actMenu->addAction( LXDG::findIcon("view-close",""), tr("Minimize Window"), this, SLOT(minimizeWindow()) );
+ actMenu->addAction( LXDG::findIcon("view-fullscreen",""), tr("Maximize Window"), this, SLOT(maximizeWindow()) );
actMenu->addAction( LXDG::findIcon("window-close",""), tr("Close Window"), this, SLOT(closeWindow()) );
}
@@ -139,27 +146,47 @@ void LTaskButton::buttonClicked(){
}
void LTaskButton::closeWindow(){
+ if(DEBUG){ qDebug() << "Close Window:" << this->text(); }
if(winMenu->isVisible()){ winMenu->hide(); }
LWinInfo win = currentWindow();
LSession::handle()->XCB->CloseWindow(win.windowID());
- //LX11::CloseWindow(win.windowID());
cWin = LWinInfo(); //clear the current
}
+void LTaskButton::maximizeWindow(){
+ if(DEBUG){ qDebug() << "Maximize Window:" << this->text(); }
+ if(winMenu->isVisible()){ winMenu->hide(); }
+ LWinInfo win = currentWindow();
+ LSession::handle()->XCB->MaximizeWindow(win.windowID());
+ cWin = LWinInfo(); //clear the current
+}
+
+void LTaskButton::minimizeWindow(){
+ if(DEBUG){ qDebug() << "Minimize Window:" << this->text(); }
+ if(winMenu->isVisible()){ winMenu->hide(); }
+ LWinInfo win = currentWindow();
+ LSession::handle()->XCB->MinimizeWindow(win.windowID());
+ cWin = LWinInfo(); //clear the current
+}
+
void LTaskButton::triggerWindow(){
LWinInfo win = currentWindow();
//Check which state the window is currently in and flip it to the other
- LX11::WINDOWSTATE state = LX11::GetWindowState(win.windowID());
- if(state == LX11::ACTIVE){
- qDebug() << "Minimize Window:" << this->text();
- LX11::IconifyWindow(win.windowID());
- }else if(state == LX11::VISIBLE){
- qDebug() << "Activate Window:" << this->text();
- LX11::ActivateWindow(win.windowID());
+ LXCB::WINDOWSTATE state = cstate;
+ //if(WINLIST[0].windowID() != win.windowID()){ state = LSession::handle()->XCB->WindowState(win.windowID()); } //need to fetch the state of the window
+ state = LSession::handle()->XCB->WindowState(win.windowID());
+ if(DEBUG){ qDebug() << "Window State: " << state; }
+ if(state == LXCB::ACTIVE){
+ if(DEBUG){ qDebug() << "Minimize Window:" << this->text(); }
+ LSession::handle()->XCB->MinimizeWindow(win.windowID());
}else{
+ if(DEBUG){ qDebug() << "Activate Window:" << this->text(); }
+ LSession::handle()->XCB->ActivateWindow(win.windowID());
+ }/*else{
qDebug() << "Restore Window:" << this->text();
+ LSession::handle()->XCB->MinimizeWindow(win.windowID());
LX11::RestoreWindow(win.windowID());
- }
+ }*/
cWin = LWinInfo(); //clear the current
}
@@ -177,6 +204,7 @@ void LTaskButton::openActionMenu(){
QAction *act = winMenu->actionAt(QCursor::pos());
if( act != 0 && winMenu->isVisible() ){
//Get the window from the action
+ qDebug() << "Found Action:" << act->data().toInt();
if(act->data().toInt() < WINLIST.length()){
cWin = WINLIST[act->data().toInt()];
}else{ cWin = LWinInfo(); } //clear it
diff --git a/lumina-desktop/panel-plugins/taskmanager/LTaskButton.h b/lumina-desktop/panel-plugins/taskmanager/LTaskButton.h
index 1fd81e0b..3202d676 100644
--- a/lumina-desktop/panel-plugins/taskmanager/LTaskButton.h
+++ b/lumina-desktop/panel-plugins/taskmanager/LTaskButton.h
@@ -48,7 +48,7 @@ private:
bool noicon, showText;
LWinInfo currentWindow(); //For getting the currently-active window
-
+ LXCB::WINDOWSTATE cstate; //current state of the button
public slots:
void UpdateButton(); //re-sync the current window infomation
void UpdateMenus(); //re-create the menus (text + icons)
@@ -56,6 +56,8 @@ public slots:
private slots:
void buttonClicked();
void closeWindow(); //send the signal to close a window
+ void maximizeWindow(); //send the signal to maximize/restore a window
+ void minimizeWindow(); //send the signal to minimize a window (iconify)
void triggerWindow(); //change b/w visible and invisible
void winClicked(QAction*);
void openActionMenu();
diff --git a/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp b/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp
index b551a795..ccad7531 100644
--- a/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp
+++ b/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp
@@ -51,14 +51,14 @@ void LTaskManagerPlugin::UpdateButtons(){
//Window was closed - remove it
if(WI.length()==1){
//Remove the entire button
- qDebug() << "Window Closed: Remove Button" ;
+ //qDebug() << "Window Closed: Remove Button" ;
this->layout()->takeAt(i); //remove from the layout
delete BUTTONS.takeAt(i);
i--;
updated = true; //prevent updating a removed button
break; //break out of the button->window loop
}else{
- qDebug() << "Window Closed: Remove from button:" << WI[w].windowID() << "Button:" << w;
+ //qDebug() << "Window Closed: Remove from button:" << WI[w].windowID() << "Button:" << w;
BUTTONS[i]->rmWindow(WI[w]); // one of the multiple windows for the button
WI.removeAt(w); //remove this window from the list
w--;
@@ -68,7 +68,7 @@ void LTaskManagerPlugin::UpdateButtons(){
if(updating > ctime){ return; } //another thread kicked off already - stop this one
}
if(!updated){
- qDebug() << "Update Button:" << i;
+ //qDebug() << "Update Button:" << i;
if(updating > ctime){ return; } //another thread kicked off already - stop this one
QTimer::singleShot(1,BUTTONS[i], SLOT(UpdateButton()) ); //keep moving on
}
@@ -85,7 +85,7 @@ void LTaskManagerPlugin::UpdateButtons(){
if(BUTTONS[b]->classname()== ctxt && usegroups){
//This adds a window to an existing group
found = true;
- qDebug() << "Add Window to Button:" << b;
+ //qDebug() << "Add Window to Button:" << b;
BUTTONS[b]->addWindow(winlist[i]);
break;
}
@@ -93,7 +93,7 @@ void LTaskManagerPlugin::UpdateButtons(){
if(!found){
if(updating > ctime){ return; } //another thread kicked off already - stop this one
//No group, create a new button
- qDebug() << "New Button";
+ //qDebug() << "New Button";
LTaskButton *but = new LTaskButton(this, usegroups);
but->addWindow( LWinInfo(winlist[i]) );
if(this->layout()->direction()==QBoxLayout::LeftToRight){
bgstack15