diff --git a/gnome-shell-add-app-to-desktop.patch b/gnome-shell-add-app-to-desktop.patch index 2558956..7035356 100644 --- a/gnome-shell-add-app-to-desktop.patch +++ b/gnome-shell-add-app-to-desktop.patch @@ -1,8 +1,8 @@ -Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js +Index: gnome-shell-extensions-3.27.91/extensions/apps-menu/extension.js =================================================================== ---- gnome-shell-extensions-3.26.1.orig/extensions/apps-menu/extension.js -+++ gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js -@@ -7,6 +7,8 @@ const Lang = imports.lang; +--- gnome-shell-extensions-3.27.91.orig/extensions/apps-menu/extension.js ++++ gnome-shell-extensions-3.27.91/extensions/apps-menu/extension.js +@@ -6,6 +6,8 @@ const GMenu = imports.gi.GMenu; const Shell = imports.gi.Shell; const St = imports.gi.St; const Clutter = imports.gi.Clutter; @@ -11,37 +11,36 @@ Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js const Main = imports.ui.main; const Meta = imports.gi.Meta; const PanelMenu = imports.ui.panelMenu; -@@ -68,9 +70,20 @@ const ApplicationMenuItem = new Lang.Cla +@@ -61,8 +63,19 @@ class ApplicationMenuItem extends PopupM let textureCache = St.TextureCache.get_default(); let iconThemeChangedId = textureCache.connect('icon-theme-changed', - Lang.bind(this, this._updateIcon)); + this._updateIcon.bind(this)); + -+ this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress)); -+ this.actor.connect('popup-menu', Lang.bind(this, this._onKeyboardPopupMenu)); ++ this.actor.connect('button-press-event', this._onButtonPress.bind(this)); ++ this.actor.connect('popup-menu', this._onKeyboardPopupMenu.bind(this)); + this._menu = null; + this._menuManager = new PopupMenu.PopupMenuManager(this); + - this.actor.connect('destroy', Lang.bind(this, - function() { - textureCache.disconnect(iconThemeChangedId); + this.actor.connect('destroy', () => { + textureCache.disconnect(iconThemeChangedId); + if (this._menu) { + this._menu.destroy(); + this._menu = null; + this._menuManager = null; + } - })); + }); this._updateIcon(); -@@ -92,6 +105,105 @@ const ApplicationMenuItem = new Lang.Cla +@@ -84,6 +97,106 @@ class ApplicationMenuItem extends PopupM }); - }, + } -+ _onKeyboardPopupMenu: function() { ++ _onKeyboardPopupMenu() { + this.popupMenu(); + this._menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); -+ }, ++ } + -+ _onButtonPress: function(actor, event) { ++ _onButtonPress(actor, event) { + // close any opened menu to avoid input focus grab + if (this._menu && this._menu.isOpen) { + this._menu.close(); @@ -54,18 +53,18 @@ Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js + return true; + } + return false; -+ }, ++ } + -+ popupMenu: function() { ++ popupMenu() { + if (!this._menu) { + this._menu = new PopupMenu.PopupMenu(this.actor, 0.0, St.Side.TOP, 0); + let openItem = new PopupMenu.PopupMenuItem(_("Open")); + this._menu.addMenuItem(openItem); -+ openItem.connect('activate', Lang.bind(this, function() { ++ openItem.connect('activate', () => { + this._app.open_new_window(-1); + this._button.selectCategory(null, null); + this._button.menu.toggle(); -+ })); ++ }); + + let sepItem = new PopupMenu.PopupSeparatorMenuItem(); + this._menu.addMenuItem(sepItem); @@ -79,7 +78,7 @@ Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js + + let favItem = new PopupMenu.PopupMenuItem(favText); + this._menu.addMenuItem(favItem); -+ favItem.connect('activate', Lang.bind(this, function() { ++ favItem.connect('activate', () => { + let favs = AppFavorites.getAppFavorites(); + let isFavorite = favs.isFavorite(this._app.get_id()); + if (isFavorite) @@ -93,11 +92,11 @@ Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js + + this._button.selectCategory(null, null); + this._button.menu.toggle(); -+ })); ++ }); + + let desktopItem = new PopupMenu.PopupMenuItem(_("Add to Desktop")); + this._menu.addMenuItem(desktopItem); -+ desktopItem.connect('activate', Lang.bind(this, function() { ++ desktopItem.connect('activate', () => { + let desktopApp = this._app.get_app_info(); + let sourcePath = desktopApp.get_filename(); + let sourceFile = Gio.File.new_for_path(sourcePath); @@ -108,7 +107,8 @@ Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js + destDirPath = Glib.build_filenamev([GLib.get_home_dir(), "Desktop"]); + } + let destFile = Gio.File.new_for_path(destDirPath + '/' + sourceFile.get_basename()); -+ if (sourceFile.copy(destFile, Gio.FileCopyFlags.OVERWRITE, null, null)) { ++ if (sourceFile.copy(destFile, Gio.FileCopyFlags.OVERWRITE, ++ null, null, null)) { + // In order to make the general monitor recognize the setting of metadata, + // this function call should before the setting of unix mode. + destFile.set_attribute_string("metadata::trusted", @@ -122,7 +122,7 @@ Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js + } + this._button.selectCategory(null, null); + this._button.menu.toggle(); -+ })); ++ }); + + Main.uiGroup.add_actor(this._menu.actor); + @@ -133,8 +133,8 @@ Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js + this._menuManager.ignoreRelease(); + + return false; -+ }, ++ } + - activate: function(event) { - this._app.open_new_window(-1); + activate(event) { + this._app.open_new_window(-1); this._button.selectCategory(null, null); diff --git a/gnome-shell-extensions-3.26.2.tar.xz b/gnome-shell-extensions-3.26.2.tar.xz deleted file mode 100644 index 95ca2a9..0000000 --- a/gnome-shell-extensions-3.26.2.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aefda4d810ef5ceb9402e2d620f4bdc1dc40c9cc4f6a51749840f7dd08628ab6 -size 348720 diff --git a/gnome-shell-extensions-3.27.92.tar.xz b/gnome-shell-extensions-3.27.92.tar.xz new file mode 100644 index 0000000..e31f245 --- /dev/null +++ b/gnome-shell-extensions-3.27.92.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c56448090c039441a330ca66bb14cc2b46762ad84b2539b75bde4dbcb6e2d2b0 +size 198804 diff --git a/gnome-shell-extensions-window-list-app-icon-not-shown.patch b/gnome-shell-extensions-window-list-app-icon-not-shown.patch deleted file mode 100644 index d7ba760..0000000 --- a/gnome-shell-extensions-window-list-app-icon-not-shown.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 9e9064463b6a175d39ed1bda5e10a2a51f9db962 Mon Sep 17 00:00:00 2001 -From: Xiaoguang Wang -Date: Sat, 4 Nov 2017 15:16:29 +0800 -Subject: [PATCH] window-list: App icon not shown on the taskbar - -Some application can't show icon when working in wayland. -Use application state change signal to update app icon. - -https://bugzilla.gnome.org/show_bug.cgi?id=745064 ---- - extensions/window-list/extension.js | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js -index f01b872..6d341ce 100644 ---- a/extensions/window-list/extension.js -+++ b/extensions/window-list/extension.js -@@ -167,6 +167,11 @@ const WindowTitle = new Lang.Class({ - this._notifyAppId = - this._metaWindow.connect('notify::gtk-application-id', - Lang.bind(this, this._updateIcon)); -+ -+ let appSys = Shell.AppSystem.get_default(); -+ this._appStateChangedSignalId = -+ appSys.connect('app-state-changed', Lang.bind(this, this._updateIcon)); -+ - this._updateIcon(); - - this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); -@@ -210,6 +215,9 @@ const WindowTitle = new Lang.Class({ - this._metaWindow.disconnect(this._notifyMinimizedId); - this._metaWindow.disconnect(this._notifyWmClass); - this._metaWindow.disconnect(this._notifyAppId); -+ -+ let appSys = Shell.AppSystem.get_default(); -+ appSys.disconnect(this._appStateChangedSignalId); - } - }); - --- -2.13.6 diff --git a/gnome-shell-extensions.changes b/gnome-shell-extensions.changes index 6cf2980..0beb9c8 100644 --- a/gnome-shell-extensions.changes +++ b/gnome-shell-extensions.changes @@ -1,3 +1,56 @@ +------------------------------------------------------------------- +Tue Mar 6 10:26:32 UTC 2018 - dimstar@opensuse.org + +- Update to version 3.27.92: + + Updated translations. +- Drop gse-build-fixes.patch: fixed upstream. + +------------------------------------------------------------------- +Mon Mar 5 06:24:23 UTC 2018 - xwang@suse.com + +- Rebase gse-sle-classic-ext.patch (bsc#1082345). + +------------------------------------------------------------------- +Wed Feb 28 16:29:39 UTC 2018 - dimstar@opensuse.org + +- Modernize spec-file by calling spec-cleaner + +------------------------------------------------------------------- +Sat Feb 24 03:01:16 UTC 2018 - xwang@suse.com + +- Rebase gnome-shell-add-app-to-desktop.patch (bsc#1082345). +- Rebase gnome-shell-favorites-menu-at-end.patch +- Drop gnome-shell-extensions-window-list-app-icon-not-shown.patch: + fixed upstream. + +------------------------------------------------------------------- +Thu Feb 22 15:23:55 UTC 2018 - dimstar@opensuse.org + +- Update to version 3.27.91: + + places-menu: Support unmounting ejectable places. + + apps-menu: Support separators and custom sort order. + + Port to meson. + + window-list: Fix missing icons on wayland. + + places-menu: Fix terminating gnome-shell with recent gjs. + + auto-move: Make it work with wayland windows. + + Classic theme fixes. + + Require sassc for classic styling. + + Misc. bug fixes: bgo#772211, + glgo#GNOME/gnome-shell-extensions#32, + glgo#GNOME/gnome-shell-extensions#30. + + Updated translations. +- Switch to meson build system: + + Add meson BuildRequires. + + Replace configure/make/make_install with + meson/meson_build/meson_install macros. +- Add sassc BuildRequires: new dependency. +- Add gse-build-fixes.patch: Fix installation of classic desktop + session files. +- Disable SLE-classic patches that need rebase: + gse-sle-classic-ext.patch, gnome-shell-add-app-to-desktop.patch, + gnome-shell-favorites-menu-at-end.patch and + gnome-shell-extensions-window-list-app-icon-not-shown.patch. + ------------------------------------------------------------------- Thu Feb 8 00:42:44 UTC 2018 - xwang@suse.com @@ -18,6 +71,13 @@ Thu Dec 14 01:29:21 UTC 2017 - xwang@suse.com + Update sle-classic.desktop + Update sle-classic-xorg.desktop +------------------------------------------------------------------- +Wed Nov 29 03:27:01 UTC 2017 - badshah400@gmail.com + +- Update to version 3.27.1: + + Updated translations. +- Rebase gnome-shell-add-app-to-desktop.patch. + ------------------------------------------------------------------- Fri Nov 24 01:02:22 UTC 2017 - xwang@suse.com diff --git a/gnome-shell-extensions.spec b/gnome-shell-extensions.spec index f53c056..1fbe0d9 100644 --- a/gnome-shell-extensions.spec +++ b/gnome-shell-extensions.spec @@ -19,13 +19,13 @@ %global __requires_exclude typelib\\(Meta\\) Name: gnome-shell-extensions -Version: 3.26.2 +Version: 3.27.92 Release: 0 Summary: A collection of extensions for GNOME Shell -License: GPL-2.0+ +License: GPL-2.0-or-later Group: System/GUI/GNOME -Url: https://wiki.gnome.org/Projects/GnomeShell/Extensions -Source: https://download.gnome.org/sources/gnome-shell-extensions/3.26/%{name}-%{version}.tar.xz +URL: https://wiki.gnome.org/Projects/GnomeShell/Extensions +Source: http://download.gnome.org/sources/gnome-shell-extensions/3.27/%{name}-%{version}.tar.xz Source1: README.SUSE Source2: sle-classic.desktop Source3: SLE-theme.tar.gz @@ -38,8 +38,6 @@ Patch1: gnome-shell-add-app-to-desktop.patch Patch2: gnome-shell-favorites-menu-at-end.patch # PATCH-FEATURE-SLE sle-classic-lock-screen-background.patch bsc#1007468 xwang@suse.com -- add SUSE logo on lock screen when auth is requested Patch3: sle-classic-lock-screen-background.patch -# PATCH-FIX-UPSTREAM gnome-shell-extensions-window-list-app-icon-not-shown.patch bgo#745064 xwang@suse.com -- window-list application icon don't show on taskbar -Patch4: gnome-shell-extensions-window-list-app-icon-not-shown.patch ## NOTE keep SLE Classic patch at the bottom # PATCH-FIX-SLE gse-sle-classic-ext.patch Fate#318572 cxiong@suse.com -- add sle classic support Patch1000: gse-sle-classic-ext.patch @@ -51,7 +49,9 @@ BuildRequires: gnome-patch-translation BuildRequires: gnome-shell BuildRequires: gobject-introspection BuildRequires: intltool +BuildRequires: meson >= 0.44.0 BuildRequires: pkgconfig +BuildRequires: sassc BuildRequires: translation-update-upstream BuildRequires: pkgconfig(gio-2.0) BuildArch: noarch @@ -107,7 +107,6 @@ translation-update-upstream gnome-patch-translation-prepare %patch3 -p1 %endif -%patch4 -p1 %patch1000 -p1 ##gnome-patch-translation-update # In openSUSE GNOME, we don't launch gnome-session directly, but wrap this through a shell script, /usr/bin/gnome @@ -118,15 +117,14 @@ sed -i -e 's/openSUSE/SUSE Linux Enterprise/g' README.SUSE %endif %build -CLASSIC_EXTENSIONS=$(awk -F\" '/^CLASSIC_EXTENSIONS=/{ print $2 }' configure.ac) -CLASSIC_EXTENSIONS="${CLASSIC_EXTENSIONS} workspace-indicator" -%configure \ - --enable-classic-mode \ - --enable-extensions="$CLASSIC_EXTENSIONS" -make %{?_smp_mflags} +%meson \ + -D classic_mode=true \ + -D extension_set=classic \ + -D enable_extensions="alternate-tab,apps-menu,places-menu,launch-new-instance,window-list,workspace-indicator" +%meson_build %install -%make_install +%meson_install %find_lang %{name} %{?no_lang_C} install -m0644 %{SOURCE2} %{buildroot}/%{_datadir}/xsessions/sle-classic.desktop cp %{buildroot}/%{_datadir}/gnome-shell/extensions/window-list@gnome-shell-extensions.gcampax.github.com/classic.css \ @@ -170,13 +168,17 @@ ln -s %{_sysconfdir}/alternatives/default-waylandsession.desktop %{buildroot}%{_ %endif %files common -%defattr(-,root,root) -%doc COPYING README.SUSE +%license COPYING +%doc README.SUSE %files -n gnome-shell-classic -%defattr(-,root,root) -%doc COPYING +%license COPYING +%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.auto-move-windows.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.classic-overrides.gschema.xml +%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.example.gschema.xml +%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.native-window-placement.gschema.xml +%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml +%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.user-theme.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.window-list.gschema.xml %{_datadir}/gnome-session/sessions/gnome-classic.session %dir %{_datadir}/gnome-shell/extensions diff --git a/gnome-shell-favorites-menu-at-end.patch b/gnome-shell-favorites-menu-at-end.patch index af87e74..240e919 100644 --- a/gnome-shell-favorites-menu-at-end.patch +++ b/gnome-shell-favorites-menu-at-end.patch @@ -1,9 +1,9 @@ -Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js +Index: gnome-shell-extensions-3.27.91/extensions/apps-menu/extension.js =================================================================== ---- gnome-shell-extensions-3.26.1.orig/extensions/apps-menu/extension.js -+++ gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js -@@ -33,6 +33,10 @@ const HORIZ_FACTOR = 5; +--- gnome-shell-extensions-3.27.91.orig/extensions/apps-menu/extension.js ++++ gnome-shell-extensions-3.27.91/extensions/apps-menu/extension.js +@@ -32,6 +32,10 @@ const HORIZ_FACTOR = 5; const MENU_HEIGHT_OFFSET = 132; const NAVIGATION_REGION_OVERSHOOT = 50; @@ -11,19 +11,19 @@ Index: gnome-shell-extensions-3.26.1/extensions/apps-menu/extension.js + return Main.sessionMode.currentMode == "sle-classic" ? true : false; +} + - const ActivitiesMenuItem = new Lang.Class({ - Name: 'ActivitiesMenuItem', - Extends: PopupMenu.PopupBaseMenuItem, -@@ -790,8 +794,6 @@ const ApplicationsButton = new Lang.Clas - let tree = new GMenu.Tree({ menu_basename: 'applications.menu' }); - tree.load_sync(); - let root = tree.get_root_directory(); + class ActivitiesMenuItem extends PopupMenu.PopupBaseMenuItem { + constructor(button) { + super(); +@@ -776,8 +780,6 @@ class ApplicationsButton extends PanelMe + this.applicationsByCategory = {}; + this._tree.load_sync(); + let root = this._tree.get_root_directory(); - let categoryMenuItem = new CategoryMenuItem(this, null); - this.categoriesBox.add_actor(categoryMenuItem.actor); let iter = root.iter(); let nextType; while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) { -@@ -809,6 +811,10 @@ const ApplicationsButton = new Lang.Clas +@@ -795,6 +797,10 @@ class ApplicationsButton extends PanelMe } } diff --git a/gse-sle-classic-ext.patch b/gse-sle-classic-ext.patch index b25d8a2..982f48a 100644 --- a/gse-sle-classic-ext.patch +++ b/gse-sle-classic-ext.patch @@ -1,115 +1,7 @@ -Index: gnome-shell-extensions-3.26.1/data/gnome-classic.css +Index: gnome-shell-extensions-3.27.91/extensions/window-list/classic.css =================================================================== ---- gnome-shell-extensions-3.26.1.orig/data/gnome-classic.css -+++ gnome-shell-extensions-3.26.1/data/gnome-classic.css -@@ -500,7 +500,12 @@ StScrollBar { - color: rgba(46, 52, 54, 0.5); } - .popup-menu.panel-menu { - -boxpointer-gap: 4px; -- margin-bottom: 1.75em; } -+ /* TODO was 1.75em, no idea of its use */ -+ /* NOTE: the following creates an ugly gap between menu and its source actor -+when the PanelMenu's source actor is at the bottom. Preferrably for bottom menu, -+`margin-top` might be a better choice. However, since we have no idea about its -+use so reset to 0 for now. */ -+ margin-bottom: 0em; } - - .popup-menu-ornament { - text-align: right; -@@ -691,8 +696,7 @@ StScrollBar { - margin-right: 4px; } - #panel .panel-button .system-status-icon, - #panel .panel-button .app-menu-icon > StIcon, -- #panel .panel-button .popup-menu-arrow { -- icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9); } -+ #panel .panel-button .popup-menu-arrow {} - #panel .panel-button:hover { - color: #454f52; - text-shadow: 0px 1px 6px black; } -@@ -901,6 +905,7 @@ StScrollBar { - width: 31.5em; } - - .message-list-clear-button.button { -+ color: black; - background-color: transparent; - margin: 1.5em 1.5em 0; } - .message-list-clear-button.button:hover, .message-list-clear-button.button:focus { -@@ -924,7 +929,6 @@ StScrollBar { - padding: 0.68em 0.68em 0.68em 0.2em; } - - .message-icon-bin > StIcon { -- color: black; - icon-size: 1.09em; - -st-icon-style: symbolic; } - -@@ -941,11 +945,9 @@ StScrollBar { - .message-secondary-bin > StIcon { - icon-size: 1.09em; } - --.message-title { -- color: #222728; } -+.message-title {} - - .message-content { -- color: black; - padding: 10px; } - - .message-media-control { -@@ -1882,8 +1884,6 @@ StScrollBar { - #panel { - font-weight: normal; - background-color: #ededed !important; -- background-gradient-direction: vertical; -- background-gradient-end: #e0e0e0; - border-top-color: #666; - /* we don't support non-uniform border-colors and - use the top border color for any border, so we -@@ -1892,12 +1892,12 @@ StScrollBar { - border-bottom: 1px solid #666; - app-icon-bottom-clip: 0px; } - #panel:overview { -- background-color: #000; -- background-gradient-end: #000; -- border-top-color: #000; -- border-bottom: 1px solid #000; } -+ background-color: #000 !important; -+ background-gradient-end: #000 !important; -+ border-top-color: #000 !important; -+ border-bottom: 1px solid #000 !important; } - #panel:overview .panel-button { -- color: #fff; } -+ color: #fff !important; } - #panel .panel-button { - -natural-hpadding: 8px; - -minimum-hpadding: 4px; -@@ -1912,8 +1912,6 @@ StScrollBar { - icon-shadow: none; } - #panel .panel-button:hover { - text-shadow: none; } -- #panel .panel-button:hover .system-status-icon { -- icon-shadow: none; } - #panel .panel-button .app-menu-icon { - width: 0; - height: 0; -@@ -1924,12 +1922,10 @@ StScrollBar { - #panel .panel-corner:focus { - -panel-corner-radius: 0; } - #panel.lock-screen, #panel.unlock-screen, #panel.login-screen { -- background-color: rgba(46, 52, 54, 0.5); -- background-gradient-start: rgba(46, 52, 54, 0.5); -- background-gradient-end: rgba(46, 52, 54, 0.5); -+ background-color: transparent !important; - border-bottom: none; } - #panel.lock-screen .panel-button, #panel.unlock-screen .panel-button, #panel.login-screen .panel-button { -- color: #eeeeec; } -+ color: #eeeeec !important; } - #panel .popup-menu-arrow { - width: 0; - height: 0; } -Index: gnome-shell-extensions-3.26.1/extensions/window-list/classic.css -=================================================================== ---- gnome-shell-extensions-3.26.1.orig/extensions/window-list/classic.css -+++ gnome-shell-extensions-3.26.1/extensions/window-list/classic.css +--- gnome-shell-extensions-3.27.91.orig/extensions/window-list/classic.css ++++ gnome-shell-extensions-3.27.91/extensions/window-list/classic.css @@ -6,7 +6,7 @@ height: 2.25em ; } @@ -151,11 +43,11 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/classic.css color: #888; box-shadow: inset -1px -1px 1px rgba(0,0,0,0.5); } -Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js +Index: gnome-shell-extensions-3.27.91/extensions/window-list/extension.js =================================================================== ---- gnome-shell-extensions-3.26.1.orig/extensions/window-list/extension.js -+++ gnome-shell-extensions-3.26.1/extensions/window-list/extension.js -@@ -28,6 +28,401 @@ const GroupingMode = { +--- gnome-shell-extensions-3.27.91.orig/extensions/window-list/extension.js ++++ gnome-shell-extensions-3.27.91/extensions/window-list/extension.js +@@ -27,6 +27,395 @@ const GroupingMode = { ALWAYS: 2 }; @@ -164,10 +56,8 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js +} + +// NOTE: call `initializeWindowList` explicitly to finish initialization. -+var PureWinList = new Lang.Class({ -+ Name: 'PureWinList', -+ -+ _init: function(perMonitor, monitor, maxWidthFunc) { ++class PureWinList { ++ constructor(perMonitor, monitor, maxWidthFunc) { + // NOTE: in SLE Classic `PureWinList` will NOT use any multiple monitor + // support, the following is kept for use in GNOME Classic as we try to + // unify code for two sides. @@ -186,25 +76,25 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + x_expand: true, + y_expand: true }); + -+ this.actor.connect('style-changed', Lang.bind(this, function() { ++ this.actor.connect('style-changed', () => { + let node = this.actor.get_theme_node(); + let spacing = node.get_length('spacing'); + this.actor.layout_manager.spacing = spacing; -+ })); -+ this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent)); -+ this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); ++ }); ++ this.actor.connect('scroll-event', this._onScrollEvent.bind(this)); ++ this.actor.connect('destroy', this._onDestroy.bind(this)); + + this._appSystem = Shell.AppSystem.get_default(); + this._appStateChangedId = + this._appSystem.connect('app-state-changed', -+ Lang.bind(this, this._onAppStateChanged)); ++ this._onAppStateChanged.bind(this)); + + this._settings = Convenience.getSettings(); + + // Grouping + this._groupingModeChangedId = + this._settings.connect('changed::grouping-mode', -+ Lang.bind(this, this._groupingModeChanged)); ++ this._groupingModeChanged.bind(this)); + this._grouped = undefined; + // NOTE: do NOT `_checkGrouping` here + @@ -212,45 +102,45 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + this._workspaceSignals = new Map(); + this._nWorkspacesChangedId = + global.screen.connect('notify::n-workspaces', -+ Lang.bind(this, this._onWorkspacesChanged)); ++ this._onWorkspacesChanged.bind(this)); + this._onWorkspacesChanged(); + + this._switchWorkspaceId = + global.window_manager.connect('switch-workspace', -+ Lang.bind(this, this._checkGrouping)); ++ this._checkGrouping.bind(this)); + + // Hide and Show with Overview + this._overviewShowingId = -+ Main.overview.connect('showing', Lang.bind(this, function() { ++ Main.overview.connect('showing', () => { + this.actor.hide(); -+ })); ++ }); + + this._overviewHidingId = -+ Main.overview.connect('hiding', Lang.bind(this, function() { ++ Main.overview.connect('hiding', () => { + this.actor.show(); -+ })); ++ }); + + this._groupingMode = this._settings.get_enum('grouping-mode'); -+ }, ++ } + -+ _getDynamicWorkspacesSettings: function() { ++ _getDynamicWorkspacesSettings() { + if (this._workspaceSettings.list_keys().indexOf('dynamic-workspaces') > -1) + return this._workspaceSettings; + return this._mutterSettings; -+ }, ++ } + + // NOTE: an API for parent panel to refresh the window list. This is + // necessary as window/app buttons require its parents having allocation and + // positioning *completed* before being properly allocated and positioned -+ initializeWindowList: function() { ++ initializeWindowList() { + this._groupingModeChanged(); -+ }, ++ } + + // NOTE: support scrolling in window list s.t. scrolling activate window + // buttons sequentially. + // + // *Code is rewritten*. -+ _onScrollEvent: function(actor, event) { ++ _onScrollEvent(actor, event) { + let direction = event.get_scroll_direction(); + let diff = 0; + if (direction === Clutter.ScrollDirection.DOWN) @@ -282,9 +172,9 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + + // TODO: no need to call `deactivate` for old `active button` ? + buttons[activeBtnIdx].activate(); -+ }, ++ } + -+ _onAppStateChanged: function(appSys, app) { ++ _onAppStateChanged(appSys, app) { + if (!this._grouped) + return; + @@ -292,17 +182,17 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + this._addApp(app); + else if (app.state == Shell.AppState.STOPPED) + this._removeApp(app); -+ }, ++ } + -+ _addApp: function(app) { ++ _addApp(app) { + let button = new AppButton(app, this._perMonitor, this._monitor.index); + this.actor.layout_manager.pack(button.actor, + true, true, true, + Clutter.BoxAlignment.START, + Clutter.BoxAlignment.START) -+ }, ++ } + -+ _removeApp: function(app) { ++ _removeApp(app) { + let children = this.actor.get_children(); + for (let i = 0; i < children.length; i++) { + if (children[i]._delegate.app === app) { @@ -310,9 +200,9 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + return; + } + } -+ }, ++ } + -+ _groupingModeChanged: function() { ++ _groupingModeChanged() { + this._groupingMode = this._settings.get_enum('grouping-mode'); + + if (this._groupingMode == GroupingMode.AUTO) { @@ -321,9 +211,9 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + this._grouped = ( this._groupingMode === GroupingMode.ALWAYS ); + this._populateWindowList(); + } -+ }, ++ } + -+ _checkGrouping: function() { ++ _checkGrouping() { + if (this._groupingMode != GroupingMode.AUTO) + return; + @@ -355,9 +245,9 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + this._grouped = grouped; + this._populateWindowList(); + } -+ }, ++ } + -+ _populateWindowList: function() { ++ _populateWindowList() { + this.actor.destroy_all_children(); + + if (!this._grouped) { @@ -377,11 +267,11 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + for (let i = 0; i < apps.length; i++) + this._addApp(apps[i]); + } -+ }, ++ } + + // NOTE the `ws` params in the following two are not used (necessarily be + // here as the event handler Interface dictates). -+ _onWindowAdded: function(ws, win) { ++ _onWindowAdded(ws, win) { + if (win.skip_taskbar) + return; + @@ -402,9 +292,9 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + true, true, true, + Clutter.BoxAlignment.START, + Clutter.BoxAlignment.START); -+ }, ++ } + -+ _onWindowRemoved: function(ws, win) { ++ _onWindowRemoved(ws, win) { + if (this._grouped) + this._checkGrouping(); + @@ -423,9 +313,9 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + return; + } + } -+ }, ++ } + -+ _getPreferredUngroupedWindowListWidth: function() { ++ _getPreferredUngroupedWindowListWidth() { + if (this.actor.get_n_children() == 0) + return this.actor.get_preferred_width(-1)[1]; + @@ -435,19 +325,16 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + + let workspace = global.screen.get_active_workspace(); + let windows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace); -+ if (this._perMonitor) { -+ windows = windows.filter(Lang.bind(this, function(window) { -+ return window.get_monitor() == this._monitor.index; -+ })); -+ } ++ if (this._perMonitor) ++ windows = windows.filter(w => w.get_monitor() == this._monitor.index); + let nWindows = windows.length; + if (nWindows == 0) + return this.actor.get_preferred_width(-1)[1]; + + return nWindows * childWidth + (nWindows - 1) * spacing; -+ }, ++ } + -+ _onWorkspacesChanged: function() { ++ _onWorkspacesChanged() { + let numWorkspaces = global.screen.n_workspaces; + for (let i = 0; i < numWorkspaces; i++) { + let workspace = global.screen.get_workspace_by_index(i); @@ -457,15 +344,15 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + let signals = { windowAddedId: 0, windowRemovedId: 0 }; + signals._windowAddedId = + workspace.connect_after('window-added', -+ Lang.bind(this, this._onWindowAdded)); ++ this._onWindowAdded.bind(this)); + signals._windowRemovedId = + workspace.connect('window-removed', -+ Lang.bind(this, this._onWindowRemoved)); ++ this._onWindowRemoved.bind(this)); + this._workspaceSignals.set(workspace, signals); + } -+ }, ++ } + -+ _disconnectWorkspaceSignals: function() { ++ _disconnectWorkspaceSignals() { + let numWorkspaces = global.screen.n_workspaces; + for (let i = 0; i < numWorkspaces; i++) { + let workspace = global.screen.get_workspace_by_index(i); @@ -474,9 +361,9 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + workspace.disconnect(signals._windowAddedId); + workspace.disconnect(signals._windowRemovedId); + } -+ }, ++ } + -+ _onDestroy: function() { ++ _onDestroy() { + Main.overview.disconnect(this._overviewHidingId); + this._overviewHidingId = 0; + Main.overview.disconnect(this._overviewShowingId); @@ -498,15 +385,14 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + for (let i = 0; i < windows.length; i++) + windows[i].metaWindow.set_icon_geometry(null); + } -+}); ++}; + -+var SCExtension = new Lang.Class({ -+ Name: 'SCExtension', -+ _init: function() { ++class SCExtension { ++ constructor() { + this._pureWinList = null; -+ }, ++ } + -+ enable: function() { ++ enable() { + // NOTE For SLE Classic, a window list is shown on Main panel ONLY + let showOnAllMonitors = false; + // NOTE Use a guessed value passed to `PureWinList` as `checkGrouping` @@ -537,9 +423,9 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + // NOTE: IMO, no need to rebuild `_pureWinList` when monitors changed. + // No need for `showOnAllMonitors` change either even this option + // changes. -+ }, ++ } + -+ disable: function() { ++ disable() { + if (!this._pureWinList) + return; + @@ -547,18 +433,18 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + this._pureWinList.actor.destroy(); + + this._pureWinList = null; -+ }, ++ } + + // NOTE: this function is used for multiple window list situations, invalid for SCExtension case, let's return false. -+ someWindowListContains: function(actor) { ++ someWindowListContains(actor) { + return false; + } -+}); ++}; function _minimizeOrActivateWindow(window) { let focusWindow = global.display.focus_window; -@@ -1302,5 +1697,10 @@ const Extension = new Lang.Class({ - }); +@@ -1258,5 +1647,10 @@ class Extension { + }; function init() { - return new Extension(); @@ -569,10 +455,10 @@ Index: gnome-shell-extensions-3.26.1/extensions/window-list/extension.js + return new Extension(); + } } -Index: gnome-shell-extensions-3.26.1/extensions/window-list/stylesheet.css +Index: gnome-shell-extensions-3.27.91/extensions/window-list/stylesheet.css =================================================================== ---- gnome-shell-extensions-3.26.1.orig/extensions/window-list/stylesheet.css -+++ gnome-shell-extensions-3.26.1/extensions/window-list/stylesheet.css +--- gnome-shell-extensions-3.27.91.orig/extensions/window-list/stylesheet.css ++++ gnome-shell-extensions-3.27.91/extensions/window-list/stylesheet.css @@ -79,6 +79,10 @@ border: 1px solid #cccccc; }