[gnome-shell/wip/exalm/gestures] tmp: Use clones
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/exalm/gestures] tmp: Use clones
- Date: Mon, 1 Jul 2019 13:20:06 +0000 (UTC)
commit c5e0f74d429960d32070b53c657cf0b87bdbe20c
Author: Alexander Mikhaylenko <exalm7659 gmail com>
Date: Mon Jul 1 18:18:07 2019 +0500
tmp: Use clones
js/ui/windowManager.js | 27 ++++++++++++++++-----------
1 file changed, 16 insertions(+), 11 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index e3e07461e..e3b30fc68 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -1628,6 +1628,8 @@ var WindowManager = class {
return;
return;
+ // TODO: rewrite this whole thing
+
let windows = global.get_window_actors();
let lastCurSibling = null;
let lastDirSibling = [];
@@ -1767,21 +1769,22 @@ var WindowManager = class {
if (window.is_on_all_workspaces())
continue;
- // TODO: what if a window is between monitors?
-// r(0).get_frame_rect().intersect(global.display.get_monitor_geometry(1))
- if (window.get_monitor() != monitor.index)
+ if
(!window.get_frame_rect().intersect(global.display.get_monitor_geometry(monitor.index))[0])
continue;
let record = { window: actor,
- parent: actor.get_parent() };
+ parent: actor.get_parent(),
+ clone: new Clutter.Clone({ source: actor,
+ x: actor.x,
+ y: actor.y }) };
if (this._movingWindow && window == this._movingWindow) {
switchData.movingWindow = record;
switchData.windows.push(switchData.movingWindow);
- actor.reparent(switchData.movingWindowBin);
+ switchData.movingWindowBin.add_actor(record.clone);
} else if (window.get_workspace().index() == from) {
switchData.windows.push(record);
- actor.reparent(monitorData.curGroup);
+ monitorData.curGroup.add_actor(record.clone);
} else {
let visible = false;
for (let dir of Object.values(Meta.MotionDirection)) {
@@ -1791,13 +1794,14 @@ var WindowManager = class {
continue;
switchData.windows.push(record);
- actor.reparent(info.actor);
+ info.actor.add_actor(record.clone);
visible = true;
break;
}
- actor.visible = visible;
+ record.clone.visible = visible;
}
+ actor.hide();
}
switchData.monitors[monitorData.index] = monitorData;
@@ -1807,6 +1811,7 @@ var WindowManager = class {
let w = switchData.windows[i];
w.windowDestroyId = w.window.connect('destroy', () => {
+ w.clone.destroy();
switchData.windows.splice(switchData.windows.indexOf(w), 1);
});
}
@@ -1819,11 +1824,11 @@ var WindowManager = class {
let w = switchData.windows[i];
w.window.disconnect(w.windowDestroyId);
- w.window.reparent(w.parent);
+ w.clone.destroy();
- if (w.window.get_meta_window().get_workspace() !=
+ if (w.window.get_meta_window().get_workspace() ==
global.workspace_manager.get_active_workspace())
- w.window.hide();
+ w.window.show();
}
Tweener.removeTweens(switchData);
for (let monitorData of switchData.monitors) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]