diff --git a/extension.js b/extension.js index c920725..689e926 100644 --- a/extension.js +++ b/extension.js @@ -15,9 +15,6 @@ const {Clutter, Gio, Meta} = imports.gi; -const Config = imports.misc.config; -const [GS_MAJOR, GS_MINOR] = Config.PACKAGE_VERSION.split('.'); - const Workspace = imports.ui.workspace.Workspace; const WindowManager = imports.ui.windowManager.WindowManager; const WINDOW_REPOSITIONING_DELAY = imports.ui.workspace.WINDOW_REPOSITIONING_DELAY; @@ -89,7 +86,7 @@ class Extension { // overview window layout. Therefore we call this method in addition. // https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/gnome-3-36/js/ui/workspace.js#L1877 // https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/workspace.js#L1415 - if (GS_MAJOR == 3 && GS_MINOR == 36) { + if (utils.shellVersionIs(3, 36)) { Workspace.prototype._addWindowClone = function(...params) { const [clone, overlay] = extensionThis._origAddWindowClone.apply(this, params); clone.connect('destroy', () => this._doRemoveWindow(clone.metaWindow)); diff --git a/src/common/utils.js b/src/common/utils.js index 1dead0a..61827a8 100644 --- a/src/common/utils.js +++ b/src/common/utils.js @@ -15,6 +15,9 @@ const {Gtk} = imports.gi; +const Config = imports.misc.config; +const [GS_MAJOR, GS_MINOR] = Config.PACKAGE_VERSION.split('.'); + const ExtensionUtils = imports.misc.extensionUtils; const Me = imports.misc.extensionUtils.getCurrentExtension(); @@ -42,3 +45,19 @@ function debug(message) { function isGTK4() { return Gtk.get_major_version() == 4; } + +function shellVersionIs(major, minor) { + return GS_MAJOR == major && GS_MINOR == minor; +} + +function shellVersionIsAtLeast(major, minor) { + if (GS_MAJOR > major) { + return true; + } + + if (GS_MAJOR == major) { + return GS_MINOR >= minor; + } + + return false; +} \ No newline at end of file diff --git a/src/prefs/FirePage.js b/src/prefs/FirePage.js index a4afbe6..66a700b 100644 --- a/src/prefs/FirePage.js +++ b/src/prefs/FirePage.js @@ -62,10 +62,6 @@ var FirePage = class FirePage extends PrefsPage { // ---------------------------------------------------------------------- public methods - getMinVersion() { - return [3, 36]; - } - getEnabledKey() { return 'fire-close-effect'; } diff --git a/src/prefs/MatrixPage.js b/src/prefs/MatrixPage.js index a8404a9..e6dbf47 100644 --- a/src/prefs/MatrixPage.js +++ b/src/prefs/MatrixPage.js @@ -15,6 +15,7 @@ const ExtensionUtils = imports.misc.extensionUtils; const Me = imports.misc.extensionUtils.getCurrentExtension(); +const utils = Me.imports.src.common.utils; const PrefsPage = Me.imports.src.prefs.PrefsPage.PrefsPage; ////////////////////////////////////////////////////////////////////////////////////////// @@ -27,6 +28,10 @@ var MatrixPage = class MatrixPage extends PrefsPage { constructor(settings, builder) { super(settings, builder); + if (!utils.shellVersionIsAtLeast(40, 0)) { + return; + } + this._builder.add_from_resource('/ui/gtk4/matrixPage.ui'); // Bind all properties. @@ -42,10 +47,6 @@ var MatrixPage = class MatrixPage extends PrefsPage { // ---------------------------------------------------------------------- public methods - getMinVersion() { - return [40, 0]; - } - getEnabledKey() { return 'matrix-close-effect'; } diff --git a/src/prefs/TRexPage.js b/src/prefs/TRexPage.js index 7248b4e..633cfff 100644 --- a/src/prefs/TRexPage.js +++ b/src/prefs/TRexPage.js @@ -15,6 +15,7 @@ const ExtensionUtils = imports.misc.extensionUtils; const Me = imports.misc.extensionUtils.getCurrentExtension(); +const utils = Me.imports.src.common.utils; const PrefsPage = Me.imports.src.prefs.PrefsPage.PrefsPage; ////////////////////////////////////////////////////////////////////////////////////////// @@ -27,6 +28,10 @@ var TRexPage = class TRexPage extends PrefsPage { constructor(settings, builder) { super(settings, builder); + if (!utils.shellVersionIsAtLeast(40, 0)) { + return; + } + this._builder.add_from_resource('/ui/gtk4/trexPage.ui'); // Bind all properties. @@ -42,10 +47,6 @@ var TRexPage = class TRexPage extends PrefsPage { // ---------------------------------------------------------------------- public methods - getMinVersion() { - return [40, 0]; - } - getEnabledKey() { return 'trex-close-effect'; } diff --git a/src/prefs/TVEffectPage.js b/src/prefs/TVEffectPage.js index 17b371a..284bd1b 100644 --- a/src/prefs/TVEffectPage.js +++ b/src/prefs/TVEffectPage.js @@ -40,10 +40,6 @@ var TVEffectPage = class TVEffectPage extends PrefsPage { // ---------------------------------------------------------------------- public methods - getMinVersion() { - return [3, 36]; - } - getEnabledKey() { return 'tv-close-effect'; }