chore: fix dash, drawers, notifs and osd linter warnings
This commit is contained in:
parent
83cd02b90d
commit
53109b28e6
9 changed files with 114 additions and 105 deletions
|
|
@ -12,7 +12,7 @@ Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
required property DrawerVisibilities visibilities
|
required property DrawerVisibilities visibilities
|
||||||
readonly property bool needsKeyboard: content.item?.needsKeyboard ?? false
|
readonly property bool needsKeyboard: (content.item as Content)?.needsKeyboard ?? false
|
||||||
readonly property DashboardState dashState: DashboardState {
|
readonly property DashboardState dashState: DashboardState {
|
||||||
reloadableId: "dashboardState"
|
reloadableId: "dashboardState"
|
||||||
}
|
}
|
||||||
|
|
@ -28,7 +28,7 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
readonly property real nonAnimHeight: state === "visible" ? (content.item?.nonAnimHeight ?? 0) : 0
|
readonly property real nonAnimHeight: state === "visible" ? ((content.item as Content)?.nonAnimHeight ?? 0) : 0
|
||||||
|
|
||||||
visible: height > 0
|
visible: height > 0
|
||||||
implicitHeight: 0
|
implicitHeight: 0
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import Quickshell
|
||||||
import Quickshell.Wayland
|
import Quickshell.Wayland
|
||||||
import Quickshell.Hyprland
|
import Quickshell.Hyprland
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
import QtQuick.Effects
|
import QtQuick.Effects
|
||||||
|
|
||||||
Variants {
|
Variants {
|
||||||
|
|
@ -35,7 +36,7 @@ Variants {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
const mon = Hypr.monitorFor(screen);
|
const mon = Hypr.monitorFor(screen);
|
||||||
if (mon?.lastIpcObject?.specialWorkspace?.name || mon?.activeWorkspace?.lastIpcObject?.windows > 0)
|
if (mon?.lastIpcObject.specialWorkspace?.name || mon?.activeWorkspace?.lastIpcObject.windows > 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
const thresholds = [];
|
const thresholds = [];
|
||||||
|
|
@ -90,7 +91,7 @@ Variants {
|
||||||
HyprlandFocusGrab {
|
HyprlandFocusGrab {
|
||||||
id: focusGrab
|
id: focusGrab
|
||||||
|
|
||||||
active: (visibilities.launcher && Config.launcher.enabled) || (visibilities.session && Config.session.enabled) || (visibilities.sidebar && Config.sidebar.enabled) || (!Config.dashboard.showOnHover && visibilities.dashboard && Config.dashboard.enabled) || (panels.popouts.currentName.startsWith("traymenu") && panels.popouts.current?.depth > 1)
|
active: (visibilities.launcher && Config.launcher.enabled) || (visibilities.session && Config.session.enabled) || (visibilities.sidebar && Config.sidebar.enabled) || (!Config.dashboard.showOnHover && visibilities.dashboard && Config.dashboard.enabled) || (panels.popouts.currentName.startsWith("traymenu") && (panels.popouts.current as StackView)?.depth > 1)
|
||||||
windows: [win]
|
windows: [win]
|
||||||
onCleared: {
|
onCleared: {
|
||||||
visibilities.launcher = false;
|
visibilities.launcher = false;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import qs.components.containers
|
import qs.components.containers
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import qs.modules.bar as Bar
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
||||||
|
|
@ -9,7 +10,7 @@ Scope {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
required property ShellScreen screen
|
required property ShellScreen screen
|
||||||
required property Item bar
|
required property Bar.BarWrapper bar
|
||||||
|
|
||||||
ExclusionZone {
|
ExclusionZone {
|
||||||
anchors.left: true
|
anchors.left: true
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
import qs.components
|
import qs.components
|
||||||
import qs.components.controls
|
import qs.components.controls
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import qs.modules.bar as Bar
|
||||||
import qs.modules.bar.popouts as BarPopouts
|
import qs.modules.bar.popouts as BarPopouts
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
|
||||||
CustomMouseArea {
|
CustomMouseArea {
|
||||||
id: root
|
id: root
|
||||||
|
|
@ -12,7 +14,7 @@ CustomMouseArea {
|
||||||
required property BarPopouts.Wrapper popouts
|
required property BarPopouts.Wrapper popouts
|
||||||
required property DrawerVisibilities visibilities
|
required property DrawerVisibilities visibilities
|
||||||
required property Panels panels
|
required property Panels panels
|
||||||
required property Item bar
|
required property Bar.BarWrapper bar
|
||||||
|
|
||||||
property point dragStart
|
property point dragStart
|
||||||
property bool dashboardShortcutActive
|
property bool dashboardShortcutActive
|
||||||
|
|
@ -69,7 +71,7 @@ CustomMouseArea {
|
||||||
if (!utilitiesShortcutActive)
|
if (!utilitiesShortcutActive)
|
||||||
visibilities.utilities = false;
|
visibilities.utilities = false;
|
||||||
|
|
||||||
if (!popouts.currentName.startsWith("traymenu") || (popouts.current?.depth ?? 0) <= 1) {
|
if (!popouts.currentName.startsWith("traymenu") || ((popouts.current as StackView)?.depth ?? 0) <= 1) {
|
||||||
popouts.hasCurrent = false;
|
popouts.hasCurrent = false;
|
||||||
bar.closeTray();
|
bar.closeTray();
|
||||||
}
|
}
|
||||||
|
|
@ -202,7 +204,7 @@ CustomMouseArea {
|
||||||
// Show popouts on hover
|
// Show popouts on hover
|
||||||
if (x < bar.implicitWidth) {
|
if (x < bar.implicitWidth) {
|
||||||
bar.checkPopout(y);
|
bar.checkPopout(y);
|
||||||
} else if ((!popouts.currentName.startsWith("traymenu") || (popouts.current?.depth ?? 0) <= 1) && !inLeftPanel(panels.popouts, x, y)) {
|
} else if ((!popouts.currentName.startsWith("traymenu") || ((popouts.current as StackView)?.depth ?? 0) <= 1) && !inLeftPanel(panels.popouts, x, y)) {
|
||||||
popouts.hasCurrent = false;
|
popouts.hasCurrent = false;
|
||||||
bar.closeTray();
|
bar.closeTray();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import qs.modules.notifications as Notifications
|
||||||
import qs.modules.session as Session
|
import qs.modules.session as Session
|
||||||
import qs.modules.launcher as Launcher
|
import qs.modules.launcher as Launcher
|
||||||
import qs.modules.dashboard as Dashboard
|
import qs.modules.dashboard as Dashboard
|
||||||
|
import qs.modules.bar as Bar
|
||||||
import qs.modules.bar.popouts as BarPopouts
|
import qs.modules.bar.popouts as BarPopouts
|
||||||
import qs.modules.utilities as Utilities
|
import qs.modules.utilities as Utilities
|
||||||
import qs.modules.utilities.toasts as Toasts
|
import qs.modules.utilities.toasts as Toasts
|
||||||
|
|
@ -17,7 +18,7 @@ Item {
|
||||||
|
|
||||||
required property ShellScreen screen
|
required property ShellScreen screen
|
||||||
required property DrawerVisibilities visibilities
|
required property DrawerVisibilities visibilities
|
||||||
required property Item bar
|
required property Bar.BarWrapper bar
|
||||||
|
|
||||||
readonly property alias osd: osd
|
readonly property alias osd: osd
|
||||||
readonly property alias notifications: notifications
|
readonly property alias notifications: notifications
|
||||||
|
|
@ -49,7 +50,9 @@ Item {
|
||||||
id: notifications
|
id: notifications
|
||||||
|
|
||||||
visibilities: root.visibilities
|
visibilities: root.visibilities
|
||||||
panels: root
|
sidebarPanel: sidebar
|
||||||
|
osdPanel: osd
|
||||||
|
sessionPanel: session
|
||||||
|
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,8 @@ Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
required property DrawerVisibilities visibilities
|
required property DrawerVisibilities visibilities
|
||||||
required property Item panels
|
required property Item osdPanel
|
||||||
|
required property Item sessionPanel
|
||||||
readonly property int padding: Appearance.padding.large
|
readonly property int padding: Appearance.padding.large
|
||||||
|
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
|
|
@ -26,23 +27,21 @@ Item {
|
||||||
|
|
||||||
let height = (count - 1) * Appearance.spacing.smaller;
|
let height = (count - 1) * Appearance.spacing.smaller;
|
||||||
for (let i = 0; i < count; i++)
|
for (let i = 0; i < count; i++)
|
||||||
height += list.itemAtIndex(i)?.nonAnimHeight ?? 0;
|
height += (list.itemAtIndex(i) as NotifWrapper)?.nonAnimHeight ?? 0;
|
||||||
|
|
||||||
if (visibilities && panels) {
|
if (visibilities.osd) {
|
||||||
if (visibilities.osd) {
|
const h = osdPanel.y - Config.border.rounding * 2 - padding * 2;
|
||||||
const h = panels.osd.y - Config.border.rounding * 2 - padding * 2;
|
if (height > h)
|
||||||
if (height > h)
|
height = h;
|
||||||
height = h;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (visibilities.session) {
|
|
||||||
const h = panels.session.y - Config.border.rounding * 2 - padding * 2;
|
|
||||||
if (height > h)
|
|
||||||
height = h;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.min((QsWindow.window?.screen?.height ?? 0) - Config.border.thickness * 2, height + padding * 2);
|
if (visibilities.session) {
|
||||||
|
const h = sessionPanel.y - Config.border.rounding * 2 - padding * 2;
|
||||||
|
if (height > h)
|
||||||
|
height = h;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.min(((QsWindow.window as QsWindow)?.screen?.height ?? 0) - Config.border.thickness * 2, height + padding * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
ClippingWrapperRectangle {
|
ClippingWrapperRectangle {
|
||||||
|
|
@ -63,79 +62,9 @@ Item {
|
||||||
|
|
||||||
orientation: Qt.Vertical
|
orientation: Qt.Vertical
|
||||||
spacing: 0
|
spacing: 0
|
||||||
cacheBuffer: QsWindow.window?.screen.height ?? 0
|
cacheBuffer: (QsWindow.window as QsWindow)?.screen.height ?? 0
|
||||||
|
|
||||||
delegate: Item {
|
delegate: NotifWrapper {}
|
||||||
id: wrapper
|
|
||||||
|
|
||||||
required property NotifData modelData
|
|
||||||
required property int index
|
|
||||||
readonly property alias nonAnimHeight: notif.nonAnimHeight
|
|
||||||
property int idx
|
|
||||||
|
|
||||||
onIndexChanged: {
|
|
||||||
if (index !== -1)
|
|
||||||
idx = index;
|
|
||||||
}
|
|
||||||
|
|
||||||
implicitWidth: notif.implicitWidth
|
|
||||||
implicitHeight: notif.implicitHeight + (idx === 0 ? 0 : Appearance.spacing.smaller)
|
|
||||||
|
|
||||||
ListView.onRemove: removeAnim.start()
|
|
||||||
|
|
||||||
SequentialAnimation {
|
|
||||||
id: removeAnim
|
|
||||||
|
|
||||||
PropertyAction {
|
|
||||||
target: wrapper
|
|
||||||
property: "ListView.delayRemove"
|
|
||||||
value: true
|
|
||||||
}
|
|
||||||
PropertyAction {
|
|
||||||
target: wrapper
|
|
||||||
property: "enabled"
|
|
||||||
value: false
|
|
||||||
}
|
|
||||||
PropertyAction {
|
|
||||||
target: wrapper
|
|
||||||
property: "implicitHeight"
|
|
||||||
value: 0
|
|
||||||
}
|
|
||||||
PropertyAction {
|
|
||||||
target: wrapper
|
|
||||||
property: "z"
|
|
||||||
value: 1
|
|
||||||
}
|
|
||||||
Anim {
|
|
||||||
target: notif
|
|
||||||
property: "x"
|
|
||||||
to: (notif.x >= 0 ? Config.notifs.sizes.width : -Config.notifs.sizes.width) * 2
|
|
||||||
duration: Appearance.anim.durations.normal
|
|
||||||
easing.bezierCurve: Appearance.anim.curves.emphasized
|
|
||||||
}
|
|
||||||
PropertyAction {
|
|
||||||
target: wrapper
|
|
||||||
property: "ListView.delayRemove"
|
|
||||||
value: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ClippingRectangle {
|
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.topMargin: wrapper.idx === 0 ? 0 : Appearance.spacing.smaller
|
|
||||||
|
|
||||||
color: "transparent"
|
|
||||||
radius: notif.radius
|
|
||||||
implicitWidth: notif.implicitWidth
|
|
||||||
implicitHeight: notif.implicitHeight
|
|
||||||
|
|
||||||
Notification {
|
|
||||||
id: notif
|
|
||||||
|
|
||||||
modelData: wrapper.modelData
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
move: Transition {
|
move: Transition {
|
||||||
Anim {
|
Anim {
|
||||||
|
|
@ -160,7 +89,7 @@ Item {
|
||||||
|
|
||||||
let height = 0;
|
let height = 0;
|
||||||
for (let i = 0; i < count; i++) {
|
for (let i = 0; i < count; i++) {
|
||||||
height += (list.itemAtIndex(i)?.nonAnimHeight ?? 0) + Appearance.spacing.smaller;
|
height += ((list.itemAtIndex(i) as NotifWrapper)?.nonAnimHeight ?? 0) + Appearance.spacing.smaller;
|
||||||
|
|
||||||
if (height - Appearance.spacing.smaller >= scrollY)
|
if (height - Appearance.spacing.smaller >= scrollY)
|
||||||
return i;
|
return i;
|
||||||
|
|
@ -181,7 +110,7 @@ Item {
|
||||||
|
|
||||||
let height = 0;
|
let height = 0;
|
||||||
for (let i = count - 1; i >= 0; i--) {
|
for (let i = count - 1; i >= 0; i--) {
|
||||||
height += (list.itemAtIndex(i)?.nonAnimHeight ?? 0) + Appearance.spacing.smaller;
|
height += ((list.itemAtIndex(i) as NotifWrapper)?.nonAnimHeight ?? 0) + Appearance.spacing.smaller;
|
||||||
|
|
||||||
if (height - Appearance.spacing.smaller >= scrollY)
|
if (height - Appearance.spacing.smaller >= scrollY)
|
||||||
return count - i - 1;
|
return count - i - 1;
|
||||||
|
|
@ -197,6 +126,78 @@ Item {
|
||||||
Anim {}
|
Anim {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
component NotifWrapper: Item {
|
||||||
|
id: wrapper
|
||||||
|
|
||||||
|
required property NotifData modelData
|
||||||
|
required property int index
|
||||||
|
readonly property alias nonAnimHeight: notif.nonAnimHeight
|
||||||
|
property int idx
|
||||||
|
|
||||||
|
onIndexChanged: {
|
||||||
|
if (index !== -1)
|
||||||
|
idx = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
implicitWidth: notif.implicitWidth
|
||||||
|
implicitHeight: notif.implicitHeight + (idx === 0 ? 0 : Appearance.spacing.smaller)
|
||||||
|
|
||||||
|
ListView.onRemove: removeAnim.start()
|
||||||
|
|
||||||
|
SequentialAnimation {
|
||||||
|
id: removeAnim
|
||||||
|
|
||||||
|
PropertyAction {
|
||||||
|
target: wrapper
|
||||||
|
property: "ListView.delayRemove"
|
||||||
|
value: true
|
||||||
|
}
|
||||||
|
PropertyAction {
|
||||||
|
target: wrapper
|
||||||
|
property: "enabled"
|
||||||
|
value: false
|
||||||
|
}
|
||||||
|
PropertyAction {
|
||||||
|
target: wrapper
|
||||||
|
property: "implicitHeight"
|
||||||
|
value: 0
|
||||||
|
}
|
||||||
|
PropertyAction {
|
||||||
|
target: wrapper
|
||||||
|
property: "z"
|
||||||
|
value: 1
|
||||||
|
}
|
||||||
|
Anim {
|
||||||
|
target: notif
|
||||||
|
property: "x"
|
||||||
|
to: (notif.x >= 0 ? Config.notifs.sizes.width : -Config.notifs.sizes.width) * 2
|
||||||
|
duration: Appearance.anim.durations.normal
|
||||||
|
easing.bezierCurve: Appearance.anim.curves.emphasized
|
||||||
|
}
|
||||||
|
PropertyAction {
|
||||||
|
target: wrapper
|
||||||
|
property: "ListView.delayRemove"
|
||||||
|
value: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ClippingRectangle {
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.topMargin: wrapper.idx === 0 ? 0 : Appearance.spacing.smaller
|
||||||
|
|
||||||
|
color: "transparent"
|
||||||
|
radius: notif.radius
|
||||||
|
implicitWidth: notif.implicitWidth
|
||||||
|
implicitHeight: notif.implicitHeight
|
||||||
|
|
||||||
|
Notification {
|
||||||
|
id: notif
|
||||||
|
|
||||||
|
modelData: wrapper.modelData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
component Anim: NumberAnimation {
|
component Anim: NumberAnimation {
|
||||||
duration: Appearance.anim.durations.expressiveDefaultSpatial
|
duration: Appearance.anim.durations.expressiveDefaultSpatial
|
||||||
easing.type: Easing.BezierSpline
|
easing.type: Easing.BezierSpline
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,13 @@ import QtQuick
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
required property var visibilities
|
required property DrawerVisibilities visibilities
|
||||||
required property Item panels
|
required property Item sidebarPanel
|
||||||
|
property alias osdPanel: content.osdPanel
|
||||||
|
property alias sessionPanel: content.sessionPanel
|
||||||
|
|
||||||
visible: height > 0
|
visible: height > 0
|
||||||
implicitWidth: Math.max(panels.sidebar.width, content.implicitWidth)
|
implicitWidth: Math.max(sidebarPanel.width, content.implicitWidth)
|
||||||
implicitHeight: content.implicitHeight
|
implicitHeight: content.implicitHeight
|
||||||
|
|
||||||
states: State {
|
states: State {
|
||||||
|
|
@ -34,6 +36,5 @@ Item {
|
||||||
id: content
|
id: content
|
||||||
|
|
||||||
visibilities: root.visibilities
|
visibilities: root.visibilities
|
||||||
panels: root.panels
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
required property Brightness.Monitor monitor
|
required property Brightness.Monitor monitor
|
||||||
required property var visibilities
|
required property DrawerVisibilities visibilities
|
||||||
|
|
||||||
required property real volume
|
required property real volume
|
||||||
required property bool muted
|
required property bool muted
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
required property ShellScreen screen
|
required property ShellScreen screen
|
||||||
required property var visibilities
|
required property DrawerVisibilities visibilities
|
||||||
property bool hovered
|
property bool hovered
|
||||||
readonly property Brightness.Monitor monitor: Brightness.getMonitorForScreen(root.screen)
|
readonly property Brightness.Monitor monitor: Brightness.getMonitorForScreen(root.screen)
|
||||||
readonly property bool shouldBeActive: visibilities.osd && Config.osd.enabled && !(visibilities.utilities && Config.utilities.enabled)
|
readonly property bool shouldBeActive: visibilities.osd && Config.osd.enabled && !(visibilities.utilities && Config.utilities.enabled)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue