mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-23 18:32:50 +00:00
plasma: implement interactive windows preview for pager applet
wasn't a thing before, is now Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
45dbe71270
commit
9e2b0ef99f
3 changed files with 30 additions and 0 deletions
|
@ -8,6 +8,7 @@ kde4_add_plugin(plasma_applet_pager ${pager_SRCS})
|
|||
target_link_libraries(plasma_applet_pager
|
||||
KDE4::plasma
|
||||
KDE4::kcmutils
|
||||
kworkspace
|
||||
)
|
||||
|
||||
install(
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
#include "pager.h"
|
||||
#include "kworkspace/ktaskmanager.h"
|
||||
|
||||
#include <QX11Info>
|
||||
#include <QGridLayout>
|
||||
|
@ -232,6 +233,17 @@ void PagerSvg::slotUpdateSvgAndToolTip()
|
|||
setSvg(m_framesvg);
|
||||
Plasma::ToolTipContent plasmatooltip;
|
||||
plasmatooltip.setMainText(QString::fromLatin1("<center>%1</center>").arg(KWindowSystem::desktopName(m_desktop)));
|
||||
QList<WId> windowstopreview;
|
||||
foreach (const KTaskManager::Task &task, KTaskManager::self()->tasks()) {
|
||||
const KWindowInfo kwindowinfo = KWindowSystem::windowInfo(task.window, NET::WMDesktop);
|
||||
if (!kwindowinfo.isOnDesktop(m_desktop)) {
|
||||
continue;
|
||||
}
|
||||
windowstopreview.append(task.window);
|
||||
}
|
||||
// NOTE: the limit of windows to preview is 4, perhaps add based on X11 timestamp?
|
||||
plasmatooltip.setWindowsToPreview(windowstopreview);
|
||||
plasmatooltip.setClickable(true);
|
||||
Plasma::ToolTipManager::self()->setContent(this, plasmatooltip);
|
||||
}
|
||||
|
||||
|
@ -272,6 +284,10 @@ void PagerApplet::init()
|
|||
KWindowSystem::self(), SIGNAL(numberOfDesktopsChanged(int)),
|
||||
this, SLOT(slotUpdateLayout())
|
||||
);
|
||||
connect(
|
||||
Plasma::ToolTipManager::self(), SIGNAL(windowPreviewActivated(WId,Qt::MouseButtons,Qt::KeyboardModifiers,QPoint)),
|
||||
this, SLOT(slotWindowPreviewActivated(WId))
|
||||
);
|
||||
}
|
||||
|
||||
void PagerApplet::createConfigurationInterface(KConfigDialog *parent)
|
||||
|
@ -453,6 +469,18 @@ void PagerApplet::slotRemoveDesktop()
|
|||
}
|
||||
}
|
||||
|
||||
void PagerApplet::slotWindowPreviewActivated(const WId window)
|
||||
{
|
||||
// manually hide all tooltips first
|
||||
QMutexLocker locker(&m_mutex);
|
||||
foreach (PagerSvg* pagersvg, m_pagersvgs) {
|
||||
Plasma::ToolTipManager::self()->hide(pagersvg);
|
||||
}
|
||||
locker.unlock();
|
||||
KWindowSystem::activateWindow(window);
|
||||
KWindowSystem::raiseWindow(window);
|
||||
}
|
||||
|
||||
void PagerApplet::slotConfigAccepted()
|
||||
{
|
||||
Q_ASSERT(m_pagermodebox != nullptr);
|
||||
|
|
|
@ -55,6 +55,7 @@ private Q_SLOTS:
|
|||
void slotUpdateLayout();
|
||||
void slotAddDesktop();
|
||||
void slotRemoveDesktop();
|
||||
void slotWindowPreviewActivated(const WId window);
|
||||
void slotConfigAccepted();
|
||||
|
||||
protected:
|
||||
|
|
Loading…
Add table
Reference in a new issue