mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-06-11 00:47:22 +00:00
Fit action drawer surface
This commit is contained in:
parent
ae3319b120
commit
c38b32042b
3 changed files with 41 additions and 22 deletions
|
|
@ -26,6 +26,14 @@ Item {
|
|||
readonly property real maximizedQuickSettingsOffset: contentContainerLoader.maximizedQuickSettingsOffset
|
||||
|
||||
readonly property bool swipeAreaMoving: swipeAreaBase.moving || swipeAreaPortrait.moving
|
||||
readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled
|
||||
readonly property real convergenceFrameThickness: MobileShell.Constants.convergenceWorkspaceFrameThickness
|
||||
readonly property real convergenceSurfaceTopInset: MobileShell.Constants.topPanelHeight
|
||||
readonly property real convergenceSurfaceBottomInset: MobileShell.Constants.convergenceDockHeight + convergenceFrameThickness
|
||||
readonly property real convergenceSurfaceSideInset: 0
|
||||
readonly property real convergenceSurfaceWidth: Math.max(0, width - convergenceSurfaceSideInset * 2)
|
||||
readonly property real convergenceSurfaceHeight: Math.max(0, height - convergenceSurfaceTopInset - convergenceSurfaceBottomInset)
|
||||
readonly property real convergenceNotificationRightMargin: Math.max(convergenceSurfaceSideInset, width - (convergenceSurfaceSideInset + convergenceSurfaceWidth * 0.5))
|
||||
|
||||
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||
Kirigami.Theme.inherit: false
|
||||
|
|
@ -109,9 +117,9 @@ Item {
|
|||
opacity: Math.max(0, Math.min(root.brightnessPressedValue, actionDrawer.offsetResistance / root.minimizedQuickSettingsOffset))
|
||||
|
||||
anchors {
|
||||
topMargin: notificationDrawer.height + 1
|
||||
leftMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (notificationDrawer.isConvergence ? Kirigami.Units.smallSpacing : 10)
|
||||
rightMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (notificationDrawer.isConvergence ? parent.width * 0.5 : notificationDrawer.notificationWidget.anchors.rightMargin + Kirigami.Units.gridUnit - notificationDrawer.anchors.leftMargin + 370)
|
||||
topMargin: notificationDrawer.y + notificationDrawer.height + 1
|
||||
leftMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (notificationDrawer.isConvergence ? root.convergenceSurfaceSideInset : 10)
|
||||
rightMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (notificationDrawer.isConvergence ? root.convergenceNotificationRightMargin : notificationDrawer.notificationWidget.anchors.rightMargin + Kirigami.Units.gridUnit - notificationDrawer.anchors.leftMargin + 370)
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
|
|
@ -164,7 +172,7 @@ Item {
|
|||
NotificationDrawer {
|
||||
id: notificationDrawer
|
||||
|
||||
readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled
|
||||
readonly property bool isConvergence: root.isConvergence
|
||||
|
||||
swipeArea: swipeAreaPortrait
|
||||
actionDrawer: root.actionDrawer
|
||||
|
|
@ -179,13 +187,13 @@ Item {
|
|||
top: parent.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
topMargin: isConvergence ? Kirigami.Units.smallSpacing : 0
|
||||
rightMargin: root.actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? parent.width * 0.5 : 360)
|
||||
leftMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? Kirigami.Units.smallSpacing : notificationDrawer.minWidthHeight * 0.06)
|
||||
topMargin: isConvergence ? root.convergenceSurfaceTopInset : 0
|
||||
rightMargin: root.actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? root.convergenceNotificationRightMargin : 360)
|
||||
leftMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? root.convergenceSurfaceSideInset : notificationDrawer.minWidthHeight * 0.06)
|
||||
}
|
||||
|
||||
// In convergence, cap the height so it doesn't stretch full-screen
|
||||
maximumHeight: isConvergence ? root.height * 0.6 : -1
|
||||
maximumHeight: isConvergence ? root.convergenceSurfaceHeight * 0.6 : -1
|
||||
toolButtonsItem: toolButtons
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,13 @@ Item {
|
|||
|
||||
readonly property real minimizedQuickSettingsOffset: height
|
||||
readonly property real maximizedQuickSettingsOffset: height
|
||||
readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled
|
||||
readonly property real convergenceFrameThickness: MobileShell.Constants.convergenceWorkspaceFrameThickness
|
||||
readonly property real convergenceSurfaceTopInset: MobileShell.Constants.topPanelHeight
|
||||
readonly property real convergenceSurfaceBottomInset: MobileShell.Constants.convergenceDockHeight + convergenceFrameThickness
|
||||
readonly property real convergenceSurfaceSideInset: 0
|
||||
readonly property real convergenceSurfaceWidth: Math.max(0, width - convergenceSurfaceSideInset * 2)
|
||||
readonly property real convergenceSurfaceHeight: Math.max(0, height - convergenceSurfaceTopInset - convergenceSurfaceBottomInset)
|
||||
readonly property bool isOnLargeScreen: width > quickSettingsPanel.width * 2.5
|
||||
readonly property real minWidthHeight: Math.min(root.width, root.height)
|
||||
readonly property real opacityValue: Math.max(0, Math.min(1, actionDrawer.offsetResistance / root.minimizedQuickSettingsOffset))
|
||||
|
|
@ -44,29 +51,31 @@ Item {
|
|||
// right sidebar
|
||||
MobileShell.QuickSettingsPanel {
|
||||
id: quickSettingsPanel
|
||||
height: quickSettingsPanel.contentImplicitHeight + quickSettingsPanel.topPadding + quickSettingsPanel.bottomPadding
|
||||
width: intendedWidth
|
||||
height: Math.min(quickSettingsPanel.contentImplicitHeight + quickSettingsPanel.topPadding + quickSettingsPanel.bottomPadding, quickSettingsPanel.availableHeight)
|
||||
width: Math.min(intendedWidth, quickSettingsPanel.availableWidth)
|
||||
|
||||
readonly property real columnWidth: 6 * Kirigami.Units.gridUnit
|
||||
readonly property real availableWidth: root.isConvergence ? root.convergenceSurfaceWidth : intendedWidth
|
||||
readonly property real availableHeight: root.isConvergence ? root.convergenceSurfaceHeight : root.height
|
||||
// In convergence mode, use up to 45% of screen width so more
|
||||
// tiles are visible without pagination.
|
||||
readonly property int convergenceColumns: Math.min(6, Math.floor(root.width * 0.45 / columnWidth))
|
||||
readonly property int effectiveColumns: ShellSettings.Settings.convergenceModeEnabled
|
||||
readonly property int effectiveColumns: root.isConvergence
|
||||
? Math.max(ShellSettings.Settings.quickSettingsColumns, convergenceColumns)
|
||||
: ShellSettings.Settings.quickSettingsColumns
|
||||
readonly property real intendedWidth: (columnWidth * effectiveColumns) + Kirigami.Units.gridUnit
|
||||
|
||||
readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled
|
||||
readonly property bool isConvergence: root.isConvergence
|
||||
property real offsetRatio: (quickSettingsPanel.height + restingTopMargin) / root.height
|
||||
readonly property real restingTopMargin: isConvergence ? Kirigami.Units.smallSpacing : 0
|
||||
readonly property real restingTopMargin: root.isConvergence ? root.convergenceSurfaceTopInset : 0
|
||||
anchors.topMargin: isConvergence ? restingTopMargin : Math.min(root.actionDrawer.offsetResistance * offsetRatio - quickSettingsPanel.height, 0)
|
||||
anchors.top: parent.top
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: isConvergence ? Kirigami.Units.smallSpacing : 0
|
||||
anchors.rightMargin: isConvergence ? root.convergenceSurfaceSideInset : 0
|
||||
opacity: isConvergence ? Math.max(0, Math.min(1, root.actionDrawer.offset / root.minimizedQuickSettingsOffset)) : 1
|
||||
|
||||
actionDrawer: root.actionDrawer
|
||||
fullScreenHeight: root.height
|
||||
fullScreenHeight: quickSettingsPanel.availableHeight
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,24 +33,26 @@ MobileShell.BaseItem {
|
|||
* Implicit height of the contents of the panel.
|
||||
*/
|
||||
readonly property real contentImplicitHeight: column.implicitHeight
|
||||
readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled
|
||||
readonly property real panelPadding: isConvergence ? Kirigami.Units.smallSpacing : Kirigami.Units.smallSpacing * 4
|
||||
|
||||
property alias quickSettings: quickSettingsProxy.contentItem
|
||||
property alias statusBar: statusBarProxy.contentItem
|
||||
readonly property double brightnessPressedValue: quickSettings.brightnessPressedValue
|
||||
|
||||
// we need extra padding since the background side border is enabled
|
||||
topPadding: Kirigami.Units.smallSpacing * 4
|
||||
leftPadding: Kirigami.Units.smallSpacing * 4
|
||||
rightPadding: Kirigami.Units.smallSpacing * 4
|
||||
bottomPadding: Kirigami.Units.smallSpacing * 4
|
||||
topPadding: panelPadding
|
||||
leftPadding: panelPadding
|
||||
rightPadding: panelPadding
|
||||
bottomPadding: panelPadding
|
||||
|
||||
Kirigami.Theme.inherit: false
|
||||
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||
|
||||
background: MobileShell.PanelBackground {
|
||||
anchors.fill: parent
|
||||
anchors.margins: Kirigami.Units.largeSpacing
|
||||
panelType: MobileShell.PanelBackground.PanelType.Base
|
||||
anchors.margins: root.isConvergence ? 0 : Kirigami.Units.largeSpacing
|
||||
panelType: root.isConvergence ? MobileShell.PanelBackground.PanelType.Flat : MobileShell.PanelBackground.PanelType.Base
|
||||
radius: root.isConvergence ? 0 : Kirigami.Units.cornerRadius
|
||||
opacity: brightnessPressedValue
|
||||
|
||||
Kirigami.Theme.inherit: false
|
||||
|
|
|
|||
Loading…
Reference in a new issue