From 3a26f7f4d5699848e248e35f4f82760ca36db819 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Sun, 19 Jan 2014 16:12:15 +0100 Subject: [PATCH] WindowManager: WORKAROUND: disable dimming in the overview Clones and effects don't mix, due to a bug in Clutter we don't know how to fix, and sometimes the clone is clipped completely. As a workaround, undim windows with dialogs in the overview. Clutter bug: https://bugzilla.gnome.org/show_bug.cgi?id=659523 https://bugzilla.gnome.org/show_bug.cgi?id=650843 --- js/ui/windowManager.js | 9 +++++++++ js/ui/workspace.js | 14 -------------- js/ui/workspaceThumbnail.js | 14 -------------- 3 files changed, 9 insertions(+), 28 deletions(-) diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 6ae0ad7c1..4c7cac468 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -569,6 +569,15 @@ const WindowManager = new Lang.Class({ Shell.KeyBindingMode.TOPBAR_POPUP, Lang.bind(this, this._toggleAppMenu)); + Main.overview.connect('showing', Lang.bind(this, function() { + for (let i = 0; i < this._dimmedWindows.length; i++) + this._undimWindow(this._dimmedWindows[i]); + })); + Main.overview.connect('hiding', Lang.bind(this, function() { + for (let i = 0; i < this._dimmedWindows.length; i++) + this._dimWindow(this._dimmedWindows[i]); + })); + if (Main.sessionMode.hasWorkspaces) this._workspaceTracker = new WorkspaceTracker(this); diff --git a/js/ui/workspace.js b/js/ui/workspace.js index 645423728..65aef3628 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -194,7 +194,6 @@ const WindowClone = new Lang.Class({ addAttachedDialog: function(win) { this._doAddAttachedDialog(win, win.get_compositor_private()); this._computeBoundingBox(); - this._updateDimmer(); this.emit('size-changed'); }, @@ -208,7 +207,6 @@ const WindowClone = new Lang.Class({ clone.destroy(); this._computeBoundingBox(); - this._updateDimmer(); this.emit('size-changed'); })); this.actor.add_child(clone); @@ -228,18 +226,6 @@ const WindowClone = new Lang.Class({ return true; }); this.metaWindow.foreach_transient(iter); - - this._dimmer = new WindowManager.WindowDimmer(this._windowClone); - this._updateDimmer(); - }, - - _updateDimmer: function() { - if (this.actor.get_n_children() > 1) { - this._dimmer.setEnabled(true); - this._dimmer.dimFactor = 1.0; - } else { - this._dimmer.setEnabled(false); - } }, get boundingBox() { diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js index 7fc37c8d3..f51b1fa8b 100644 --- a/js/ui/workspaceThumbnail.js +++ b/js/ui/workspaceThumbnail.js @@ -106,9 +106,6 @@ const WindowClone = new Lang.Class({ return true; }); this.metaWindow.foreach_transient(iter); - - this._dimmer = new WindowManager.WindowDimmer(this.clone); - this._updateDimmer(); }, // Find the actor just below us, respecting reparenting done @@ -148,7 +145,6 @@ const WindowClone = new Lang.Class({ addAttachedDialog: function(win) { this._doAddAttachedDialog(win, win.get_compositor_private()); - this._updateDimmer(); }, _doAddAttachedDialog: function(metaDialog, realDialog) { @@ -159,20 +155,10 @@ const WindowClone = new Lang.Class({ Lang.bind(this, this._updateDialogPosition, clone)); clone._destroyId = realDialog.connect('destroy', Lang.bind(this, function() { clone.destroy(); - this._updateDimmer(); })); this.actor.add_child(clone); }, - _updateDimmer: function() { - if (this.actor.get_n_children() > 1) { - this._dimmer.setEnabled(true); - this._dimmer.dimFactor = 1.0; - } else { - this._dimmer.setEnabled(false); - } - }, - _updateDialogPosition: function(realDialog, cloneDialog) { let metaDialog = realDialog.meta_window; let dialogRect = metaDialog.get_outer_rect();