root panel window handles focus
This commit is contained in:
parent
bd826c14ac
commit
f14cf072e9
5 changed files with 31 additions and 36 deletions
|
|
@ -1,15 +1,36 @@
|
||||||
import qs.config
|
import qs.config
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import Quickshell
|
import Quickshell
|
||||||
|
import Quickshell.Hyprland
|
||||||
import Quickshell.Wayland
|
import Quickshell.Wayland
|
||||||
|
|
||||||
PanelWindow {
|
PanelWindow {
|
||||||
id: window
|
id: window
|
||||||
|
|
||||||
required property string name
|
|
||||||
property alias background: background
|
property alias background: background
|
||||||
|
required property string name
|
||||||
|
property bool canFocus: true
|
||||||
|
property bool focused: false
|
||||||
|
|
||||||
WlrLayershell.namespace: `lux-${name}`
|
WlrLayershell.namespace: `lux-${name}`
|
||||||
|
WlrLayershell.layer: WlrLayer.Top
|
||||||
|
WlrLayershell.keyboardFocus: window.visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None
|
||||||
|
|
||||||
|
onVisibleChanged: {
|
||||||
|
if (!canFocus)
|
||||||
|
return;
|
||||||
|
focused = visible;
|
||||||
|
}
|
||||||
|
HyprlandFocusGrab {
|
||||||
|
active: window.focused
|
||||||
|
windows: [window]
|
||||||
|
onCleared: {
|
||||||
|
if (!window.canFocus)
|
||||||
|
return;
|
||||||
|
window.focused = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,6 @@ import qs.services
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import Quickshell.Hyprland
|
|
||||||
import Quickshell.Wayland
|
|
||||||
|
|
||||||
StyledPanelWindow {
|
StyledPanelWindow {
|
||||||
id: window
|
id: window
|
||||||
|
|
@ -17,15 +15,8 @@ StyledPanelWindow {
|
||||||
implicitHeight: 400
|
implicitHeight: 400
|
||||||
background.color: Styling.theme.base200
|
background.color: Styling.theme.base200
|
||||||
|
|
||||||
WlrLayershell.layer: WlrLayer.Top
|
onFocusedChanged: {
|
||||||
WlrLayershell.keyboardFocus: window.visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None
|
Visibility.configuration = focused;
|
||||||
|
|
||||||
HyprlandFocusGrab {
|
|
||||||
active: Visibility.configuration
|
|
||||||
windows: [window]
|
|
||||||
onCleared: {
|
|
||||||
Visibility.configuration = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledTabBar {
|
StyledTabBar {
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ StyledPanelWindow {
|
||||||
list.currentIndex = 0;
|
list.currentIndex = 0;
|
||||||
search.clear();
|
search.clear();
|
||||||
}
|
}
|
||||||
|
Visibility.launcher = focused;
|
||||||
}
|
}
|
||||||
implicitWidth: rect.width
|
implicitWidth: rect.width
|
||||||
implicitHeight: rect.height
|
implicitHeight: rect.height
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,9 @@ pragma ComponentBehavior: Bound
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.config
|
import qs.config
|
||||||
import qs.services
|
import qs.services
|
||||||
import Quickshell.Hyprland
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import Quickshell.Io
|
import Quickshell.Io
|
||||||
import Quickshell.Wayland
|
|
||||||
import Quickshell.Widgets
|
import Quickshell.Widgets
|
||||||
|
|
||||||
StyledPanelWindow {
|
StyledPanelWindow {
|
||||||
|
|
@ -18,26 +16,19 @@ StyledPanelWindow {
|
||||||
implicitWidth: rect.width
|
implicitWidth: rect.width
|
||||||
implicitHeight: rect.height
|
implicitHeight: rect.height
|
||||||
|
|
||||||
WlrLayershell.layer: WlrLayer.Top
|
|
||||||
WlrLayershell.keyboardFocus: root.visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None
|
|
||||||
|
|
||||||
Process {
|
Process {
|
||||||
id: process
|
id: process
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onFocusedChanged: {
|
||||||
|
Visibility.powermenu = focused;
|
||||||
|
}
|
||||||
|
|
||||||
WrapperItem {
|
WrapperItem {
|
||||||
id: rect
|
id: rect
|
||||||
|
|
||||||
margin: 14
|
margin: 14
|
||||||
|
|
||||||
HyprlandFocusGrab {
|
|
||||||
active: Visibility.powermenu
|
|
||||||
windows: [root]
|
|
||||||
onCleared: {
|
|
||||||
Visibility.powermenu = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
StyledListView {
|
StyledListView {
|
||||||
id: list
|
id: list
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@ import qs.config
|
||||||
import qs.services
|
import qs.services
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import Quickshell.Hyprland
|
|
||||||
import Quickshell.Wayland
|
|
||||||
|
|
||||||
StyledPanelWindow {
|
StyledPanelWindow {
|
||||||
id: root
|
id: root
|
||||||
|
|
@ -18,15 +16,8 @@ StyledPanelWindow {
|
||||||
|
|
||||||
background.color: Styling.theme.base200
|
background.color: Styling.theme.base200
|
||||||
|
|
||||||
WlrLayershell.layer: WlrLayer.Top
|
onFocusedChanged: {
|
||||||
WlrLayershell.keyboardFocus: root.visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None
|
Visibility.storybook = focused;
|
||||||
|
|
||||||
HyprlandFocusGrab {
|
|
||||||
active: Visibility.storybook
|
|
||||||
windows: [root]
|
|
||||||
onCleared: {
|
|
||||||
Visibility.storybook = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledTabBar {
|
StyledTabBar {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue