From 737e9d334074147f570fa36aad4b4dac56064d2c Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Tue, 8 Nov 2022 20:57:12 +0100 Subject: [PATCH] :tada: Add shift parameter to glide effect [generate-references] --- kwin/glide/config.ui | 23 ++++++++ kwin/glide/main.xml | 7 ++- kwin/glide/onSettingsChanged.js | 1 + resources/shaders/glide.frag | 4 ++ resources/ui/adw/Glide.ui | 33 +++++++++++ resources/ui/gtk3/Glide.ui | 56 +++++++++++++++++++ resources/ui/gtk4/Glide.ui | 45 +++++++++++++++ ...ell.extensions.burn-my-windows.gschema.xml | 10 +++- src/Glide.js | 3 + 9 files changed, 178 insertions(+), 4 deletions(-) diff --git a/kwin/glide/config.ui b/kwin/glide/config.ui index 71e054e..74d24b9 100755 --- a/kwin/glide/config.ui +++ b/kwin/glide/config.ui @@ -86,6 +86,16 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + + Shift + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + @@ -109,6 +119,19 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + + -1.000000000000000 + + + 1.000000000000000 + + + 0.1 + + + diff --git a/kwin/glide/main.xml b/kwin/glide/main.xml index b5714a6..8d520ef 100755 --- a/kwin/glide/main.xml +++ b/kwin/glide/main.xml @@ -12,13 +12,16 @@ SPDX-License-Identifier: GPL-3.0-or-later 250 - 0.9 + 0.95 - 0.1 + 0.15 -0.3 + + -0.05 + \ No newline at end of file diff --git a/kwin/glide/onSettingsChanged.js b/kwin/glide/onSettingsChanged.js index c8ab453..b8ba059 100644 --- a/kwin/glide/onSettingsChanged.js +++ b/kwin/glide/onSettingsChanged.js @@ -8,3 +8,4 @@ effect.setUniform(this.shader, 'uScale', effect.readConfig('Scale', 1.0)); effect.setUniform(this.shader, 'uSquish', effect.readConfig('Squish', 1.0)); effect.setUniform(this.shader, 'uTilt', effect.readConfig('Tilt', 1.0)); +effect.setUniform(this.shader, 'uShift', effect.readConfig('Shift', 1.0)); diff --git a/resources/shaders/glide.frag b/resources/shaders/glide.frag index 25dc09d..7b6184e 100644 --- a/resources/shaders/glide.frag +++ b/resources/shaders/glide.frag @@ -17,6 +17,7 @@ uniform float uScale; uniform float uSquish; uniform float uTilt; +uniform float uShift; void main() { // We reverse the progress for window opening. @@ -35,6 +36,9 @@ void main() { // 'Tilt' image texture around x-axis. coords.x /= mix(1.0, 1.0 - 0.1 * uTilt * coords.y, progress); + // Move image texture vertically. + coords.y += uShift * progress; + // Move texture coordinate center to corner again. coords = coords * 0.5 + 0.5; diff --git a/resources/ui/adw/Glide.ui b/resources/ui/adw/Glide.ui index 08ad052..a3bd54a 100644 --- a/resources/ui/adw/Glide.ui +++ b/resources/ui/adw/Glide.ui @@ -141,6 +141,39 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + Shift + + + center + 1 + 2 + left + 300 + + + 1 + -1 + 0.01 + 0.1 + + + + + + + edit-clear-symbolic + center + Reset to Default Value + + + + + + \ No newline at end of file diff --git a/resources/ui/gtk3/Glide.ui b/resources/ui/gtk3/Glide.ui index 18959ed..7029422 100644 --- a/resources/ui/gtk3/Glide.ui +++ b/resources/ui/gtk3/Glide.ui @@ -35,6 +35,13 @@ SPDX-License-Identifier: GPL-3.0-or-later 0.1 + + 1 + -1 + 0.01 + 0.1 + + vertical @@ -243,6 +250,55 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + 10 + 10 + 10 + 10 + 0 + + + 8 + + + Shift + 0 + start + center + 1 + + + + + end + center + 1 + 2 + left + 300 + glide-shift + + + + + + + edit-clear-symbolic + 1 + + + Reset to Default Value + + + + + + + + diff --git a/resources/ui/gtk4/Glide.ui b/resources/ui/gtk4/Glide.ui index d780347..e52edb0 100644 --- a/resources/ui/gtk4/Glide.ui +++ b/resources/ui/gtk4/Glide.ui @@ -204,6 +204,51 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + 0 + + + + + Shift + 0 + start + center + 1 + + + + + end + center + 1 + 2 + left + 300 + + + 1 + -1 + 0.01 + 0.1 + + + + + + + edit-clear-symbolic + Reset to Default Value + + + + + + + diff --git a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml index 74c00e3..6af42eb 100644 --- a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml +++ b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml @@ -320,13 +320,13 @@ SPDX-License-Identifier: CC0-1.0 - 0.9 + 0.95 Glide Scale The scale of the window. - 0.1 + 0.15 Glide Squish The amount of squishing. @@ -337,6 +337,12 @@ SPDX-License-Identifier: CC0-1.0 The amount of tilting. + + -0.05 + Glide Shift + The amount of shifting. + + diff --git a/src/Glide.js b/src/Glide.js index f76e5f3..846c553 100644 --- a/src/Glide.js +++ b/src/Glide.js @@ -42,6 +42,7 @@ var Glide = class { shader._uScale = shader.get_uniform_location('uScale'); shader._uSquish = shader.get_uniform_location('uSquish'); shader._uTilt = shader.get_uniform_location('uTilt'); + shader._uShift = shader.get_uniform_location('uShift'); // Write all uniform values at the start of each animation. shader.connect('begin-animation', (shader, settings) => { @@ -49,6 +50,7 @@ var Glide = class { shader.set_uniform_float(shader._uScale, 1, [settings.get_double('glide-scale')]); shader.set_uniform_float(shader._uSquish, 1, [settings.get_double('glide-squish')]); shader.set_uniform_float(shader._uTilt, 1, [settings.get_double('glide-tilt')]); + shader.set_uniform_float(shader._uShift, 1, [settings.get_double('glide-shift')]); // clang-format on }); }); @@ -90,6 +92,7 @@ var Glide = class { dialog.bindAdjustment('glide-scale'); dialog.bindAdjustment('glide-squish'); dialog.bindAdjustment('glide-tilt'); + dialog.bindAdjustment('glide-shift'); // Finally, return the new settings page. return dialog.getBuilder().get_object('glide-prefs');