Ver código fonte

fix fs issues

Jan Alexander Steffens 9 anos atrás
pai
commit
ec6830c30d
3 arquivos alterados com 104 adições e 3 exclusões
  1. 9 3
      PKGBUILD
  2. 44 0
      fs1.patch
  3. 51 0
      fs2.patch

+ 9 - 3
PKGBUILD

@@ -3,7 +3,7 @@
 
 pkgname=gnome-shell
 pkgver=3.18.1
-pkgrel=1
+pkgrel=2
 pkgdesc="The next generation GNOME Shell"
 arch=(i686 x86_64)
 url="http://live.gnome.org/GnomeShell"
@@ -18,13 +18,19 @@ optdepends=('gnome-control-center: System settings'
 install=gnome-shell.install
 groups=(gnome)
 source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz
-        nm-libexecdir.patch)
+        nm-libexecdir.patch fs1.patch fs2.patch)
 sha256sums=('14a15215b3e29a25b94f69c58a6565e3a8cb2259b1ca242b906af78172bf3845'
-            'e5bb10ad2e5c3e0fde3d05babd1bfdda701e553e02d493f7e54cb7832ce7e607')
+            'e5bb10ad2e5c3e0fde3d05babd1bfdda701e553e02d493f7e54cb7832ce7e607'
+            '0d2f143362ff47bfd3dcbb94d903b51b9a998f2ff97c6320f0e3fe3599089e34'
+            '19f39002be34f035c7f5f8f20bad50ab38fb8ff0f023e91e832feecc54fcdc60')
 
 prepare() {
   cd $pkgname-$pkgver
 
+  # Fullscreen animation issues
+  patch -Np1 -i ../fs1.patch
+  patch -Np1 -i ../fs2.patch
+
   # FS#30747 FS#32730 Problems due to libexecdir different from NM
   patch -Np1 -i ../nm-libexecdir.patch
 }

+ 44 - 0
fs1.patch

@@ -0,0 +1,44 @@
+From ab2ca17b766556eec7c5c47c4d75ef6ff45a31a7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
+Date: Fri, 16 Oct 2015 15:36:33 +0200
+Subject: windowManager: Fix fullscreen animations on dualscreen
+
+The translation should describe the difference between the fullscreened
+and unfullscreened position of the window - however we are currently
+assuming a fullscreen position of (0, 0) instead of the monitor's origin,
+which causes glitches on dualscreen setups.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=756697
+---
+ js/ui/windowManager.js | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
+index 2ee99e3..c8996d8 100644
+--- a/js/ui/windowManager.js
++++ b/js/ui/windowManager.js
+@@ -1235,15 +1235,17 @@ const WindowManager = new Lang.Class({
+     },
+ 
+     _fullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
+-        actor.translation_x = oldFrameRect.x;
+-        actor.translation_y = oldFrameRect.y;
++        let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
++        actor.translation_x = oldFrameRect.x - monitor.x;
++        actor.translation_y = oldFrameRect.y - monitor.y;
+         this._fullscreenAnimation(shellwm, actor, oldFrameRect);
+     },
+ 
+     _unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
+         let targetRect = actor.meta_window.get_frame_rect();
+-        actor.translation_x = -targetRect.x;
+-        actor.translation_y = -targetRect.y;
++        let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
++        actor.translation_x = -(targetRect.x - monitor.x);
++        actor.translation_y = -(targetRect.y - monitor.y);
+         this._fullscreenAnimation(shellwm, actor, oldFrameRect);
+     },
+ 
+-- 
+cgit v0.11.2
+

+ 51 - 0
fs2.patch

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