Improves focused-window geometry so chrome placement stays stable across workspaces and floating containers. WindowService now exposes focused workspace X/Y, resolves workspace by name, and publishes those offsets with focused geometry. The Sway backend now tracks the active floating frame through recursion and consistently derives frame/deco/content rects from that frame. QML chrome placement was updated to use workspace-relative coordinates and simpler direct margins (removing interpolation behaviors), with safer title-bar height handling for vertical centering.
43 lines
1.5 KiB
QML
43 lines
1.5 KiB
QML
import QtQuick
|
|
import QtQuick.Window
|
|
import org.kde.layershell 1.0 as LayerShell
|
|
import Nebula.UI
|
|
import Nebula.Windows
|
|
|
|
Window {
|
|
id: root
|
|
|
|
readonly property bool active: WindowService.hasFocusedWindow
|
|
&& !WindowService.focusedWindowFullscreen
|
|
&& !ShellState.launcherOpen
|
|
readonly property int chromeX: WindowService.focusedWindowX
|
|
+ Theme.windowChromeInset
|
|
- WindowService.focusedWorkspaceX
|
|
readonly property int chromeY: {
|
|
const barH = WindowService.focusedWindowTitleBarHeight
|
|
const centered = WindowService.focusedWindowTitleBarY
|
|
+ Math.max(0, Math.round((barH - height) / 2))
|
|
return centered - WindowService.focusedWorkspaceY
|
|
}
|
|
|
|
title: qsTr("Nebula Window Chrome")
|
|
color: "transparent"
|
|
flags: Qt.FramelessWindowHint | Qt.WindowDoesNotAcceptFocus
|
|
visible: root.active
|
|
width: Math.max(1, controls.implicitWidth)
|
|
height: Math.max(1, controls.implicitHeight)
|
|
|
|
LayerShell.Window.scope: "nebula-window-chrome"
|
|
LayerShell.Window.layer: LayerShell.Window.LayerTop
|
|
LayerShell.Window.anchors: LayerShell.Window.AnchorLeft | LayerShell.Window.AnchorTop
|
|
LayerShell.Window.margins.left: Math.max(0, chromeX)
|
|
LayerShell.Window.margins.top: Math.max(0, chromeY)
|
|
LayerShell.Window.exclusionZone: 0
|
|
LayerShell.Window.keyboardInteractivity: LayerShell.Window.KeyboardInteractivityNone
|
|
|
|
WindowControls {
|
|
id: controls
|
|
anchors.centerIn: parent
|
|
}
|
|
}
|