[gnome-shell] LayoutManager: fix findMonitorForWindow to take a metaWindow
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] LayoutManager: fix findMonitorForWindow to take a metaWindow
- Date: Sun, 16 Dec 2012 21:40:46 +0000 (UTC)
commit b38ecaf925eec633d3f311582367e283c1ced346
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Sun Dec 16 20:57:54 2012 +0100
LayoutManager: fix findMonitorForWindow to take a metaWindow
This makes the method usable in places where the associated window actor
might not have the right size (such as from window manager animations).
Also, make the method public from LayoutManager.
https://bugzilla.gnome.org/show_bug.cgi?id=690241
js/ui/layout.js | 21 ++++++++++++++-------
1 files changed, 14 insertions(+), 7 deletions(-)
---
diff --git a/js/ui/layout.js b/js/ui/layout.js
index 8e59383..ae828a0 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -325,7 +325,7 @@ const LayoutManager = new Lang.Class({
} else {
let focusWindow = global.display.focus_window;
if (focusWindow)
- i = this._chrome.findIndexForWindow(focusWindow.get_compositor_private());
+ i = this._chrome.findIndexForWindow(focusWindow);
}
return i;
@@ -513,7 +513,11 @@ const LayoutManager = new Lang.Class({
findMonitorForActor: function(actor) {
return this.monitors[this._chrome.findIndexForActor(actor)];
- }
+ },
+
+ findMonitorForWindow: function(window) {
+ return this.monitors[this._chrome.findIndexForWindow(window)];
+ },
});
Signals.addSignalMethods(LayoutManager.prototype);
@@ -891,7 +895,8 @@ const Chrome = new Lang.Class({
},
findIndexForWindow: function(window) {
- let i = this._findMonitorForRect(window.x, window.y, window.width, window.height);
+ let rect = window.get_input_rect();
+ let i = this._findMonitorForRect(rect.x, rect.y, rect.width, rect.height);
if (i >= 0)
return i;
return this._primaryIndex; // Not on any monitor, pretend its on the primary
@@ -909,7 +914,8 @@ const Chrome = new Lang.Class({
},
findMonitorForWindow: function(window) {
- let i = this._findMonitorForRect(window.x, window.y, window.width, window.height);
+ let rect = window.get_input_rect();
+ let i = this._findMonitorForRect(rect.x, rect.y, rect.width, rect.height);
if (i >= 0)
return this._monitors[i];
else
@@ -958,14 +964,15 @@ const Chrome = new Lang.Class({
for (let i = windows.length - 1; i > -1; i--) {
let window = windows[i];
- let layer = window.get_meta_window().get_layer();
+ let metaWindow = window.meta_window;
+ let layer = metaWindow.get_layer();
// Skip minimized windows
if (!window.showing_on_its_workspace())
continue;
if (layer == Meta.StackLayer.FULLSCREEN) {
- let monitor = this.findMonitorForWindow(window);
+ let monitor = this.findMonitorForWindow(metaWindow);
if (monitor)
monitor.inFullscreen = true;
}
@@ -982,7 +989,7 @@ const Chrome = new Lang.Class({
}
// Or whether it is monitor sized
- let monitor = this.findMonitorForWindow(window);
+ let monitor = this.findMonitorForWindow(metaWindow);
if (monitor &&
window.x <= monitor.x &&
window.x + window.width >= monitor.x + monitor.width &&
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]