[gnome-shell] _computeWindowMotion calculate difference between relative positions
- From: Maxim Ermilov <mermilov src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] _computeWindowMotion calculate difference between relative positions
- Date: Mon, 22 Feb 2010 17:15:57 +0000 (UTC)
commit 8d76e362a0b96839605cf98df4671da7fd789a61
Author: Maxim Ermilov <zaspire rambler ru>
Date: Mon Feb 22 20:07:58 2010 +0300
_computeWindowMotion calculate difference between relative positions
https://bugzilla.gnome.org/show_bug.cgi?id=607826
js/ui/workspace.js | 39 +++++++++++----------------------------
1 files changed, 11 insertions(+), 28 deletions(-)
---
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index 7a5f31f..365d942 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -833,16 +833,15 @@ Workspace.prototype = {
* Currently this is the square of the distance between the
* centers.
*/
- _computeWindowMotion: function (metaWindow, slot, slotGeometry) {
+ _computeWindowMotion: function (metaWindow, slot) {
let rect = new Meta.Rectangle();
metaWindow.get_outer_rect(rect);
- let [slotX, slotY, slotWidth, slotHeight] = slotGeometry;
- let distanceSquared;
- let xDelta, yDelta;
+ let [xCenter, yCenter, fraction] = slot;
+ let xDelta, yDelta, distanceSquared;
- xDelta = (rect.x + rect.width / 2) - (slotX + slotWidth / 2);
- yDelta = (rect.y + rect.height / 2) - (slotY + slotHeight / 2);
+ xDelta = rect.x + rect.width / 2.0 - xCenter * global.screen_width;
+ yDelta = rect.y + rect.height / 2.0 - yCenter * global.screen_height;
distanceSquared = xDelta * xDelta + yDelta * yDelta;
return distanceSquared;
@@ -854,7 +853,7 @@ Workspace.prototype = {
* Iterate over all permutations of the windows, and determine the
* permutation which has the least total motion.
*/
- _orderWindowsPermutations: function (clones, slots, slotGeometries) {
+ _orderWindowsPermutations: function (clones, slots) {
let minimumMotionPermutation = null;
let minimumMotion = -1;
let permIndex = 0;
@@ -863,9 +862,8 @@ Workspace.prototype = {
for (let i = 0; i < permutation.length; i++) {
let metaWindow = permutation[i].metaWindow;
let slot = slots[i];
- let slotAbsGeometry = slotGeometries[i];
- let delta = this._computeWindowMotion(metaWindow, slot, slotAbsGeometry);
+ let delta = this._computeWindowMotion(metaWindow, slot);
motion += delta;
}
@@ -885,19 +883,18 @@ Workspace.prototype = {
* Iterate over available slots in order, placing into each one the window
* we find with the smallest motion to that slot.
*/
- _orderWindowsGreedy: function(clones, slots, slotGeometries) {
+ _orderWindowsGreedy: function(clones, slots) {
let result = [];
let slotIndex = 0;
// Copy since we mutate below
let clonesCopy = clones.concat();
for (let i = 0; i < slots.length; i++) {
let slot = slots[i];
- let slotGeometry = slotGeometries[i];
let minimumMotionIndex = -1;
let minimumMotion = -1;
for (let j = 0; j < clonesCopy.length; j++) {
let metaWindow = clonesCopy[j].metaWindow;
- let delta = this._computeWindowMotion(metaWindow, slot, slotGeometry);
+ let delta = this._computeWindowMotion(metaWindow, slot);
if (minimumMotionIndex == -1 || delta < minimumMotion) {
minimumMotionIndex = j;
minimumMotion = delta;
@@ -922,11 +919,10 @@ Workspace.prototype = {
clones.sort(function(w1, w2) {
return w2.metaWindow.get_stable_sequence() - w1.metaWindow.get_stable_sequence();
});
- let slotGeometries = slots.map(Lang.bind(this, this._getSlotAbsoluteGeometry));
if (clones.length <= POSITIONING_PERMUTATIONS_MAX)
- return this._orderWindowsPermutations(clones, slots, slotGeometries);
+ return this._orderWindowsPermutations(clones, slots);
else
- return this._orderWindowsGreedy(clones, slots, slotGeometries);
+ return this._orderWindowsGreedy(clones, slots);
},
/**
@@ -949,19 +945,6 @@ Workspace.prototype = {
},
/**
- * _getSlotAbsoluteGeometry:
- * @slot: A layout slot
- *
- * Returns: the screen coordiantes [x, y, width, height]
- * of a given window layout slot.
- */
- _getSlotAbsoluteGeometry: function(slot) {
- let [x, y, width, height] = this._getSlotRelativeGeometry(slot);
- return [ this.gridX + x, this.gridY + y,
- this.scale * width, this.scale * height];
- },
-
- /**
* _computeWindowRelativeLayout:
* @metaWindow: A #MetaWindow
* @slot: A layout slot
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]