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:
commit
24efc2f3d4
298
SLEClassicExt.js
298
SLEClassicExt.js
@ -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);
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:38d98da06eb0118a0226623494b11765b3981414e804e270dc0cf03e37c708b9
|
||||
size 1407912
|
3
gnome-shell-3.26.2.tar.xz
Normal file
3
gnome-shell-3.26.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e5a87f2f838d981db9823352b90b2ce2f40d24d31ed9f062dccfa41b820e0b1c
|
||||
size 1405580
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.*
|
||||
|
@ -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
|
Loading…
Reference in New Issue
Block a user