controlcenter: deferred pane loading and limited simultaneous pane loading
This commit is contained in:
parent
8981ab8806
commit
cdd522d01d
1 changed files with 27 additions and 1 deletions
|
|
@ -50,6 +50,9 @@ ClippingRectangle {
|
||||||
clip: true
|
clip: true
|
||||||
|
|
||||||
property bool animationComplete: true
|
property bool animationComplete: true
|
||||||
|
// Track if initial opening animation has completed
|
||||||
|
// During initial opening, only the active pane loads to avoid hiccups
|
||||||
|
property bool initialOpeningComplete: false
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
id: animationDelayTimer
|
id: animationDelayTimer
|
||||||
|
|
@ -59,6 +62,17 @@ ClippingRectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Timer to detect when initial opening animation completes
|
||||||
|
// Uses large duration to cover both normal and detached opening cases
|
||||||
|
Timer {
|
||||||
|
id: initialOpeningTimer
|
||||||
|
interval: Appearance.anim.durations.large
|
||||||
|
running: true
|
||||||
|
onTriggered: {
|
||||||
|
layout.initialOpeningComplete = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Pane {
|
Pane {
|
||||||
index: 0
|
index: 0
|
||||||
sourceComponent: NetworkingPane {
|
sourceComponent: NetworkingPane {
|
||||||
|
|
@ -135,8 +149,20 @@ ClippingRectangle {
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
active: {
|
active: {
|
||||||
const diff = Math.abs(root.session.activeIndex - pane.index);
|
const diff = Math.abs(root.session.activeIndex - pane.index);
|
||||||
|
const isActivePane = diff === 0;
|
||||||
|
|
||||||
// Always activate current and adjacent panes immediately for smooth transitions
|
// During initial opening animation, only load the active pane
|
||||||
|
// This prevents hiccups from multiple panes loading simultaneously
|
||||||
|
if (!layout.initialOpeningComplete) {
|
||||||
|
if (isActivePane) {
|
||||||
|
pane.hasBeenLoaded = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Defer all other panes until initial opening completes
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// After initial opening, allow current and adjacent panes for smooth transitions
|
||||||
if (diff <= 1) {
|
if (diff <= 1) {
|
||||||
pane.hasBeenLoaded = true;
|
pane.hasBeenLoaded = true;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue