mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-06-11 00:47:22 +00:00
Block native window menu during tiling
This commit is contained in:
parent
e951690c91
commit
d03f3585a3
2 changed files with 33 additions and 2 deletions
|
|
@ -4,6 +4,7 @@
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import org.kde.kwin.decoration
|
import org.kde.kwin.decoration
|
||||||
import org.kde.plasma.private.mobileshell as MobileShell
|
import org.kde.plasma.private.mobileshell as MobileShell
|
||||||
|
import org.kde.plasma.private.mobileshell.shellsettingsplugin as ShellSettings
|
||||||
|
|
||||||
Decoration {
|
Decoration {
|
||||||
id: root
|
id: root
|
||||||
|
|
@ -21,6 +22,9 @@ Decoration {
|
||||||
readonly property int btnSideMargin: 12
|
readonly property int btnSideMargin: 12
|
||||||
readonly property int cornerRadius: decoration.client.maximized ? 0 : 8
|
readonly property int cornerRadius: decoration.client.maximized ? 0 : 8
|
||||||
readonly property int shortAnimationDuration: MobileShell.Motion.duration(MobileShell.Motion.EffectsFast)
|
readonly property int shortAnimationDuration: MobileShell.Motion.duration(MobileShell.Motion.EffectsFast)
|
||||||
|
readonly property bool windowMenuAllowed: !ShellSettings.Settings.convergenceModeEnabled
|
||||||
|
|| ShellSettings.Settings.gamingModeEnabled
|
||||||
|
|| !ShellSettings.Settings.dynamicTilingEnabled
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
borders.top = barHeight;
|
borders.top = barHeight;
|
||||||
|
|
@ -115,6 +119,14 @@ Decoration {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
z: 1
|
||||||
|
enabled: !root.windowMenuAllowed
|
||||||
|
acceptedButtons: Qt.RightButton
|
||||||
|
onPressed: (mouse) => { mouse.accepted = true }
|
||||||
|
}
|
||||||
|
|
||||||
Component.onCompleted: decoration.installTitleItem(titleRow)
|
Component.onCompleted: decoration.installTitleItem(titleRow)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -129,9 +141,10 @@ Decoration {
|
||||||
case DecorationOptions.DecorationButtonClose:
|
case DecorationOptions.DecorationButtonClose:
|
||||||
case DecorationOptions.DecorationButtonMinimize:
|
case DecorationOptions.DecorationButtonMinimize:
|
||||||
case DecorationOptions.DecorationButtonMaximizeRestore:
|
case DecorationOptions.DecorationButtonMaximizeRestore:
|
||||||
|
return true;
|
||||||
case DecorationOptions.DecorationButtonMenu:
|
case DecorationOptions.DecorationButtonMenu:
|
||||||
case DecorationOptions.DecorationButtonApplicationMenu:
|
case DecorationOptions.DecorationButtonApplicationMenu:
|
||||||
return true;
|
return root.windowMenuAllowed;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ effect_qml="$repo_root/kwin/effects/shift-tile-preview/contents/ui/main.qml"
|
||||||
effect_metadata="$repo_root/kwin/effects/shift-tile-preview/metadata.json"
|
effect_metadata="$repo_root/kwin/effects/shift-tile-preview/metadata.json"
|
||||||
effects_cmake="$repo_root/kwin/effects/CMakeLists.txt"
|
effects_cmake="$repo_root/kwin/effects/CMakeLists.txt"
|
||||||
tiling_script="$repo_root/kwin/scripts/shift-tiling/contents/ui/main.qml"
|
tiling_script="$repo_root/kwin/scripts/shift-tiling/contents/ui/main.qml"
|
||||||
|
decoration_qml="$repo_root/kwin/decorations/org.shift.decoration/contents/ui/main.qml"
|
||||||
env_config="$repo_root/envmanager/config.h"
|
env_config="$repo_root/envmanager/config.h"
|
||||||
|
|
||||||
require_line() {
|
require_line() {
|
||||||
|
|
@ -60,6 +61,7 @@ require_line "$tiling_script" "readonly property real stablePrimaryRatio: 0.58"
|
||||||
require_line "$tiling_script" "readonly property var layoutModes: [\"master\", \"columns\", \"rows\"]"
|
require_line "$tiling_script" "readonly property var layoutModes: [\"master\", \"columns\", \"rows\"]"
|
||||||
require_line "$tiling_script" "function desktopKey(desktop)"
|
require_line "$tiling_script" "function desktopKey(desktop)"
|
||||||
require_line "$tiling_script" "function desktopForWindow(win)"
|
require_line "$tiling_script" "function desktopForWindow(win)"
|
||||||
|
require_line "$tiling_script" "function normalizeWindowDesktopScope(win)"
|
||||||
require_line "$tiling_script" "function layoutKeyFor(outputName, desktop)"
|
require_line "$tiling_script" "function layoutKeyFor(outputName, desktop)"
|
||||||
require_line "$tiling_script" "function desktopForLayoutKey(outputName)"
|
require_line "$tiling_script" "function desktopForLayoutKey(outputName)"
|
||||||
require_line "$tiling_script" "function layoutKeyForWindow(win)"
|
require_line "$tiling_script" "function layoutKeyForWindow(win)"
|
||||||
|
|
@ -80,6 +82,17 @@ require_line "$tiling_script" "function onActiveWindowChanged()"
|
||||||
require_line "$tiling_script" "root.rememberFocusedWindow(KWinComponents.Workspace.activeWindow)"
|
require_line "$tiling_script" "root.rememberFocusedWindow(KWinComponents.Workspace.activeWindow)"
|
||||||
require_line "$tiling_script" "win.desktops = [desktop]"
|
require_line "$tiling_script" "win.desktops = [desktop]"
|
||||||
require_line "$tiling_script" "win.desktopsChanged.connect"
|
require_line "$tiling_script" "win.desktopsChanged.connect"
|
||||||
|
require_line "$tiling_script" "function dynamicTilingOwnsWindow(win)"
|
||||||
|
require_line "$tiling_script" "function normalizeNativeWindowOperationState(win)"
|
||||||
|
require_line "$tiling_script" "function handleNativeWindowOperationStateChange(win)"
|
||||||
|
require_line "$tiling_script" "function adoptWindow(win)"
|
||||||
|
require_line "$tiling_script" "win.maximizeModeChanged.connect"
|
||||||
|
require_line "$tiling_script" "win.fullScreenChanged.connect"
|
||||||
|
require_line "$tiling_script" "win.noBorderChanged.connect"
|
||||||
|
require_line "$tiling_script" "win.keepAboveChanged.connect"
|
||||||
|
require_line "$tiling_script" "win.keepBelowChanged.connect"
|
||||||
|
require_line "$tiling_script" "property bool dragNativeResize: false"
|
||||||
|
require_line "$tiling_script" "if (dragNativeResize && dragSourceScreen && dragSourceIndex >= 0)"
|
||||||
require_line "$tiling_script" "function orderedWindowsForScreen(outputName)"
|
require_line "$tiling_script" "function orderedWindowsForScreen(outputName)"
|
||||||
require_line "$tiling_script" "function buildStableStack(windows, startIndex)"
|
require_line "$tiling_script" "function buildStableStack(windows, startIndex)"
|
||||||
require_line "$tiling_script" "function buildLinearLayout(windows, startIndex, orientation)"
|
require_line "$tiling_script" "function buildLinearLayout(windows, startIndex, orientation)"
|
||||||
|
|
@ -93,7 +106,7 @@ require_line "$tiling_script" "swapDraggedWindow(dragSwapTarget)"
|
||||||
require_line "$tiling_script" "setStableLayout(outputName, windows)"
|
require_line "$tiling_script" "setStableLayout(outputName, windows)"
|
||||||
require_line "$tiling_script" "setStableLayout(outputName, remaining)"
|
require_line "$tiling_script" "setStableLayout(outputName, remaining)"
|
||||||
require_line "$tiling_script" "retileScreen(name)"
|
require_line "$tiling_script" "retileScreen(name)"
|
||||||
require_line "$tiling_script" "retileScreen(targetName)"
|
require_line "$tiling_script" "markLayoutChanged(transaction, targetName)"
|
||||||
require_line "$tiling_script" "function promoteWindow(win)"
|
require_line "$tiling_script" "function promoteWindow(win)"
|
||||||
require_line "$tiling_script" "setStableLayout(outputName, reordered)"
|
require_line "$tiling_script" "setStableLayout(outputName, reordered)"
|
||||||
require_line "$tiling_script" "name: \"SHIFT Tiling Promote Primary\""
|
require_line "$tiling_script" "name: \"SHIFT Tiling Promote Primary\""
|
||||||
|
|
@ -101,6 +114,11 @@ require_line "$tiling_script" "sequence: \"Meta+Shift+Return\""
|
||||||
require_line "$tiling_script" "name: \"SHIFT Tiling Cycle Layout\""
|
require_line "$tiling_script" "name: \"SHIFT Tiling Cycle Layout\""
|
||||||
require_line "$tiling_script" "sequence: \"Meta+Shift+T\""
|
require_line "$tiling_script" "sequence: \"Meta+Shift+T\""
|
||||||
|
|
||||||
|
require_line "$decoration_qml" "readonly property bool windowMenuAllowed: !ShellSettings.Settings.convergenceModeEnabled"
|
||||||
|
require_line "$decoration_qml" "return root.windowMenuAllowed;"
|
||||||
|
require_line "$decoration_qml" "enabled: !root.windowMenuAllowed"
|
||||||
|
require_line "$decoration_qml" "acceptedButtons: Qt.RightButton"
|
||||||
|
|
||||||
reject_line "$tiling_script" "targetKey = lastLeafKey(rootNode)"
|
reject_line "$tiling_script" "targetKey = lastLeafKey(rootNode)"
|
||||||
reject_line "$tiling_script" "function lastLeafKey(node)"
|
reject_line "$tiling_script" "function lastLeafKey(node)"
|
||||||
reject_line "$tiling_script" "win.output.name !== outputName"
|
reject_line "$tiling_script" "win.output.name !== outputName"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue