fs2.patch 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. From 8ae0c69ccf9dede2770ca8e74945e29b8c528aa5 Mon Sep 17 00:00:00 2001
  2. From: Cosimo Cecchi <cosimoc@gnome.org>
  3. Date: Fri, 16 Oct 2015 13:45:09 -0700
  4. Subject: windowManager: fix fullscreen clone being left around
  5. If we get another effect on the same actor, we should make sure to
  6. remove the clone through the "overwrite" methods provided by Tweener, or
  7. there will be a race that might end up with a stray clone being left
  8. around.
  9. https://bugzilla.gnome.org/show_bug.cgi?id=756714
  10. ---
  11. js/ui/windowManager.js | 15 ++++++++++++++-
  12. 1 file changed, 14 insertions(+), 1 deletion(-)
  13. diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
  14. index c8996d8..32b8c0f 100644
  15. --- a/js/ui/windowManager.js
  16. +++ b/js/ui/windowManager.js
  17. @@ -1296,7 +1296,10 @@ const WindowManager = new Lang.Class({
  18. transition: 'easeOutQuad',
  19. onComplete: this._sizeChangeWindowDone,
  20. onCompleteScope: this,
  21. - onCompleteParams: [shellwm, actor]
  22. + onCompleteParams: [shellwm, actor],
  23. + onOverwrite: this._sizeChangeWindowOverwritten,
  24. + onOverwriteScope: this,
  25. + onOverwriteParams: [shellwm, actor]
  26. });
  27. // Now unfreeze actor updates, to get it to the new size.
  28. @@ -1321,6 +1324,16 @@ const WindowManager = new Lang.Class({
  29. }
  30. },
  31. + _sizeChangeWindowOverwritten: function(shellwm, actor) {
  32. + if (this._removeEffect(this._resizing, actor)) {
  33. + let actorClone = actor.__fullscreenClone;
  34. + if (actorClone) {
  35. + actorClone.destroy();
  36. + delete actor.__fullscreenClone;
  37. + }
  38. + }
  39. + },
  40. +
  41. _hasAttachedDialogs: function(window, ignoreWindow) {
  42. var count = 0;
  43. window.foreach_transient(function(win) {
  44. --
  45. cgit v0.11.2