overviewControls: Hide the appDisplay when it's not shown
Hiding actors allows excluding them from layout, so by hidding the appDisplay in all the cases where the overviewAdjustment is not actually showing it, we can save a lot of time on the first frame of painting the overview because we no longer have to layout the whole appGrid. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1755>
This commit is contained in:
parent
d21a0b186e
commit
c239cd398d
@ -179,23 +179,26 @@ class ControlsManagerLayout extends Clutter.BoxLayout {
|
|||||||
this._workspacesDisplay.allocate(workspacesBox);
|
this._workspacesDisplay.allocate(workspacesBox);
|
||||||
|
|
||||||
// AppDisplay
|
// AppDisplay
|
||||||
const workspaceAppGridBox =
|
if (this._appDisplay.visible) {
|
||||||
this._cachedWorkspaceBoxes.get(ControlsState.APP_GRID);
|
const workspaceAppGridBox =
|
||||||
|
this._cachedWorkspaceBoxes.get(ControlsState.APP_GRID);
|
||||||
|
|
||||||
params = [box, searchHeight, dashHeight, workspaceAppGridBox];
|
params = [box, searchHeight, dashHeight, workspaceAppGridBox];
|
||||||
let appDisplayBox;
|
let appDisplayBox;
|
||||||
if (!transitionParams.transitioning) {
|
if (!transitionParams.transitioning) {
|
||||||
appDisplayBox =
|
appDisplayBox =
|
||||||
this._getAppDisplayBoxForState(transitionParams.currentState, ...params);
|
this._getAppDisplayBoxForState(transitionParams.currentState, ...params);
|
||||||
} else {
|
} else {
|
||||||
const initialBox =
|
const initialBox =
|
||||||
this._getAppDisplayBoxForState(transitionParams.initialState, ...params);
|
this._getAppDisplayBoxForState(transitionParams.initialState, ...params);
|
||||||
const finalBox =
|
const finalBox =
|
||||||
this._getAppDisplayBoxForState(transitionParams.finalState, ...params);
|
this._getAppDisplayBoxForState(transitionParams.finalState, ...params);
|
||||||
|
|
||||||
appDisplayBox = initialBox.interpolate(finalBox, transitionParams.progress);
|
appDisplayBox = initialBox.interpolate(finalBox, transitionParams.progress);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._appDisplay.allocate(appDisplayBox);
|
||||||
}
|
}
|
||||||
this._appDisplay.allocate(appDisplayBox);
|
|
||||||
|
|
||||||
// Search
|
// Search
|
||||||
childBox.set_origin(0, searchHeight + spacing);
|
childBox.set_origin(0, searchHeight + spacing);
|
||||||
@ -500,6 +503,12 @@ class ControlsManager extends St.Widget {
|
|||||||
this._thumbnailsBox.ease(params);
|
this._thumbnailsBox.ease(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_updateAppDisplayVisibility() {
|
||||||
|
this._appDisplay.visible =
|
||||||
|
this._stateAdjustment.value > ControlsState.WINDOW_PICKER &&
|
||||||
|
!this._searchController.searchActive;
|
||||||
|
}
|
||||||
|
|
||||||
_update() {
|
_update() {
|
||||||
const params = this._stateAdjustment.getStateTransitionParams();
|
const params = this._stateAdjustment.getStateTransitionParams();
|
||||||
|
|
||||||
@ -512,13 +521,14 @@ class ControlsManager extends St.Widget {
|
|||||||
fitModeAdjustment.value = fitMode;
|
fitModeAdjustment.value = fitMode;
|
||||||
|
|
||||||
this._updateThumbnailsBox();
|
this._updateThumbnailsBox();
|
||||||
|
this._updateAppDisplayVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onSearchChanged() {
|
_onSearchChanged() {
|
||||||
const { searchActive } = this._searchController;
|
const { searchActive } = this._searchController;
|
||||||
|
|
||||||
if (!searchActive) {
|
if (!searchActive) {
|
||||||
this._appDisplay.show();
|
this._updateAppDisplayVisibility();
|
||||||
this._workspacesDisplay.reactive = true;
|
this._workspacesDisplay.reactive = true;
|
||||||
this._workspacesDisplay.setPrimaryWorkspaceVisible(true);
|
this._workspacesDisplay.setPrimaryWorkspaceVisible(true);
|
||||||
} else {
|
} else {
|
||||||
@ -531,7 +541,7 @@ class ControlsManager extends St.Widget {
|
|||||||
opacity: searchActive ? 0 : 255,
|
opacity: searchActive ? 0 : 255,
|
||||||
duration: SIDE_CONTROLS_ANIMATION_TIME,
|
duration: SIDE_CONTROLS_ANIMATION_TIME,
|
||||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
onComplete: () => (this._appDisplay.visible = !searchActive),
|
onComplete: () => this._updateAppDisplayVisibility(),
|
||||||
});
|
});
|
||||||
this._workspacesDisplay.ease({
|
this._workspacesDisplay.ease({
|
||||||
opacity: searchActive ? 0 : 255,
|
opacity: searchActive ? 0 : 255,
|
||||||
|
Loading…
Reference in New Issue
Block a user