Add animation speed slider in general tab, always collapse activeWindow
GeneralTab: add animation speed slider Workspace: set activeWindow to always collapsed except for hover Misc: replaced a lot of animations with Style.animationXYZ
This commit is contained in:
parent
563a151277
commit
124d9becc6
7 changed files with 55 additions and 34 deletions
|
|
@ -140,6 +140,8 @@ Singleton {
|
|||
property bool dimDesktop: false
|
||||
property bool showScreenCorners: false
|
||||
property real radiusRatio: 1.0
|
||||
// Animation speed multiplier (0.1x - 2.0x)
|
||||
property real animationSpeed: 1.0
|
||||
// Replace sidepanel toggle with distro logo (shown in bar and/or side panel)
|
||||
property bool useDistroLogoForSidepanel: false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,9 +56,9 @@ Singleton {
|
|||
property real opacityFull: 1.0
|
||||
|
||||
// Animation duration (ms)
|
||||
property int animationFast: 150
|
||||
property int animationNormal: 300
|
||||
property int animationSlow: 450
|
||||
property int animationFast: Math.round(150 * Settings.data.general.animationSpeed)
|
||||
property int animationNormal: Math.round(300 * Settings.data.general.animationSpeed)
|
||||
property int animationSlow: Math.round(450 * Settings.data.general.animationSpeed)
|
||||
|
||||
// Dimensions
|
||||
property int barHeight: 36
|
||||
|
|
|
|||
|
|
@ -12,36 +12,16 @@ Row {
|
|||
|
||||
property ShellScreen screen
|
||||
property real scaling: ScalingService.scale(screen)
|
||||
// Title stays collapsed by default; expands only on hover
|
||||
property bool showingFullTitle: false
|
||||
property int lastWindowIndex: -1
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Style.marginS * scaling
|
||||
visible: getTitle() !== ""
|
||||
|
||||
// Timer to hide full title after window switch
|
||||
Timer {
|
||||
id: fullTitleTimer
|
||||
interval: 2000
|
||||
repeat: false
|
||||
onTriggered: {
|
||||
showingFullTitle = false
|
||||
}
|
||||
}
|
||||
|
||||
// Update text when window changes
|
||||
Connections {
|
||||
target: CompositorService
|
||||
function onActiveWindowChanged() {
|
||||
// Check if window actually changed
|
||||
if (CompositorService.focusedWindowIndex !== lastWindowIndex) {
|
||||
lastWindowIndex = CompositorService.focusedWindowIndex
|
||||
showingFullTitle = true
|
||||
fullTitleTimer.restart()
|
||||
}
|
||||
}
|
||||
}
|
||||
// Remove auto-expand timer; we rely solely on hover
|
||||
|
||||
// No auto-expansion on window change; keep collapsed unless hovered
|
||||
function getTitle() {
|
||||
// Use the service's focusedWindowTitle property which is updated immediately
|
||||
// when WindowOpenedOrChanged events are received
|
||||
|
|
@ -105,11 +85,10 @@ Row {
|
|||
NText {
|
||||
id: titleText
|
||||
|
||||
// If hovered or just switched window, show up to 400 pixels
|
||||
// If not hovered show up to 150 pixels
|
||||
width: (showingFullTitle || mouseArea.containsMouse) ? Math.min(fullTitleMetrics.contentWidth,
|
||||
400 * scaling) : Math.min(
|
||||
fullTitleMetrics.contentWidth, 150 * scaling)
|
||||
// Fix collapsed width to 150px to avoid layout shifts with neighbors
|
||||
// Expand up to 400px on hover
|
||||
width: mouseArea.containsMouse ? Math.min(fullTitleMetrics.contentWidth, 400 * scaling) : 150 * scaling
|
||||
horizontalAlignment: mouseArea.containsMouse ? Text.AlignLeft : Text.AlignHCenter
|
||||
text: getTitle()
|
||||
font.pointSize: Style.fontSizeS * scaling
|
||||
font.weight: Style.fontWeightMedium
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ Item {
|
|||
property: "masterProgress"
|
||||
from: 0.0
|
||||
to: 1.0
|
||||
duration: 1000
|
||||
duration: Style.animationSlow * 2
|
||||
easing.type: Easing.OutQuint
|
||||
}
|
||||
PropertyAction {
|
||||
|
|
|
|||
|
|
@ -346,7 +346,7 @@ NPanel {
|
|||
loops: Animation.Infinite
|
||||
from: 0
|
||||
to: 360
|
||||
duration: 2000
|
||||
duration: Style.animationSlow * 4
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -164,6 +164,46 @@ ColumnLayout {
|
|||
Layout.bottomMargin: Style.marginL * scaling
|
||||
}
|
||||
|
||||
// Animation Speed
|
||||
ColumnLayout {
|
||||
spacing: Style.marginXXS * scaling
|
||||
Layout.fillWidth: true
|
||||
|
||||
NText {
|
||||
text: "Animation Speed"
|
||||
font.pointSize: Style.fontSizeL * scaling
|
||||
font.weight: Style.fontWeightBold
|
||||
color: Color.mOnSurface
|
||||
}
|
||||
|
||||
NText {
|
||||
text: "Adjust global animation speed (0.1× to 2.0×)"
|
||||
font.pointSize: Style.fontSizeXS * scaling
|
||||
color: Color.mOnSurfaceVariant
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
NSlider {
|
||||
Layout.fillWidth: true
|
||||
from: 0.1
|
||||
to: 2.0
|
||||
stepSize: 0.01
|
||||
value: Settings.data.general.animationSpeed
|
||||
onMoved: Settings.data.general.animationSpeed = value
|
||||
cutoutColor: Color.mSurface
|
||||
}
|
||||
|
||||
NText {
|
||||
text: Math.round(Settings.data.general.animationSpeed * 100) + "%"
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
Layout.leftMargin: Style.marginS * scaling
|
||||
color: Color.mOnSurface
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NText {
|
||||
text: "Fonts"
|
||||
font.pointSize: Style.fontSizeXXL * scaling
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Item {
|
|||
property color color: Color.mPrimary
|
||||
property int size: Style.baseWidgetSize * scaling
|
||||
property int strokeWidth: Style.borderL * scaling
|
||||
property int duration: 1000
|
||||
property int duration: Style.animationSlow * 2
|
||||
|
||||
implicitWidth: size
|
||||
implicitHeight: size
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue