mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-06-11 16:57:43 +00:00
Add desktop actions to the dock button
Open the desktop button context menu on right click or press and hold, and expose Minimize All Windows through KWin's existing global shortcut.
This commit is contained in:
parent
76da62dae9
commit
ebb80d5838
3 changed files with 39 additions and 3 deletions
|
|
@ -98,6 +98,13 @@ void HomeScreen::triggerOverview() const
|
||||||
QDBusConnection::sessionBus().send(message);
|
QDBusConnection::sessionBus().send(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HomeScreen::triggerMinimizeAll() const
|
||||||
|
{
|
||||||
|
QDBusMessage message = QDBusMessage::createMethodCall("org.kde.kglobalaccel", "/component/kwin", "org.kde.kglobalaccel.Component", "invokeShortcut");
|
||||||
|
message.setArguments({QStringLiteral("MinimizeAll")});
|
||||||
|
QDBusConnection::sessionBus().send(message);
|
||||||
|
}
|
||||||
|
|
||||||
void HomeScreen::activateVirtualDesktop(const QVariant &desktop) const
|
void HomeScreen::activateVirtualDesktop(const QVariant &desktop) const
|
||||||
{
|
{
|
||||||
if (!desktop.isValid() || desktop.toString().isEmpty()) {
|
if (!desktop.isValid() || desktop.toString().isEmpty()) {
|
||||||
|
|
@ -111,7 +118,7 @@ void HomeScreen::activateVirtualDesktop(const QVariant &desktop) const
|
||||||
void HomeScreen::emptyTrash() const
|
void HomeScreen::emptyTrash() const
|
||||||
{
|
{
|
||||||
QDBusMessage message = QDBusMessage::createMethodCall(QStringLiteral("org.kde.kio.trash"),
|
QDBusMessage message = QDBusMessage::createMethodCall(QStringLiteral("org.kde.kio.trash"),
|
||||||
QStringLiteral("/trash"),
|
acceptedButtons : Qt.LeftButton | Qt.RightButton QStringLiteral("/trash"),
|
||||||
QStringLiteral("org.kde.KIO.Trash"),
|
QStringLiteral("org.kde.KIO.Trash"),
|
||||||
QStringLiteral("emptyTrash"));
|
QStringLiteral("emptyTrash"));
|
||||||
QDBusConnection::sessionBus().send(message);
|
QDBusConnection::sessionBus().send(message);
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ public:
|
||||||
void configChanged() override;
|
void configChanged() override;
|
||||||
|
|
||||||
Q_INVOKABLE void triggerOverview() const;
|
Q_INVOKABLE void triggerOverview() const;
|
||||||
|
Q_INVOKABLE void triggerMinimizeAll() const;
|
||||||
Q_INVOKABLE void activateVirtualDesktop(const QVariant &desktop) const;
|
Q_INVOKABLE void activateVirtualDesktop(const QVariant &desktop) const;
|
||||||
Q_INVOKABLE void emptyTrash() const;
|
Q_INVOKABLE void emptyTrash() const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -336,7 +336,7 @@ MouseArea {
|
||||||
}
|
}
|
||||||
|
|
||||||
PC3.ToolTip {
|
PC3.ToolTip {
|
||||||
visible: desktopMouseArea.containsMouse
|
visible: desktopMouseArea.containsMouse && !desktopContextMenu.opened
|
||||||
text: desktopButton.Accessible.name
|
text: desktopButton.Accessible.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -344,8 +344,36 @@ MouseArea {
|
||||||
id: desktopMouseArea
|
id: desktopMouseArea
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||||
cursorShape: root.convergenceMode ? Qt.PointingHandCursor : Qt.ArrowCursor
|
cursorShape: root.convergenceMode ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||||
onClicked: desktopButton.toggleDesktop()
|
onClicked: (mouse) => {
|
||||||
|
if (mouse.button === Qt.RightButton) {
|
||||||
|
desktopContextMenu.open()
|
||||||
|
} else {
|
||||||
|
desktopButton.toggleDesktop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onPressAndHold: {
|
||||||
|
desktopContextMenu.open()
|
||||||
|
haptics.buttonVibrate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PC3.Menu {
|
||||||
|
id: desktopContextMenu
|
||||||
|
popupType: T.Popup.Window
|
||||||
|
|
||||||
|
PC3.MenuItem {
|
||||||
|
icon.name: "user-desktop"
|
||||||
|
text: desktopButton.Accessible.name
|
||||||
|
onTriggered: desktopButton.toggleDesktop()
|
||||||
|
}
|
||||||
|
PC3.MenuItem {
|
||||||
|
icon.name: "window-minimize-symbolic"
|
||||||
|
text: i18n("Minimize All Windows")
|
||||||
|
enabled: !WindowPlugin.WindowUtil.isShowingDesktop
|
||||||
|
onTriggered: root.folio.triggerMinimizeAll()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue