[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/plasma/netbook/applets/currentappcontrol
From: Marco Martin <notmart () gmail ! com>
Date: 2009-09-16 20:38:11
Message-ID: 1253133491.687073.6598.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1024567 by mart:
maximize/restore button
M +44 -0 currentappcontrol.cpp
M +2 -0 currentappcontrol.h
--- trunk/KDE/kdebase/workspace/plasma/netbook/applets/currentappcontrol/currentappcontrol.cpp \
#1024566:1024567 @@ -62,8 +62,15 @@
m_closeTask->setSvg("widgets/configuration-icons", "close");
m_closeTask->setMaximumWidth(KIconLoader::SizeSmallMedium);
+ m_maximizeTask = new Plasma::IconWidget(this);
+ m_maximizeTask->setSvg("widgets/configuration-icons", "maximize");
+ m_maximizeTask->setMaximumWidth(KIconLoader::SizeSmallMedium);
+ m_maximizeTask->setZValue(999);
+
connect(m_closeTask, SIGNAL(clicked()), this, SLOT(closeWindow()));
connect(m_closeTask, SIGNAL(pressed(bool)), this, SLOT(setSyncDelay(bool)));
+ connect(m_maximizeTask, SIGNAL(clicked()), this, SLOT(toggleMaximizedWindow()));
+ connect(m_maximizeTask, SIGNAL(pressed(bool)), this, SLOT(setSyncDelay(bool)));
connect(m_currentTask, SIGNAL(clicked()), this, SLOT(listWindows()));
}
@@ -82,6 +89,7 @@
lay->setContentsMargins(0, 0, 0, 0);
lay->setSpacing(0);
lay->addItem(m_currentTask);
+ lay->addItem(m_maximizeTask);
lay->addItem(m_closeTask);
activeWindowChanged(KWindowSystem::activeWindow());
}
@@ -138,6 +146,7 @@
m_currentTask->setIcon("preferences-system-windows");
m_currentTask->setText(i18np("%1 running app", "%1 running apps", \
KWindowSystem::windows().count()-1)); m_closeTask->hide();
+ m_maximizeTask->hide();
} else {
m_activeWindow = m_pendingActiveWindow;
KWindowInfo info = KWindowSystem::windowInfo(m_activeWindow, NET::WMName);
@@ -146,6 +155,7 @@
//FIXME: this is utterly bad: the layout seems to -not- resize it?
m_currentTask->resize(size().width() - m_closeTask->size().width(), \
m_currentTask->size().height()); m_closeTask->show();
+ m_maximizeTask->show();
}
m_pendingActiveWindow = 0;
@@ -170,6 +180,40 @@
syncActiveWindow();
}
+void CurrentAppControl::toggleMaximizedWindow()
+{
+#ifdef Q_WS_X11
+ KWindowInfo info = KWindowSystem::windowInfo(m_activeWindow, NET::WMState | \
NET::XAWMState | NET::WMDesktop); + bool on_current = info.isOnCurrentDesktop();
+
+ if (!on_current)
+ {
+ KWindowSystem::setCurrentDesktop(info.desktop());
+ }
+
+ if (info.isMinimized())
+ {
+ KWindowSystem::unminimizeWindow(m_activeWindow);
+ }
+
+ NETWinInfo ni(QX11Info::display(), m_activeWindow, QX11Info::appRootWindow(), \
NET::WMState); +
+ if (!(ni.state() & NET::Max))
+ {
+ ni.setState(NET::Max, NET::Max);
+ }
+ else
+ {
+ ni.setState(0, NET::Max);
+ }
+
+ if (!on_current)
+ {
+ KWindowSystem::forceActiveWindow(m_activeWindow);
+ }
+#endif
+}
+
void CurrentAppControl::listWindows()
{
if (KWindowSystem::compositingActive()) {
--- trunk/KDE/kdebase/workspace/plasma/netbook/applets/currentappcontrol/currentappcontrol.h \
#1024566:1024567 @@ -50,6 +50,7 @@
void setSyncDelay(bool delay);
void syncActiveWindow();
void closeWindow();
+ void toggleMaximizedWindow();
void listWindows();
void windowItemClicked();
void closePopup();
@@ -57,6 +58,7 @@
private:
Plasma::IconWidget *m_currentTask;
Plasma::IconWidget *m_closeTask;
+ Plasma::IconWidget *m_maximizeTask;
bool m_syncDelay;
WId m_activeWindow;
WId m_pendingActiveWindow;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic