Accepting request 539470 from GNOME:Factory

- Move SLE-Classic function to gnome-shell-extensions package
  (bsc#1065611).
  + Remove gs-sle-classic-ext.patch
  + Remove SLEClassicExt.js (forwarded request 539427 from xiaoguang_wang)

OBS-URL: https://build.opensuse.org/request/show/539470
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gnome-shell?expand=0&rev=144
This commit is contained in:
Dominique Leuenberger 2017-11-10 13:45:20 +00:00 committed by Git OBS Bridge
commit 24efc2f3d4
10 changed files with 50 additions and 563 deletions

View File

@ -1,298 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
//
//
// Extra features needed by SLE Classic mode. A lot of features here are
// designed as modular functions or classes, so it's cumbersome to fit in a
// patch. However, most functionality requires a patch to the GNOME Shell core
// to work. A design principle is to keep this adapter patch as small and clear as possible.
//
// NOTE This file should be packed into GNOME Shell GResource files, with inner
// path "%{_datadir}/gnome-shell/js/ui/" and used by "imports.ui.SLEClassicExt".
//
// [5-5] Major Update: SLE Classic is no longer a full-fledged GNOME session,
// instead it's a runtime modified GNOME Classic.
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
const Main = imports.ui.main;
const GNOME_CLASSIC_SESSION_NAME = "classic";
// NOTE About `global.session_mode`, which maps
// normal GNOME session -> "user"
// GNOME classic -> "classic" (i.e. the "gnome-" prefix is stripped)
// SLE classic -> "sle-classic" (depreciated)
//
// This var is defined in the C code and some parts of the Shell use it instead
// of `Main.sessionMode.currentMode`, notably `exensionSystem`. An important
// difference is that `global.session_mode` is initialized much earlier than
// `currentMode` and it does NOT reflect in-Session mode change, e.g. the
// lock/unlock screen.
// NOTE a dedicated env var to mark this classic mode a SLE classic, see
// sle-classic.desktop.
var isSLEClassicEnv = ( GLib.getenv('SLE_CLASSIC_MODE') !== null );
// NOTE: A mode can be verified as SLE classic iff it's GNOME Classic and it has
// SLE_CLASSIC_MODE envar set.
function isSLEClassicMode() {
// NOTE: must check this part so lock screen is not SLE Classic.
if ( Main.sessionMode.currentMode !== GNOME_CLASSIC_SESSION_NAME )
return false;
return isSLEClassicEnv;
}
// NOTE: safe to use BEFORE `sessionMode` has been properly initialized
function isSLEClassicModeGlobal () {
if ( global.session_mode !== GNOME_CLASSIC_SESSION_NAME )
return false;
return isSLEClassicEnv;
}
// NOTE: Originally "sle-classic.json" under "gnome-shell/modes" dir.
//
// TODO: strip down to differences with "classic.json"
var SLE_CLASSIC_JSON = {
"parentMode": "user",
"stylesheetName": "gnome-classic.css",
"enabledExtensions": [
"apps-menu@gnome-shell-extensions.gcampax.github.com", "places-menu@gnome-shell-extensions.gcampax.github.com",
"alternate-tab@gnome-shell-extensions.gcampax.github.com",
"launch-new-instance@gnome-shell-extensions.gcampax.github.com",
"window-list@gnome-shell-extensions.gcampax.github.com",
"workspace-indicator@gnome-shell-extensions.gcampax.github.com"
],
"panel": {
"left": ["activities"],
"center": [],
"right": ["a11y", "keyboard", "dateMenu", "aggregateMenu"]
}
};
// NOTE: used in "sessionMode.js::_loadMode"
//
// If the current mode is SLE Classic, return `SLE_CLASSIC_JSON`. O/w no
// changes.
function convertClassic2SLE(json) {
// NOTE: `Main.sessionMode` have not initialized.
if ( ! isSLEClassicModeGlobal() )
return json;
return SLE_CLASSIC_JSON;
}
// NOTE: used in `SLEClassicExt.init`
//
// NOTE: it's mandatory to disable app menu in SLE Classic but restore the old
// settings after switching back. A more proper solution would be to introduce a
// dconf overrides key AND change the GSD part to read the overriden value. Too
// much work, keep it a hack for now.
function toggleAppMenu() {
let xsetting = new Gio.Settings({ schema: 'org.gnome.settings-daemon.plugins.xsettings' });
let valueObj = xsetting.get_value('overrides').unpack();
// NOTE: as dictated by the definitions in gschema, the values for the
// following flags can NOT be booleans, but instead 0 or 1.
// NOTE: special handling, as if `Gtk/ShellShowsAppMenu` is NOT set, it's
// treated as true by XSettings
const showAppMenuKey = 'Gtk/ShellShowsAppMenu';
const showAppMenuSLESetKey = 'Gtk/ShellShowsAppMenu/SLESet';
// NOTE double `unpack` is needed as 'a{sv}' construction would wrap the value
// in an extra Variant container.
let showAppMenuP = valueObj[showAppMenuKey]
? valueObj[showAppMenuKey].unpack().unpack()
: 1;
let showAppMenuSLESet = valueObj[showAppMenuSLESetKey]
? valueObj[showAppMenuSLESetKey].unpack().unpack()
: 0;
// NOTE extra check to make sure `showAppMenuP` and `showAppMenuSLESet` are
// numbers. ('v' can be many other types and it's possible the user sets so)
// The fallback value is the same as above defaults.
if (typeof showAppMenuP !== 'number') {
showAppMenuP = 1;
}
if (typeof showAppMenuSLESet !== 'number') {
showAppMenuSLESet = 0;
}
// NOTE: In SLE Classic mode, if app menu is set to shown, hide it and set a
// special flag to mark this change for restoring.
if (isSLEClassicModeGlobal() && showAppMenuP) {
showAppMenuP = 0;
showAppMenuSLESet = 1;
}
// NOTE: in none-SLE Classic mode, if app menu is hidden AND `SLESet` flag
// is set, show the app menu and reset the `SLESet` flag.
if ( !isSLEClassicModeGlobal() && showAppMenuSLESet) {
showAppMenuP = 1;
showAppMenuSLESet = 0;
}
valueObj[showAppMenuKey] = GLib.Variant.new('i', showAppMenuP);
valueObj[showAppMenuSLESetKey] = GLib.Variant.new('i', showAppMenuSLESet);
xsetting.set_value('overrides', GLib.Variant.new('a{sv}', valueObj));
}
// NOTE: used in `main.js::start`
function init() {
toggleAppMenu();
}
var panelPosUpdateId = null;
// layout.js: Replace the origin "box.set_position" call
function setMainPanelPosition (mainPanel, primaryMonitor) {
if ( isSLEClassicMode() ){
let mainPanelHeight = mainPanel.height == 0
? 28 : mainPanel.height;
// Main Panel at the bottom
mainPanel.set_position(primaryMonitor.x,
primaryMonitor.y + primaryMonitor.height - mainPanelHeight);
// NOTE: needed s.t. lock screen would have top panel
//
// TODO use the `updated` signal to change main panel to remove the patch?
if ( !panelPosUpdateId ){
panelPosUpdateId = Main.sessionMode.connect('updated', function(){
setMainPanelPosition(Main.layoutManager.panelBox, Main.layoutManager.primaryMonitor);
});
}
}
else {
mainPanel.set_position(primaryMonitor.x, primaryMonitor.y);
}
}
// panel.js: Replace the original "Panel._allocate".
//
// The differences are quite subtle but yet pervasive, so despite the
// similarity, there will be two versions of allocation functions.
//
// The main difference is to use the empty(in Classic) _centerBox for window
// list.
//
// NOTE: has to be a *direct* replacement to have proper `this` setup
function _allocate (actor, box, flags) {
// NOTE: for convenience, the followings are shared. The params of this
// function is also shared.
let allocWidth = box.x2 - box.x1;
let allocHeight = box.y2 - box.y1;
let [leftMinWidth, leftNaturalWidth] = this._leftBox.get_preferred_width(-1);
let [centerMinWidth, centerNaturalWidth] = this._centerBox.get_preferred_width(-1);
let [rightMinWidth, rightNaturalWidth] = this._rightBox.get_preferred_width(-1);
// bind sub function's `this` to the current `this`, i.e. Main.panel
let allocateSC = _allocateSC.bind(this);
// For convenience, defined here to allow access to local vars
function _allocateSC () {
let isTextDirRTL = ( this.actor.get_text_direction() === Clutter.TextDirection.RTL );
// A mask to create allocation.
let maskBox = new Clutter.ActorBox();
// NOTE: policy here is to satisfy left&right boxes space needs first with
// center box can be shrinked. (This is the opposite of the original
// allocator, this idea here is to accomodate SLE-Classic window list within
// center box first. )
let maxSideWidth = Math.floor( (allocWidth - centerMinWidth) / 2 );
let leftWidth = Math.min(maxSideWidth, leftNaturalWidth);
let rightWidth = Math.min(maxSideWidth, rightNaturalWidth);
// NOTE: in the case, flooring for maxSideWidth does happen, the following equation yields:
// : centerWidth = centerMinWidth + 1
// this avoids the cumbersome floor/ceil in orginal code.
//
// `centerWidth` is shrinkable with an lower bound `centerMinWidth` or `centerMinWidth + 1`
let centerWidth = allocWidth - leftWidth - rightWidth;
// Adjust left/center/right boxes start Y position
//
// After moving the panel to the bottom side, the top border will be
// added instead of the bottom border. However all 3 box of the main
// panel are absolutely positioned starting from the top edge of the
// panel originally, this results that the bottom pixel line is not
// clickable. Add a Y offset to fix it.
//
// NOTE: we can set y1 as (MainLayoutManager.primaryMonitor.height -
// allocHeight), which seems to be easier, however the solution below is
// more generic and versatile.
let node = Main.panel.actor.get_theme_node();
let borderTopWidth = node.get_length("border-top");
let y_offset = borderTopWidth;
maskBox.y1 = y_offset;
// TODO: in previous version of SLE Classic the following is
// `allocHeight + y_offset`, why?
maskBox.y2 = allocHeight;
// Normal order, from left to right
if ( ! isTextDirRTL ) {
maskBox.x1 = 0;
maskBox.x2 = maskBox.x1 + leftWidth;
this._leftBox.allocate(maskBox, flags);
maskBox.x1 = maskBox.x2;
maskBox.x2 = maskBox.x1 + centerWidth;
this._centerBox.allocate(maskBox, flags);
maskBox.x1 = maskBox.x2;
maskBox.x2 = maskBox.x1 + rightWidth;
this._rightBox.allocate(maskBox, flags);
}
// Right to Left: essentially right box left box are swapped
else {
maskBox.x2 = allocWidth;
maskBox.x1 = maskBox.x2 - leftWidth;
this._leftBox.allocate(maskBox, flags);
maskBox.x2 = maskBox.x1;
maskBox.x1 = maskBox.x2 - centerWidth;
this._centerBox.allocate(maskBox, flags)
maskBox.x2 = maskBox.x1;
maskBox.x1 = maskBox.x2 - rightWidth;
this._rightBox.allocate(maskBox, flags)
}
}
// Real work...
if (isSLEClassicMode()) {
// SC: Sle Classic
allocateSC();
}
else {
this._allocateOrigin(actor, box, flags);
}
// TODO: what are these corners for? They are zero on my test machines.
// Without proper understanding of their purposes, they are the same for
// both original code and SLE Classic.
let cornerMinWidth, cornerMinHeight;
let cornerWidth, cornerHeight;
let childBox = new Clutter.ActorBox();
[cornerMinWidth, cornerWidth] = this._leftCorner.actor.get_preferred_width(-1);
[cornerMinHeight, cornerHeight] = this._leftCorner.actor.get_preferred_height(-1);
childBox.x1 = 0;
childBox.x2 = cornerWidth;
childBox.y1 = allocHeight;
childBox.y2 = allocHeight + cornerHeight;
this._leftCorner.actor.allocate(childBox, flags);
[cornerMinWidth, cornerWidth] = this._rightCorner.actor.get_preferred_width(-1);
[cornerMinHeight, cornerHeight] = this._rightCorner.actor.get_preferred_height(-1);
childBox.x1 = allocWidth - cornerWidth;
childBox.x2 = allocWidth;
childBox.y1 = allocHeight;
childBox.y2 = allocHeight + cornerHeight;
this._rightCorner.actor.allocate(childBox, flags);
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:38d98da06eb0118a0226623494b11765b3981414e804e270dc0cf03e37c708b9
size 1407912

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e5a87f2f838d981db9823352b90b2ce2f40d24d31ed9f062dccfa41b820e0b1c
size 1405580

View File

@ -141,7 +141,7 @@ diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index 771f23dc2..9f1cb56c6 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -308,6 +308,7 @@ var Keyboard = new Lang.Class({
@@ -306,6 +306,7 @@ var Keyboard = new Lang.Class({
},
_syncEnabled: function () {
@ -149,7 +149,7 @@ index 771f23dc2..9f1cb56c6 100644
this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD);
this._enabled = this._enableKeyboard || this._lastDeviceIsTouchscreen();
if (!this._enabled && !this._keyboard)
@@ -315,14 +316,15 @@ var Keyboard = new Lang.Class({
@@ -314,14 +315,15 @@ var Keyboard = new Lang.Class({
this._setCaretTrackerEnabled(this._enabled);
@ -172,4 +172,4 @@ index 771f23dc2..9f1cb56c6 100644
_sync: function () {
--
2.14.2
2.14.2

View File

@ -19,14 +19,14 @@ Index: gnome-shell-3.14.0/js/ui/status/network.js
--- gnome-shell-3.14.0.orig/js/ui/status/network.js
+++ gnome-shell-3.14.0/js/ui/status/network.js
@@ -7,6 +7,7 @@ const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const NetworkManager = imports.gi.NetworkManager;
const NMClient = imports.gi.NMClient;
+const Polkit = imports.gi.Polkit;
const NMGtk = imports.gi.NMGtk;
const Signals = imports.signals;
const Shell = imports.gi.Shell;
@@ -372,6 +373,11 @@ const NMConnectionDevice = new Lang.Clas
@@ -369,6 +370,11 @@ const NMConnectionDevice = new Lang.Clas
_autoConnect: function() {
let connection = new NetworkManager.Connection();
@ -38,7 +38,7 @@ Index: gnome-shell-3.14.0/js/ui/status/network.js
this._client.add_and_activate_connection(connection, this._device, null, null);
},
@@ -618,10 +624,12 @@ const NMDeviceBluetooth = new Lang.Class
@@ -627,10 +633,12 @@ const NMDeviceBluetooth = new Lang.Class
Extends: NMConnectionDevice,
category: NMConnectionCategory.WWAN,
@ -47,12 +47,12 @@ Index: gnome-shell-3.14.0/js/ui/status/network.js
+ _init: function(client, device, settings, privateConnections) {
this.parent(client, device, settings);
this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
this.item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-network-panel.desktop');
+ this._privateConnections = privateConnections;
},
_getDescription: function() {
@@ -716,11 +724,12 @@ const NMWirelessDialog = new Lang.Class(
@@ -727,11 +735,12 @@ const NMWirelessDialog = new Lang.Class(
Name: 'NMWirelessDialog',
Extends: ModalDialog.ModalDialog,
@ -62,11 +62,11 @@ Index: gnome-shell-3.14.0/js/ui/status/network.js
this._client = client;
this._device = device;
+ this._privateConnections = privateConnections;
+ this._privateConnections = privateConnections;
this._wirelessEnabledChangedId = this._client.connect('notify::wireless-enabled',
Lang.bind(this, this._syncView));
@@ -937,6 +946,11 @@ const NMWirelessDialog = new Lang.Class(
@@ -964,6 +973,11 @@ const NMWirelessDialog = new Lang.Class(
this._device.get_path(), accessPoints[0].dbus_path]);
} else {
let connection = new NetworkManager.Connection();
@ -78,7 +78,7 @@ Index: gnome-shell-3.14.0/js/ui/status/network.js
this._client.add_and_activate_connection(connection, this._device, accessPoints[0].dbus_path, null)
}
}
@@ -1162,10 +1176,11 @@ const NMDeviceWireless = new Lang.Class(
@@ -1194,10 +1209,11 @@ const NMDeviceWireless = new Lang.Class(
Name: 'NMDeviceWireless',
category: NMConnectionCategory.WIRELESS,
@ -91,7 +91,7 @@ Index: gnome-shell-3.14.0/js/ui/status/network.js
this._description = '';
@@ -1247,7 +1262,7 @@ const NMDeviceWireless = new Lang.Class(
@@ -1280,7 +1295,7 @@ const NMDeviceWireless = new Lang.Class(
},
_showDialog: function() {
@ -100,7 +100,7 @@ Index: gnome-shell-3.14.0/js/ui/status/network.js
this._dialog.connect('closed', Lang.bind(this, this._dialogClosed));
this._dialog.open();
},
@@ -1606,6 +1621,19 @@ const NMApplet = new Lang.Class({
@@ -1678,6 +1693,19 @@ const NMApplet = new Lang.Class({
if (!this._client || !this._settings)
return;
@ -120,7 +120,7 @@ Index: gnome-shell-3.14.0/js/ui/status/network.js
this._activeConnections = [ ];
this._connections = [ ];
this._connectivityQueue = [ ];
@@ -1715,7 +1743,7 @@ const NMApplet = new Lang.Class({
@@ -1807,7 +1835,7 @@ const NMApplet = new Lang.Class({
let wrapperClass = this._dtypes[device.get_device_type()];
if (wrapperClass) {

View File

@ -1,29 +0,0 @@
From 78d58deb5afbe4fc06319553d4ed975053589d00 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Fri, 20 Oct 2017 15:29:07 +0200
Subject: network: Spawn wifi panel for further WPA enterprise configuration
Settings recently split Wi-Fi configuration from the Network panel,
so launch that instead.
https://bugzilla.gnome.org/show_bug.cgi?id=789231
---
js/ui/status/network.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index 02a43c1..9575af7 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -951,7 +951,7 @@ var NMWirelessDialog = new Lang.Class({
|| (accessPoints[0]._secType == NMAccessPointSecurity.WPA_ENT)) {
// 802.1x-enabled APs require further configuration, so they're
// handled in gnome-control-center
- Util.spawn(['gnome-control-center', 'network', 'connect-8021x-wifi',
+ Util.spawn(['gnome-control-center', 'wifi', 'connect-8021x-wifi',
this._device.get_path(), accessPoints[0].dbus_path]);
} else {
let connection = new NetworkManager.Connection();
--
cgit v0.12

View File

@ -1,41 +0,0 @@
From 5f8a5114833d7d31d4bd64affbd323bb7252c3d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Fri, 6 Oct 2017 20:26:24 -0400
Subject: [PATCH] layout: Unset primary and bottom monitor when headless
We were handling being initially headless by only setting the primary
and bottom monitor if there was any primary monitor, then checking the
primary monitor reference before making calls assuming there was any
monitors.
What we didn't do was unset the primary and bottom monitor when going
headless, meaning that temporarly disconnecting a monitor while having
windows open caused an assert to be triggered due to various code paths
taking the path assuming there are valid monitors.
Unsetting both the primary and bottom monitor when going headless avoids
the code paths in the same way as they were avoided when starting
headless.
https://bugzilla.gnome.org/show_bug.cgi?id=788607
---
js/ui/layout.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/js/ui/layout.js b/js/ui/layout.js
index 304c2a152..2f1894775 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -351,6 +351,9 @@ var LayoutManager = new Lang.Class({
this._loadBackground();
this._pendingLoadBackground = false;
}
+ } else {
+ this.primaryMonitor = null;
+ this.bottomMonitor = null;
}
},
--
2.14.2

View File

@ -1,3 +1,29 @@
-------------------------------------------------------------------
Mon Nov 6 01:04:48 UTC 2017 - xwang@suse.com
- Move SLE-Classic function to gnome-shell-extensions package
(bsc#1065611).
+ Remove gs-sle-classic-ext.patch
+ Remove SLEClassicExt.js
-------------------------------------------------------------------
Sat Nov 4 03:08:24 UTC 2017 - luc14n0@linuxmail.org
- Update to version 3.26.2:
+ Dump javascript stack on aborts, traps and segfaults
(bgo#789237).
+ Misc. bug fixes: bgo#788607, bgo#789018, bgo#789231.
+ Updated translations.
- Update Url to https://wiki.gnome.org/Projects/GnomeShell: current
GNOME Shell's project web page.
- Drop %glib2_gsettings_schema_requires macro: the functionality is
covered by file triggers now.
- Drop fixed upstream patches:
gnome-shell-unset-primary-and-bottom-monitor-when-headless.patch
and gnome-shell-spawn-wifi-panel-for-wep-configuration.patch.
- Rebase patches: gnome-shell-private-connection.patch and
gnome-shell-osk-dont-popup-when-not-needed.patch.
-------------------------------------------------------------------
Sat Oct 28 15:43:07 UTC 2017 - badshah400@gmail.com

View File

@ -18,22 +18,20 @@
%global __requires_exclude typelib\\(Meta\\)
Name: gnome-shell
Version: 3.26.1
Version: 3.26.2
Release: 0
Summary: GNOME Shell
License: GPL-2.0+
Group: System/GUI/GNOME
Url: http://live.gnome.org/GnomeShell
Source: http://download.gnome.org/sources/gnome-shell/3.26/%{name}-%{version}.tar.xz
# SOURCE-FEATURE-SLE SLE-Classic specific core extension file, see bnc#862615
Source1: SLEClassicExt.js
Url: https://wiki.gnome.org/Projects/GnomeShell
Source: https://download.gnome.org/sources/gnome-shell/3.26/%{name}-%{version}.tar.xz
# SOURCE-FEATURE-SLE aboutMenu fate#314545 dliang@suse.com -- Add an applet on login UI to display suse icon, product name, hostname.
Source2: aboutMenu.js
# SOURCE-FEATURE-SLE sle-background bsc#1007468 xwang@suse.com -- Add SUSE logo on lock screen for GNOME theme
Source3: sle-background.png
# PATCH-FIX-OPENSUSE gnome-shell-meson.patch dimstar@opensuse.org -- Fix rpath statement for gvc (needs validation, upstream fix)
Patch0: gnome-shell-meson.patch
# PATCH-NEEDS-REBASE gnome-shell-private-connection.patch bnc#751211 bgo#646187 dimstar@opensuse.org -- create private connections if the user is not authorized Was PATCH-FIX-UPSTREAM
# PATCH-FIX-UPSTREAM gnome-shell-private-connection.patch bnc#751211 bgo#646187 dimstar@opensuse.org -- create private connections if the user is not authorized
Patch1: gnome-shell-private-connection.patch
# PATCH-FIX-OPENSUSE gnome-shell-disable-ibus-when-not-installed.patch bsc#987360 qzhao@suse.com -- disable ibus start when outof Chinese, Japanese, Korean area.
Patch2: gnome-shell-disable-ibus-when-not-installed.patch
@ -41,12 +39,8 @@ Patch2: gnome-shell-disable-ibus-when-not-installed.patch
Patch3: gnome-shell-Avoid-loginDialog-grab-focus-when-locked.patch
# PATCH-FIX-UPSTREAM gnome-shell-osk-dont-popup-when-not-needed.patch bgo#788188 badshah400@gmail.com -- Stop the on-screen keyboard from showing up when touchscreen use doesn't activate a text field; patch taken from upstream bug report
Patch4: gnome-shell-osk-dont-popup-when-not-needed.patch
# PATCH-FIX-UPSTREAM gnome-shell-unset-primary-and-bottom-monitor-when-headless.patch bgo#788607 mgorse@suse.com -- unset primary and button monitor when headless; fixes a crash.
Patch5: gnome-shell-unset-primary-and-bottom-monitor-when-headless.patch
# PATCH-FIX-UPSTREAM gnome-shell-spawn-wifi-panel-for-wep-configuration.patch bgo#789231 badshah400@opensuse.org -- network: Spawn wifi panel for further WPA enterprise configuration
Patch6: gnome-shell-spawn-wifi-panel-for-wep-configuration.patch
## NOTE: Keep SLE only patches at bottom (starting on 1000).
## NOTE: Keep SLE-only patches at bottom (starting on 1000).
# PATCH-FEATURE-SLE gnome-shell-gdm-login-applet.patch fate#314545 dliang@suse.com -- Add an applet on login UI to display suse icon, product name, hostname.
Patch1001: gnome-shell-gdm-login-applet.patch
# PATCH-FEATURE-SLE gnome-shell-domain.patch fate#307773 dliang@suse.com -- Active Directory Integration
@ -63,9 +57,6 @@ Patch1006: gnome-shell-lock-bg-on-primary.patch
Patch1007: gs-fate318433-prevent-same-account-multi-logins.patch
# PATCH-FEATURE-SLE gnome-shell-1007468-lock-screen-SUSE-logo-missing.patch xwang@suse.com -- Add SUSE logo on lock screen for GNOME theme.
Patch1008: gnome-shell-1007468-lock-screen-SUSE-logo-missing.patch
## NOTE: Keep SLE Classic pathes at bottom.
# PATCH-FEATURE-SLE gs-sle-classic-ext.patch bnc#862615 cxiong@suse.com -- add SLE Classic support
Patch1100: gs-sle-classic-ext.patch
# needed for directory ownership
BuildRequires: dbus-1
@ -133,7 +124,6 @@ Recommends: gnome-clocks
Obsoletes: gnome-shell-wayland
# gnome-shell implements the dbus interface org.freedesktop.Notifications directly
Provides: dbus(org.freedesktop.Notifications)
%glib2_gsettings_schema_requires
%if !0%{?is_opensuse}
BuildRequires: translation-update-upstream
%endif
@ -189,13 +179,10 @@ into GNOME Shell calendar.
%prep
%setup -q
%patch0 -p1
# Needs rebase
#patch1 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%if !0%{?is_opensuse}
%patch1001 -p1
@ -206,10 +193,8 @@ into GNOME Shell calendar.
%patch1006 -p1
%patch1007 -p1
%patch1008 -p1
%patch1100 -p1
translation-update-upstream
%endif
cp %{SOURCE1} js/ui/
%if !0%{?is_opensuse}
cp %{SOURCE2} js/ui/
cp %{SOURCE3} data/theme/
@ -278,7 +263,7 @@ install -d %{buildroot}%{_datadir}/gnome-shell/modes
%files browser-plugin
%defattr(-,root,root)
%doc browser-plugin/README
#%{_libdir}/browser-plugins/libgnome-shell-browser-plugin.*
#%%{_libdir}/browser-plugins/libgnome-shell-browser-plugin.*
%dir %{_libdir}/mozilla/plugins/
%dir %{_libdir}/mozilla
%{_libdir}/mozilla/plugins/libgnome-shell-browser-plugin.*

View File

@ -1,156 +0,0 @@
Index: gnome-shell-3.26.1/js/js-resources.gresource.xml
===================================================================
--- gnome-shell-3.26.1.orig/js/js-resources.gresource.xml
+++ gnome-shell-3.26.1/js/js-resources.gresource.xml
@@ -111,6 +111,7 @@
<file>ui/workspaceThumbnail.js</file>
<file>ui/workspacesView.js</file>
<file>ui/xdndHandler.js</file>
+ <file>ui/SLEClassicExt.js</file>
<file>ui/components/__init__.js</file>
<file>ui/components/autorunManager.js</file>
Index: gnome-shell-3.26.1/js/ui/layout.js
===================================================================
--- gnome-shell-3.26.1.orig/js/ui/layout.js
+++ gnome-shell-3.26.1/js/ui/layout.js
@@ -25,6 +25,8 @@ var BACKGROUND_FADE_ANIMATION_TIME = 1.0
var HOT_CORNER_PRESSURE_THRESHOLD = 100; // pixels
var HOT_CORNER_PRESSURE_TIMEOUT = 1000; // ms
+const SLEClassicExt = imports.ui.SLEClassicExt;
+
function isPopupMetaWindow(actor) {
switch(actor.meta_window.get_window_type()) {
case Meta.WindowType.DROPDOWN_MENU:
@@ -477,7 +479,7 @@ var LayoutManager = new Lang.Class({
if (!this.primaryMonitor)
return;
- this.panelBox.set_position(this.primaryMonitor.x, this.primaryMonitor.y);
+ SLEClassicExt.setMainPanelPosition(this.panelBox, this.primaryMonitor);
this.panelBox.set_size(this.primaryMonitor.width, -1);
this.keyboardIndex = this.primaryIndex;
Index: gnome-shell-3.26.1/js/ui/main.js
===================================================================
--- gnome-shell-3.26.1.orig/js/ui/main.js
+++ gnome-shell-3.26.1/js/ui/main.js
@@ -45,6 +45,8 @@ const Magnifier = imports.ui.magnifier;
const XdndHandler = imports.ui.xdndHandler;
const Util = imports.misc.util;
+const SLEClassicExt = imports.ui.SLEClassicExt;
+
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
@@ -131,6 +133,8 @@ function start() {
shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
_sessionUpdated();
+
+ SLEClassicExt.init();
}
function _initializeUI() {
Index: gnome-shell-3.26.1/js/ui/panel.js
===================================================================
--- gnome-shell-3.26.1.orig/js/ui/panel.js
+++ gnome-shell-3.26.1/js/ui/panel.js
@@ -25,6 +25,8 @@ const RemoteMenu = imports.ui.remoteMenu
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
+const SLEClassicExt = imports.ui.SLEClassicExt
+
var PANEL_ICON_SIZE = 16;
var APP_MENU_ICON_MARGIN = 0;
@@ -856,7 +858,9 @@ var Panel = new Lang.Class({
alloc.natural_size = -1;
},
- _allocate: function(actor, box, flags) {
+ _allocate: SLEClassicExt._allocate,
+
+ _allocateOrigin: function(actor, box, flags) {
let allocWidth = box.x2 - box.x1;
let allocHeight = box.y2 - box.y1;
Index: gnome-shell-3.26.1/js/ui/sessionMode.js
===================================================================
--- gnome-shell-3.26.1.orig/js/ui/sessionMode.js
+++ gnome-shell-3.26.1/js/ui/sessionMode.js
@@ -13,6 +13,8 @@ const Config = imports.misc.config;
const DEFAULT_MODE = 'restrictive';
+const SLEClassicExt = imports.ui.SLEClassicExt;
+
const _modes = {
'restrictive': {
parentMode: null,
@@ -118,6 +120,7 @@ function _loadMode(file, info) {
try {
[success, fileContent, tag] = file.load_contents(null);
newMode = JSON.parse(fileContent);
+ newMode = SLEClassicExt.convertClassic2SLE(newMode);
} catch(e) {
return;
}
Index: gnome-shell-3.26.1/js/ui/overviewControls.js
===================================================================
--- gnome-shell-3.26.1.orig/js/ui/overviewControls.js
+++ gnome-shell-3.26.1/js/ui/overviewControls.js
@@ -13,6 +13,7 @@ const Params = imports.misc.params;
const Tweener = imports.ui.tweener;
const ViewSelector = imports.ui.viewSelector;
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
+const SLEClassicExt = imports.ui.SLEClassicExt;
var SIDE_CONTROLS_ANIMATION_TIME = 0.16;
@@ -459,6 +460,9 @@ var ControlsManager = new Lang.Class({
geometry.width -= dashWidth;
geometry.width -= thumbnailsWidth;
+ if(SLEClassicExt.isSLEClassicMode())
+ geometry.height -= Main.layoutManager.panelBox.height;
+
if (this.actor.get_text_direction() == Clutter.TextDirection.LTR)
geometry.x += dashWidth;
else
Index: gnome-shell-3.26.1/js/ui/workspace.js
===================================================================
--- gnome-shell-3.26.1.orig/js/ui/workspace.js
+++ gnome-shell-3.26.1/js/ui/workspace.js
@@ -17,6 +17,7 @@ const Main = imports.ui.main;
const Overview = imports.ui.overview;
const Tweener = imports.ui.tweener;
const WindowManager = imports.ui.windowManager;
+const SLEClassicExt = imports.ui.SLEClassicExt;
var WINDOW_DND_SIZE = 256;
@@ -869,6 +870,9 @@ var LayoutStrategy = new Lang.Class({
let hspacing = (layout.maxColumns - 1) * this._columnSpacing;
let vspacing = (layout.numRows - 1) * this._rowSpacing;
+ if(SLEClassicExt.isSLEClassicMode())
+ vspacing = layout.numRows * this._rowSpacing;
+
let spacedWidth = area.width - hspacing;
let spacedHeight = area.height - vspacing;
@@ -901,6 +905,10 @@ var LayoutStrategy = new Lang.Class({
}
let verticalSpacing = (rows.length - 1) * this._rowSpacing;
+
+ if(SLEClassicExt.isSLEClassicMode())
+ verticalSpacing = rows.length * this._rowSpacing;
+
let additionalVerticalScale = Math.min(1, (area.height - verticalSpacing) / heightWithoutSpacing);
// keep track how much smaller the grid becomes due to scaling