summarylogtreecommitdiffstats
path: root/mr1884.patch
diff options
context:
space:
mode:
Diffstat (limited to 'mr1884.patch')
-rw-r--r--mr1884.patch102
1 files changed, 102 insertions, 0 deletions
diff --git a/mr1884.patch b/mr1884.patch
new file mode 100644
index 000000000000..f77f2cab9b87
--- /dev/null
+++ b/mr1884.patch
@@ -0,0 +1,102 @@
+Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
+Source: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1884
+Editor: Sung Mingi <FiestaLake@protonmail.com>
+Commit: cac94861037a793a16e6ba2b174ff74837625406
+Last Updated: 04/02/22 (gnome-shell 42.0-1)
+
+diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
+index 116e9931d..d89ad17e2 100644
+--- a/js/ui/appDisplay.js
++++ b/js/ui/appDisplay.js
+@@ -202,6 +202,16 @@ var BaseAppView = GObject.registerClass({
+ this._scrollView.connect('leave-event', this._onLeave.bind(this));
+ this._scrollView.connect('button-press-event', this._onButtonPress.bind(this));
+
++ // Disable the the fade effect shader. IconGrid does its own fading
++ // that's much faster.
++ this._scrollView.update_fade_effect(
++ new Clutter.Margin({
++ left: 0.0,
++ right: 0.0,
++ top: 0.0,
++ bottom: 0.0,
++ }));
++
+ this._scrollView.add_actor(this._grid);
+
+ const scroll = this._scrollView.hscroll;
+@@ -380,10 +390,12 @@ var BaseAppView = GObject.registerClass({
+ -(this._availWidth - this._grid.layout_manager.pageWidth) / 2);
+ }
+
+- this._scrollView.update_fade_effect(fadeMargin);
+- const effect = this._scrollView.get_effect('fade');
+- if (effect)
+- effect.extend_fade_area = true;
++ this._updateFadeMargin(fadeMargin);
++ }
++
++ _updateFadeMargin(margin) {
++ const pagePos = this._adjustment.value / this._adjustment.page_size;
++ this._grid.updateFade(pagePos, margin);
+ }
+
+ _updateFade() {
+@@ -411,7 +423,7 @@ var BaseAppView = GObject.registerClass({
+ return;
+ }
+
+- this._scrollView.update_fade_effect(
++ this._updateFadeMargin(
+ new Clutter.Margin({
+ left: hOffset,
+ right: hOffset,
+@@ -2100,6 +2112,10 @@ class AppViewItem extends St.Button {
+ this.fake_release();
+ }
+
++ get dragging() {
++ return this._draggable && this._dragging;
++ }
++
+ get id() {
+ return this._id;
+ }
+diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js
+index 362cfda91..13f005d61 100644
+--- a/js/ui/iconGrid.js
++++ b/js/ui/iconGrid.js
+@@ -1407,4 +1407,33 @@ var IconGrid = GObject.registerClass({
+ const layoutManager = this.layout_manager;
+ return layoutManager.rows_per_page * layoutManager.columns_per_page;
+ }
++
++ updateFade(pagePosition, fadeMargin) {
++ const pageWidth = this.layout_manager.pageWidth;
++ const fadeOutLeftX = pagePosition * pageWidth + fadeMargin.left;
++ const fadeOutRightX = (pagePosition + 1) * pageWidth - fadeMargin.right;
++
++ let children = [];
++ for (let p = 0; p < this.nPages; p++) {
++ children = children.concat(
++ this.getItemsAtPage(p).filter(c => c.visible && !c.dragging)
++ );
++ }
++
++ children.forEach(child => {
++ const childWidth = child.width;
++ const childLeft = child.x;
++ const childRight = childLeft + childWidth;
++
++ let progress = 0.0;
++
++ if (childLeft < fadeOutLeftX && fadeMargin.left > 0)
++ progress = (fadeOutLeftX - childLeft) / childWidth;
++ else if (childRight > fadeOutRightX && fadeMargin.right > 0)
++ progress = (childRight - fadeOutRightX) / childWidth;
++
++ progress = Math.clamp(progress, 0.0, 1.0);
++ child.set_opacity((1.0 - progress) * 255.0);
++ });
++ }
+ });