Add configurable Plasma panel scroll and click actions
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.plasma.plasmoid
|
||||
import se.ajpanton.panelactions 1.0
|
||||
import "areas.js" as Areas
|
||||
|
||||
PlasmoidItem {
|
||||
id: root
|
||||
readonly property Item panelLayout: {
|
||||
let item = root.parent;
|
||||
while (item) {
|
||||
if (item instanceof GridLayout) return item;
|
||||
item = item.parent;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
Plasmoid.backgroundHints: PlasmaCore.Types.NoBackground
|
||||
Layout.minimumWidth: 0
|
||||
Layout.minimumHeight: 0
|
||||
Layout.preferredWidth: 0
|
||||
Layout.preferredHeight: 0
|
||||
Layout.maximumWidth: 0
|
||||
Layout.maximumHeight: 0
|
||||
preferredRepresentation: fullRepresentation
|
||||
PanelSettings { id: settings }
|
||||
PanelController {
|
||||
active: root.panelLayout !== null && !(Plasmoid.containment.corona?.editMode ?? false)
|
||||
locateArea: (x, y) => Areas.areaAt(root.panelLayout, x, y)
|
||||
scrollActions: ({
|
||||
empty: settings.values.emptyAction,
|
||||
tasks: settings.values.tasksAction,
|
||||
launcher: settings.values.launcherAction,
|
||||
clock: settings.values.clockAction,
|
||||
tray: settings.values.trayAction,
|
||||
other: settings.values.otherAction
|
||||
})
|
||||
clickActions: settings.values
|
||||
onActionRequested: (action, direction) => invoke(action, direction)
|
||||
onClickRequested: slot => {
|
||||
const action = settings.values[slot];
|
||||
if (action === "command" || action === "application") settings.launchClick(slot);
|
||||
else invoke(action, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user