Compare commits
2 Commits
citadel
...
wip/carlos
Author | SHA1 | Date | |
---|---|---|---|
|
c8ea06be26 | ||
|
d734b117e0 |
@ -110,6 +110,7 @@ var WindowClone = new Lang.Class({
|
||||
this.metaWindow = realWindow.meta_window;
|
||||
this.metaWindow._delegate = this;
|
||||
this._workspace = workspace;
|
||||
this._attachedDialogs = [];
|
||||
|
||||
this._windowClone = new Clutter.Clone({ source: realWindow });
|
||||
// We expect this.actor to be used for all interaction rather than
|
||||
@ -208,6 +209,12 @@ var WindowClone = new Lang.Class({
|
||||
},
|
||||
|
||||
addDialog(win) {
|
||||
let realWin = win.get_compositor_private();
|
||||
if (this._attachedDialogs.includes(realWin))
|
||||
return;
|
||||
|
||||
this._attachedDialogs.push(realWin);
|
||||
|
||||
let parent = win.get_transient_for();
|
||||
while (parent.is_attached_dialog())
|
||||
parent = parent.get_transient_for();
|
||||
@ -225,7 +232,7 @@ var WindowClone = new Lang.Class({
|
||||
},
|
||||
|
||||
hasAttachedDialogs() {
|
||||
return this.actor.get_n_children() > 1;
|
||||
return this._attachedDialogs.length > 1;
|
||||
},
|
||||
|
||||
_doAddAttachedDialog(metaWin, realWin) {
|
||||
@ -235,6 +242,9 @@ var WindowClone = new Lang.Class({
|
||||
clone._posChangedId = metaWin.connect('position-changed',
|
||||
this._onMetaWindowSizeChanged.bind(this));
|
||||
clone._destroyId = realWin.connect('destroy', () => {
|
||||
let idx = this._attachedDialogs.indexOf(realWin);
|
||||
this._attachedDialogs.splice(idx, 1);
|
||||
|
||||
clone.destroy();
|
||||
|
||||
this._onMetaWindowSizeChanged();
|
||||
|
@ -151,7 +151,7 @@ var WindowClone = new Lang.Class({
|
||||
|
||||
_doAddAttachedDialog(metaDialog, realDialog) {
|
||||
let clone = new Clutter.Clone({ source: realDialog });
|
||||
this._updateDialogPosition(realDialog, clone);
|
||||
this._updateDialogPosition(metaDialog, clone);
|
||||
|
||||
clone._updateId = realDialog.connect('notify::position', dialog => {
|
||||
this._updateDialogPosition(dialog, clone);
|
||||
@ -162,8 +162,7 @@ var WindowClone = new Lang.Class({
|
||||
this.actor.add_child(clone);
|
||||
},
|
||||
|
||||
_updateDialogPosition(realDialog, cloneDialog) {
|
||||
let metaDialog = realDialog.meta_window;
|
||||
_updateDialogPosition(metaDialog, cloneDialog) {
|
||||
let dialogRect = metaDialog.get_frame_rect();
|
||||
let rect = this.metaWindow.get_frame_rect();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user