mirror of
https://github.com/gosticks/PaperWM.git
synced 2026-08-13 04:30:18 +00:00
performance: deactivate clones when hidden
This commit is contained in:
@@ -125,7 +125,7 @@ class Space extends Array {
|
||||
let clip = new Clutter.Actor();
|
||||
this.clip = clip;
|
||||
let actor = new Clutter.Actor();
|
||||
actor.hide(); // We keep the space actor hidden when inactive due to performance
|
||||
this.hide(); // We keep the space actor hidden when inactive due to performance
|
||||
this.actor = actor;
|
||||
let cloneClip = new Clutter.Actor();
|
||||
this.cloneClip = cloneClip;
|
||||
@@ -272,6 +272,23 @@ class Space extends Array {
|
||||
this.updateBackground.bind(this));
|
||||
}
|
||||
|
||||
show() {
|
||||
this.clip.show();
|
||||
for (let col of this) {
|
||||
for (let w of col) {
|
||||
let actor = w.get_compositor_private();
|
||||
w.clone.cloneActor.source = actor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hide() {
|
||||
this.clip.hide();
|
||||
for (let col of this)
|
||||
for (let w of col)
|
||||
w.clone.cloneActor.source = null;
|
||||
}
|
||||
|
||||
workArea() {
|
||||
let workArea = Main.layoutManager.getWorkAreaForMonitor(this.monitor.index);
|
||||
workArea.x -= this.monitor.x;
|
||||
@@ -1298,7 +1315,7 @@ class Spaces extends Map {
|
||||
this.selectedSpace = mru[0];
|
||||
this.monitors.set(activeSpace.monitor, activeSpace);
|
||||
for (let [monitor, space] of this.monitors) {
|
||||
space.actor.show();
|
||||
space.show();
|
||||
space.clip.raise_top();
|
||||
}
|
||||
this.forEach(space => {
|
||||
@@ -1581,7 +1598,7 @@ class Spaces extends Map {
|
||||
space.border.opacity = 255;
|
||||
space.border.show();
|
||||
|
||||
space.actor.show();
|
||||
space.show();
|
||||
|
||||
let padding = (space.height * scale / 100) * padding_percentage;
|
||||
let y = ((space.height + padding) * (i - to)) * scale;
|
||||
@@ -1653,7 +1670,6 @@ class Spaces extends Map {
|
||||
const padding_percentage = 4;
|
||||
let last = monitorSpaces.length - 1;
|
||||
monitorSpaces.forEach((space, i) => {
|
||||
let actor = space.actor;
|
||||
|
||||
let padding = (space.height * scale / 100) * padding_percentage;
|
||||
let center = (space.height - (space.height * scale)) / 2;
|
||||
@@ -1666,8 +1682,8 @@ class Spaces extends Map {
|
||||
space_y = center + (space.height + padding) * (i - to) * scale;
|
||||
}
|
||||
|
||||
actor.show();
|
||||
Tweener.addTween(actor,
|
||||
space.show();
|
||||
Tweener.addTween(space.actor,
|
||||
{y: space_y,
|
||||
time: prefs.animation_time,
|
||||
scale_x: scale,
|
||||
@@ -1714,7 +1730,7 @@ class Spaces extends Map {
|
||||
space.border.opacity = 255;
|
||||
space.border.show();
|
||||
|
||||
space.actor.show();
|
||||
space.show();
|
||||
|
||||
let h;
|
||||
if (i === 0)
|
||||
@@ -1725,7 +1741,7 @@ class Spaces extends Map {
|
||||
h = StackPositions.top;
|
||||
else {
|
||||
h = StackPositions.top;
|
||||
space.actor.hide();
|
||||
space.hide();
|
||||
}
|
||||
|
||||
space.actor.set_position(0, space.height*h);
|
||||
@@ -1822,9 +1838,9 @@ class Spaces extends Map {
|
||||
h = StackPositions.bottom;
|
||||
|
||||
if (Math.abs(i - to) > 2) {
|
||||
onComplete = () => space.actor.hide();
|
||||
onComplete = () => space.hide();
|
||||
} else {
|
||||
space.actor.show();
|
||||
space.show();
|
||||
}
|
||||
|
||||
Tweener.addTween(actor,
|
||||
@@ -1847,7 +1863,7 @@ class Spaces extends Map {
|
||||
|
||||
this.selectedSpace = to;
|
||||
|
||||
to.actor.show();
|
||||
to.show();
|
||||
let selected = to.selectedWindow;
|
||||
if (selected)
|
||||
ensureViewport(selected, to);
|
||||
@@ -1867,7 +1883,7 @@ class Spaces extends Map {
|
||||
// cases
|
||||
for (const space of spaces.values()) {
|
||||
if (!visible.get(space)) {
|
||||
space.actor.hide();
|
||||
space.hide();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2126,7 +2142,7 @@ function resizeHandler(metaWindow) {
|
||||
|
||||
let selected = metaWindow === space.selectedWindow;
|
||||
|
||||
if (inGrab) {
|
||||
if (inGrab && !inGrab.dnd) {
|
||||
// OK to layout directly from size-changed signal since layout wont resize the grab window
|
||||
space.layout(false);
|
||||
} else if (!space._inLayout && needLayout) {
|
||||
@@ -2724,6 +2740,7 @@ function showWindow(metaWindow) {
|
||||
if (!actor)
|
||||
return false;
|
||||
metaWindow.clone.cloneActor.hide();
|
||||
metaWindow.clone.cloneActor.source = null;
|
||||
actor.show();
|
||||
return true;
|
||||
}
|
||||
@@ -2733,6 +2750,7 @@ function animateWindow(metaWindow) {
|
||||
if (!actor)
|
||||
return false;
|
||||
metaWindow.clone.cloneActor.show();
|
||||
metaWindow.clone.cloneActor.source = actor;
|
||||
actor.hide();
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user