import gnome-shell-3.32.2-29.el8
This commit is contained in:
parent
842e6632ac
commit
5cacface0d
@ -1,72 +0,0 @@
|
|||||||
From d1a20dc80c3414ba4cb7bf839a25de49d30ab400 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
||||||
Date: Mon, 21 Sep 2015 20:18:12 +0200
|
|
||||||
Subject: [PATCH] extensionSystem: Notify about extension issues on update
|
|
||||||
|
|
||||||
---
|
|
||||||
js/ui/extensionSystem.js | 34 +++++++++++++++++++++++++++++++++-
|
|
||||||
1 file changed, 33 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
|
|
||||||
index 9ffdb4f3d..eb820ba4f 100644
|
|
||||||
--- a/js/ui/extensionSystem.js
|
|
||||||
+++ b/js/ui/extensionSystem.js
|
|
||||||
@@ -1,8 +1,9 @@
|
|
||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
|
||||||
|
|
||||||
-const { Gio, St } = imports.gi;
|
|
||||||
+const { Gio, GLib, St } = imports.gi;
|
|
||||||
const Signals = imports.signals;
|
|
||||||
|
|
||||||
+const Config = imports.misc.config;
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
|
|
||||||
@@ -312,6 +313,36 @@ function _onVersionValidationChanged() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+function _doUpdateCheck() {
|
|
||||||
+ let version = Config.PACKAGE_VERSION.split('.');
|
|
||||||
+ if (parseInt(version[1]) % 2 == 0)
|
|
||||||
+ version.pop();
|
|
||||||
+
|
|
||||||
+ let pkgCacheDir = GLib.get_user_cache_dir() + '/gnome-shell/';
|
|
||||||
+ let updateStamp = Gio.file_new_for_path(pkgCacheDir +
|
|
||||||
+ 'update-check-' + version.join('.'));
|
|
||||||
+ if (updateStamp.query_exists(null))
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ GLib.mkdir_with_parents (pkgCacheDir, 0o755);
|
|
||||||
+ updateStamp.create(0, null).close(null);
|
|
||||||
+
|
|
||||||
+ let nOutdated = enabledExtensions.reduce(function(n, uuid) {
|
|
||||||
+ let extension = ExtensionUtils.extensions[uuid];
|
|
||||||
+ if (extension && extension.state == ExtensionState.OUT_OF_DATE)
|
|
||||||
+ n++;
|
|
||||||
+ return n;
|
|
||||||
+ }, 0);
|
|
||||||
+
|
|
||||||
+ if (nOutdated == 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ Main.notify(ngettext("%d extension is out of date",
|
|
||||||
+ "%d extensions are out of date",
|
|
||||||
+ nOutdated).format(nOutdated),
|
|
||||||
+ _("You can visit http://extensions.gnome.org for updates"));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
function _loadExtensions() {
|
|
||||||
global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
|
|
||||||
global.settings.connect('changed::' + DISABLE_USER_EXTENSIONS_KEY, onEnabledExtensionsChanged);
|
|
||||||
@@ -326,6 +357,7 @@ function _loadExtensions() {
|
|
||||||
extension.type = ExtensionUtils.ExtensionType.SESSION_MODE;
|
|
||||||
});
|
|
||||||
finder.scanExtensions();
|
|
||||||
+ _doUpdateCheck();
|
|
||||||
}
|
|
||||||
|
|
||||||
function enableAllExtensions() {
|
|
||||||
--
|
|
||||||
2.21.0
|
|
||||||
|
|
@ -100,7 +100,7 @@ index 000000000..fc1c3d6e4
|
|||||||
+});
|
+});
|
||||||
+Signals.addSignalMethods(AuthListItem.prototype);
|
+Signals.addSignalMethods(AuthListItem.prototype);
|
||||||
+
|
+
|
||||||
+const AuthList = new Lang.Class({
|
+var AuthList = new Lang.Class({
|
||||||
+ Name: 'AuthList',
|
+ Name: 'AuthList',
|
||||||
+
|
+
|
||||||
+ _init() {
|
+ _init() {
|
||||||
|
38
SOURCES/0001-main-Dump-stack-on-segfaults-by-default.patch
Normal file
38
SOURCES/0001-main-Dump-stack-on-segfaults-by-default.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From ba3ce64fbbce20192a55f9d438d1032c0bac0557 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Thu, 29 Oct 2020 18:21:06 +0100
|
||||||
|
Subject: [PATCH] main: Dump stack on segfaults by default
|
||||||
|
|
||||||
|
---
|
||||||
|
src/main.c | 8 ++++++--
|
||||||
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/main.c b/src/main.c
|
||||||
|
index 245837783..788309de7 100644
|
||||||
|
--- a/src/main.c
|
||||||
|
+++ b/src/main.c
|
||||||
|
@@ -39,6 +39,7 @@ static int caught_signal = 0;
|
||||||
|
#define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1
|
||||||
|
#define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4
|
||||||
|
|
||||||
|
+#define DEFAULT_SHELL_DEBUG SHELL_DEBUG_BACKTRACE_SEGFAULTS
|
||||||
|
enum {
|
||||||
|
SHELL_DEBUG_BACKTRACE_WARNINGS = 1,
|
||||||
|
SHELL_DEBUG_BACKTRACE_SEGFAULTS = 2,
|
||||||
|
@@ -268,8 +269,11 @@ shell_init_debug (const char *debug_env)
|
||||||
|
{ "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS },
|
||||||
|
};
|
||||||
|
|
||||||
|
- _shell_debug = g_parse_debug_string (debug_env, keys,
|
||||||
|
- G_N_ELEMENTS (keys));
|
||||||
|
+ if (debug_env)
|
||||||
|
+ _shell_debug = g_parse_debug_string (debug_env, keys,
|
||||||
|
+ G_N_ELEMENTS (keys));
|
||||||
|
+ else
|
||||||
|
+ _shell_debug = DEFAULT_SHELL_DEBUG;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
--
|
||||||
|
2.29.2
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
From fb0a9a60ab8f1c0dd96e789969ab9b6e48a9fce4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||||
|
Date: Tue, 21 Jul 2020 16:33:04 +0200
|
||||||
|
Subject: [PATCH] popupMenu: Handle keypress if numlock is enabled
|
||||||
|
|
||||||
|
On Wayland, navigating menus with the keyboard would not open drop-down
|
||||||
|
menus when NumLock is enabled.
|
||||||
|
|
||||||
|
That's old issue (gnome-shell#550) that was not completely fixed with
|
||||||
|
commit 88556226 because the lock mask needs to be filtered out in
|
||||||
|
_onKeyPress() as well.
|
||||||
|
|
||||||
|
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/550
|
||||||
|
---
|
||||||
|
js/ui/popupMenu.js | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
|
||||||
|
index 6de081ce81..9835face19 100644
|
||||||
|
--- a/js/ui/popupMenu.js
|
||||||
|
+++ b/js/ui/popupMenu.js
|
||||||
|
@@ -801,9 +801,10 @@ var PopupMenu = class extends PopupMenuBase {
|
||||||
|
|
||||||
|
let state = event.get_state();
|
||||||
|
|
||||||
|
- // if user has a modifier down (except capslock)
|
||||||
|
+ // if user has a modifier down (except capslock and numlock)
|
||||||
|
// then don't handle the key press here
|
||||||
|
state &= ~Clutter.ModifierType.LOCK_MASK;
|
||||||
|
+ state &= ~Clutter.ModifierType.MOD2_MASK;
|
||||||
|
state &= Clutter.ModifierType.MODIFIER_MASK;
|
||||||
|
|
||||||
|
if (state)
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -0,0 +1,253 @@
|
|||||||
|
From 67a4506d4d8a0cbbaca5df4adfc309e54e557aee Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||||
|
Date: Tue, 5 Jan 2021 12:04:23 +0100
|
||||||
|
Subject: [PATCH] screencast: Stop recording when screen size or resource scale
|
||||||
|
change
|
||||||
|
|
||||||
|
Video encoders don't really handle changing the size of the video, and if
|
||||||
|
we'd e.g. change resolution while recording, we would end up with a corrupt
|
||||||
|
video file. Handle this more gracefully by stopping the recording if the
|
||||||
|
conditions change.
|
||||||
|
---
|
||||||
|
js/ui/screencast.js | 92 +++++++++++++++++++++++++++++++++++++++++---
|
||||||
|
src/shell-recorder.c | 50 ++++++++++++------------
|
||||||
|
src/shell-recorder.h | 1 +
|
||||||
|
3 files changed, 114 insertions(+), 29 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/screencast.js b/js/ui/screencast.js
|
||||||
|
index 0b0b14a8e..54f8fb5ae 100644
|
||||||
|
--- a/js/ui/screencast.js
|
||||||
|
+++ b/js/ui/screencast.js
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
-const { Gio, GLib, Shell } = imports.gi;
|
||||||
|
+const { Gio, GLib, Meta, Shell } = imports.gi;
|
||||||
|
const Signals = imports.signals;
|
||||||
|
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
@@ -53,16 +53,27 @@ var ScreencastService = class {
|
||||||
|
this._stopRecordingForSender(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
- _stopRecordingForSender(sender) {
|
||||||
|
+ _stopRecordingForSender(sender, closeNow=false) {
|
||||||
|
let recorder = this._recorders.get(sender);
|
||||||
|
if (!recorder)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Gio.bus_unwatch_name(recorder._watchNameId);
|
||||||
|
- recorder.close();
|
||||||
|
+ if (closeNow)
|
||||||
|
+ recorder.close_now();
|
||||||
|
+ else
|
||||||
|
+ recorder.close();
|
||||||
|
this._recorders.delete(sender);
|
||||||
|
this.emit('updated');
|
||||||
|
|
||||||
|
+ let connection = this._dbusImpl.get_connection();
|
||||||
|
+ let info = this._dbusImpl.get_info();
|
||||||
|
+ connection.emit_signal(sender,
|
||||||
|
+ this._dbusImpl.get_object_path(),
|
||||||
|
+ info ? info.name : null,
|
||||||
|
+ 'Stopped',
|
||||||
|
+ null);
|
||||||
|
+
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -78,6 +89,53 @@ var ScreencastService = class {
|
||||||
|
recorder.set_draw_cursor(options['draw-cursor']);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ _ensureResourceScaleChangedHandler() {
|
||||||
|
+ if (this._resourceScaleChangedHandlerId)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ this._resourceScaleChangedHandlerId =
|
||||||
|
+ global.stage.connect('notify::resource-scale',
|
||||||
|
+ () => {
|
||||||
|
+ for (let sender of this._recorders.keys()) {
|
||||||
|
+ let recorder = this._recorders.get(sender);
|
||||||
|
+
|
||||||
|
+ if (!recorder.is_recording())
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ this._stopRecordingForSender(sender, true);
|
||||||
|
+ }
|
||||||
|
+ });
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ _ensureMonitorsChangedHandler() {
|
||||||
|
+ if (this._monitorsChangedHandlerId)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ this._monitorsChangedHandlerId = Main.layoutManager.connect('monitors-changed',
|
||||||
|
+ () => {
|
||||||
|
+ for (let sender of this._recorders.keys()) {
|
||||||
|
+ let recorder = this._recorders.get(sender);
|
||||||
|
+
|
||||||
|
+ if (!recorder.is_recording())
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ let geometry = recorder._geometry;
|
||||||
|
+ let screenWidth = global.screen_width;
|
||||||
|
+ let screenHeight = global.screen_height;
|
||||||
|
+
|
||||||
|
+ if (recorder._isAreaScreecast) {
|
||||||
|
+ if (geometry.x + geometry.width > screenWidth ||
|
||||||
|
+ geometry.y + geometry.height > screenHeight)
|
||||||
|
+ this._stopRecordingForSender(sender, true);
|
||||||
|
+ } else {
|
||||||
|
+ if (geometry.width != screenWidth ||
|
||||||
|
+ geometry.height != screenHeight)
|
||||||
|
+ this._stopRecordingForSender(sender, true);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ });
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ScreencastAsync(params, invocation) {
|
||||||
|
let returnValue = [false, ''];
|
||||||
|
if (!Main.sessionMode.allowScreencast ||
|
||||||
|
@@ -95,8 +153,20 @@ var ScreencastService = class {
|
||||||
|
this._applyOptionalParameters(recorder, options);
|
||||||
|
let [success, fileName] = recorder.record();
|
||||||
|
returnValue = [success, fileName ? fileName : ''];
|
||||||
|
- if (!success)
|
||||||
|
+ if (success) {
|
||||||
|
+ recorder._isAreaScreecast = false;
|
||||||
|
+ recorder._geometry =
|
||||||
|
+ new Meta.Rectangle({
|
||||||
|
+ x: 0,
|
||||||
|
+ y: 0,
|
||||||
|
+ width: global.screen_width,
|
||||||
|
+ height: global.screen_height
|
||||||
|
+ });
|
||||||
|
+ this._ensureResourceScaleChangedHandler();
|
||||||
|
+ this._ensureMonitorsChangedHandler();
|
||||||
|
+ } else {
|
||||||
|
this._stopRecordingForSender(sender);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
||||||
|
@@ -131,8 +201,20 @@ var ScreencastService = class {
|
||||||
|
this._applyOptionalParameters(recorder, options);
|
||||||
|
let [success, fileName] = recorder.record();
|
||||||
|
returnValue = [success, fileName ? fileName : ''];
|
||||||
|
- if (!success)
|
||||||
|
+ if (success) {
|
||||||
|
+ recorder._isAreaScreecast = true;
|
||||||
|
+ recorder._geometry =
|
||||||
|
+ new Meta.Rectangle({
|
||||||
|
+ x: x,
|
||||||
|
+ y: y,
|
||||||
|
+ width: width,
|
||||||
|
+ height: height
|
||||||
|
+ });
|
||||||
|
+ this._ensureResourceScaleChangedHandler();
|
||||||
|
+ this._ensureMonitorsChangedHandler();
|
||||||
|
+ } else {
|
||||||
|
this._stopRecordingForSender(sender);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
||||||
|
diff --git a/src/shell-recorder.c b/src/shell-recorder.c
|
||||||
|
index 0203ecf1c..e561a0152 100644
|
||||||
|
--- a/src/shell-recorder.c
|
||||||
|
+++ b/src/shell-recorder.c
|
||||||
|
@@ -511,21 +511,6 @@ recorder_update_size (ShellRecorder *recorder)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void
|
||||||
|
-recorder_on_stage_notify_size (GObject *object,
|
||||||
|
- GParamSpec *pspec,
|
||||||
|
- ShellRecorder *recorder)
|
||||||
|
-{
|
||||||
|
- recorder_update_size (recorder);
|
||||||
|
-
|
||||||
|
- /* This breaks the recording but tweaking the GStreamer pipeline a bit
|
||||||
|
- * might make it work, at least if the codec can handle a stream where
|
||||||
|
- * the frame size changes in the middle.
|
||||||
|
- */
|
||||||
|
- if (recorder->current_pipeline)
|
||||||
|
- recorder_pipeline_set_caps (recorder->current_pipeline);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static gboolean
|
||||||
|
recorder_idle_redraw (gpointer data)
|
||||||
|
{
|
||||||
|
@@ -622,12 +607,6 @@ recorder_connect_stage_callbacks (ShellRecorder *recorder)
|
||||||
|
G_CALLBACK (recorder_on_stage_destroy), recorder);
|
||||||
|
g_signal_connect_after (recorder->stage, "paint",
|
||||||
|
G_CALLBACK (recorder_on_stage_paint), recorder);
|
||||||
|
- g_signal_connect (recorder->stage, "notify::width",
|
||||||
|
- G_CALLBACK (recorder_on_stage_notify_size), recorder);
|
||||||
|
- g_signal_connect (recorder->stage, "notify::height",
|
||||||
|
- G_CALLBACK (recorder_on_stage_notify_size), recorder);
|
||||||
|
- g_signal_connect (recorder->stage, "notify::resource-scale",
|
||||||
|
- G_CALLBACK (recorder_on_stage_notify_size), recorder);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -639,9 +618,6 @@ recorder_disconnect_stage_callbacks (ShellRecorder *recorder)
|
||||||
|
g_signal_handlers_disconnect_by_func (recorder->stage,
|
||||||
|
(void *)recorder_on_stage_paint,
|
||||||
|
recorder);
|
||||||
|
- g_signal_handlers_disconnect_by_func (recorder->stage,
|
||||||
|
- (void *)recorder_on_stage_notify_size,
|
||||||
|
- recorder);
|
||||||
|
|
||||||
|
/* We don't don't deselect for cursor changes in case someone else just
|
||||||
|
* happened to be selecting for cursor events on the same window; sending
|
||||||
|
@@ -1578,6 +1554,32 @@ shell_recorder_record (ShellRecorder *recorder,
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * shell_recorder_close_now:
|
||||||
|
+ * @recorder: the #ShellRecorder
|
||||||
|
+ *
|
||||||
|
+ * Stops recording immediately. It's possible to call shell_recorder_record()
|
||||||
|
+ * again to reopen a new recording stream, but unless change the recording
|
||||||
|
+ * filename, this may result in the old recording being overwritten.
|
||||||
|
+ */
|
||||||
|
+void
|
||||||
|
+shell_recorder_close_now (ShellRecorder *recorder)
|
||||||
|
+{
|
||||||
|
+ g_return_if_fail (SHELL_IS_RECORDER (recorder));
|
||||||
|
+ g_return_if_fail (recorder->state != RECORDER_STATE_CLOSED);
|
||||||
|
+
|
||||||
|
+ recorder_remove_update_pointer_timeout (recorder);
|
||||||
|
+ recorder_close_pipeline (recorder);
|
||||||
|
+
|
||||||
|
+ recorder->state = RECORDER_STATE_CLOSED;
|
||||||
|
+
|
||||||
|
+ /* Reenable after the recording */
|
||||||
|
+ meta_enable_unredirect_for_display (shell_global_get_display (shell_global_get ()));
|
||||||
|
+
|
||||||
|
+ /* Release the refcount we took when we started recording */
|
||||||
|
+ g_object_unref (recorder);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* shell_recorder_close:
|
||||||
|
* @recorder: the #ShellRecorder
|
||||||
|
diff --git a/src/shell-recorder.h b/src/shell-recorder.h
|
||||||
|
index c1e0e6368..1c3e6aab4 100644
|
||||||
|
--- a/src/shell-recorder.h
|
||||||
|
+++ b/src/shell-recorder.h
|
||||||
|
@@ -37,6 +37,7 @@ void shell_recorder_set_area (ShellRecorder *recorder,
|
||||||
|
gboolean shell_recorder_record (ShellRecorder *recorder,
|
||||||
|
char **filename_used);
|
||||||
|
void shell_recorder_close (ShellRecorder *recorder);
|
||||||
|
+void shell_recorder_close_now (ShellRecorder *recorder);
|
||||||
|
void shell_recorder_pause (ShellRecorder *recorder);
|
||||||
|
gboolean shell_recorder_is_recording (ShellRecorder *recorder);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
@ -0,0 +1,78 @@
|
|||||||
|
From 391f262aee82ac12fcf99951d6b2df362f734b31 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Mon, 15 Jun 2020 20:41:45 +0200
|
||||||
|
Subject: [PATCH] shell/app: Handle workspace from startup notifications
|
||||||
|
|
||||||
|
Launching applications on a particular workspace works through
|
||||||
|
launch contexts and startup notifications. While this is no
|
||||||
|
longer required by a launcher/WM split, in theory this allows
|
||||||
|
us to reliably identify the correct window to apply startup
|
||||||
|
properties to.
|
||||||
|
|
||||||
|
However in practice we fail more often than not: Missing support in
|
||||||
|
toolkits, differences between display protocols, D-Bus activation
|
||||||
|
and single-instance applications all provide their own pitfalls.
|
||||||
|
|
||||||
|
So instead, take advantage of the fact that launcher and WM live in
|
||||||
|
the same process, and go with the unsophisticated approach: Just
|
||||||
|
remember the last workspace that was requested when launching an
|
||||||
|
app, then move the next window that is associated with the app to
|
||||||
|
that workspace.
|
||||||
|
|
||||||
|
This will break X11 applications that set an initial workspace, but
|
||||||
|
that's legacy functionality anyway (given that there's no wayland
|
||||||
|
protocol for that functionality), and seems a price worth paying
|
||||||
|
for making launching apps on workspaces more reliable.
|
||||||
|
---
|
||||||
|
src/shell-app.c | 19 +++++++++++--------
|
||||||
|
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/shell-app.c b/src/shell-app.c
|
||||||
|
index 7d40186c9..f716bc5f8 100644
|
||||||
|
--- a/src/shell-app.c
|
||||||
|
+++ b/src/shell-app.c
|
||||||
|
@@ -1067,6 +1067,10 @@ _shell_app_add_window (ShellApp *app,
|
||||||
|
if (!app->running_state)
|
||||||
|
create_running_state (app);
|
||||||
|
|
||||||
|
+ if (app->started_on_workspace >= 0)
|
||||||
|
+ meta_window_change_workspace_by_index (window, app->started_on_workspace, FALSE);
|
||||||
|
+ app->started_on_workspace = -1;
|
||||||
|
+
|
||||||
|
app->running_state->window_sort_stale = TRUE;
|
||||||
|
app->running_state->windows = g_slist_prepend (app->running_state->windows, g_object_ref (window));
|
||||||
|
g_signal_connect_object (window, "unmanaged", G_CALLBACK(shell_app_on_unmanaged), app, 0);
|
||||||
|
@@ -1156,16 +1160,14 @@ _shell_app_handle_startup_sequence (ShellApp *app,
|
||||||
|
shell_app_state_transition (app, SHELL_APP_STATE_STARTING);
|
||||||
|
meta_x11_display_focus_the_no_focus_window (x11_display,
|
||||||
|
meta_startup_sequence_get_timestamp (sequence));
|
||||||
|
- app->started_on_workspace = meta_startup_sequence_get_workspace (sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!starting)
|
||||||
|
- {
|
||||||
|
- if (app->running_state && app->running_state->windows)
|
||||||
|
- shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
|
||||||
|
- else /* application have > 1 .desktop file */
|
||||||
|
- shell_app_state_transition (app, SHELL_APP_STATE_STOPPED);
|
||||||
|
- }
|
||||||
|
+ if (starting)
|
||||||
|
+ app->started_on_workspace = meta_startup_sequence_get_workspace (sequence);
|
||||||
|
+ else if (app->running_state && app->running_state->windows)
|
||||||
|
+ shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
|
||||||
|
+ else /* application have > 1 .desktop file */
|
||||||
|
+ shell_app_state_transition (app, SHELL_APP_STATE_STOPPED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -1473,6 +1475,7 @@ static void
|
||||||
|
shell_app_init (ShellApp *self)
|
||||||
|
{
|
||||||
|
self->state = SHELL_APP_STATE_STOPPED;
|
||||||
|
+ self->started_on_workspace = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
--
|
||||||
|
2.29.2
|
||||||
|
|
488
SOURCES/caps-lock-warning.patch
Normal file
488
SOURCES/caps-lock-warning.patch
Normal file
@ -0,0 +1,488 @@
|
|||||||
|
From 7b514e637837e00372e20fa52f841e993966b734 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Umang Jain <mailumangjain@gmail.com>
|
||||||
|
Date: Fri, 13 Dec 2019 13:36:14 +0530
|
||||||
|
Subject: [PATCH 1/7] shellEntry: Add CapsLockWarning class
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/619
|
||||||
|
---
|
||||||
|
data/theme/gnome-shell-sass/_common.scss | 5 +++
|
||||||
|
js/ui/shellEntry.js | 39 +++++++++++++++++++++++-
|
||||||
|
2 files changed, 43 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss
|
||||||
|
index b1eeb0ce97..19a736ab7d 100644
|
||||||
|
--- a/data/theme/gnome-shell-sass/_common.scss
|
||||||
|
+++ b/data/theme/gnome-shell-sass/_common.scss
|
||||||
|
@@ -391,6 +391,11 @@ StScrollBar {
|
||||||
|
padding-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ .prompt-dialog-caps-lock-warning {
|
||||||
|
+ @extend .prompt-dialog-error-label;
|
||||||
|
+ padding-left: 6.2em;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
.prompt-dialog-info-label {
|
||||||
|
font-size: 10pt;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js
|
||||||
|
index 79f1aad3e7..c1738c4064 100644
|
||||||
|
--- a/js/ui/shellEntry.js
|
||||||
|
+++ b/js/ui/shellEntry.js
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
-const { Clutter, Shell, St } = imports.gi;
|
||||||
|
+const { Clutter, GObject, Pango, Shell, St } = imports.gi;
|
||||||
|
|
||||||
|
const BoxPointer = imports.ui.boxpointer;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
@@ -170,3 +170,40 @@ function addContextMenu(entry, params) {
|
||||||
|
entry._menuManager = null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+var CapsLockWarning = GObject.registerClass(
|
||||||
|
+class CapsLockWarning extends St.Label {
|
||||||
|
+ _init(params) {
|
||||||
|
+ let defaultParams = { style_class: 'prompt-dialog-error-label' };
|
||||||
|
+ super._init(Object.assign(defaultParams, params));
|
||||||
|
+
|
||||||
|
+ this.text = _('Caps lock is on.');
|
||||||
|
+
|
||||||
|
+ this._keymap = Clutter.get_default_backend().get_keymap();
|
||||||
|
+
|
||||||
|
+ this.connect('notify::mapped', () => {
|
||||||
|
+ if (this.is_mapped()) {
|
||||||
|
+ this.stateChangedId = this._keymap.connect('state-changed',
|
||||||
|
+ this._updateCapsLockWarningOpacity.bind(this));
|
||||||
|
+ } else {
|
||||||
|
+ this._keymap.disconnect(this.stateChangedId);
|
||||||
|
+ this.stateChangedId = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ this._updateCapsLockWarningOpacity();
|
||||||
|
+ });
|
||||||
|
+
|
||||||
|
+ this.connect('destroy', () => {
|
||||||
|
+ if (this.stateChangedId > 0)
|
||||||
|
+ this._keymap.disconnect(this.stateChangedId);
|
||||||
|
+ });
|
||||||
|
+
|
||||||
|
+ this.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
+ this.clutter_text.line_wrap = true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ _updateCapsLockWarningOpacity() {
|
||||||
|
+ let capsLockOn = this._keymap.get_caps_lock_state();
|
||||||
|
+ this.opacity = capsLockOn ? 255 : 0;
|
||||||
|
+ }
|
||||||
|
+});
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From aa4938f261454f85c782e59e40d4e5a9e1a01dbc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Umang Jain <mailumangjain@gmail.com>
|
||||||
|
Date: Wed, 18 Dec 2019 01:33:45 +0530
|
||||||
|
Subject: [PATCH 2/7] js: Add caps-lock Warning to the dialogs
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/619
|
||||||
|
---
|
||||||
|
js/gdm/authPrompt.js | 4 ++++
|
||||||
|
js/ui/components/keyring.js | 6 ++++++
|
||||||
|
js/ui/components/networkAgent.js | 8 ++++++++
|
||||||
|
js/ui/components/polkitAgent.js | 2 ++
|
||||||
|
js/ui/shellMountOperation.js | 3 +++
|
||||||
|
5 files changed, 23 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
|
||||||
|
index 71069e93b8..3ce9fd0d01 100644
|
||||||
|
--- a/js/gdm/authPrompt.js
|
||||||
|
+++ b/js/gdm/authPrompt.js
|
||||||
|
@@ -113,6 +113,9 @@ var AuthPrompt = class {
|
||||||
|
|
||||||
|
this._entry.grab_key_focus();
|
||||||
|
|
||||||
|
+ this._capsLockWarningLabel = new ShellEntry.CapsLockWarning();
|
||||||
|
+ this.actor.add_child(this._capsLockWarningLabel);
|
||||||
|
+
|
||||||
|
this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator',
|
||||||
|
scale_x: 0 });
|
||||||
|
|
||||||
|
@@ -432,6 +435,7 @@ var AuthPrompt = class {
|
||||||
|
setPasswordChar(passwordChar) {
|
||||||
|
this._entry.clutter_text.set_password_char(passwordChar);
|
||||||
|
this._entry.menu.isPassword = passwordChar != '';
|
||||||
|
+ this._capsLockWarningLabel.visible = passwordChar !== '';
|
||||||
|
}
|
||||||
|
|
||||||
|
setQuestion(question) {
|
||||||
|
diff --git a/js/ui/components/keyring.js b/js/ui/components/keyring.js
|
||||||
|
index 0d9f1e4663..3512fb63b1 100644
|
||||||
|
--- a/js/ui/components/keyring.js
|
||||||
|
+++ b/js/ui/components/keyring.js
|
||||||
|
@@ -128,6 +128,12 @@ var KeyringDialog = class extends ModalDialog.ModalDialog {
|
||||||
|
this.prompt.set_password_actor(this._passwordEntry ? this._passwordEntry.clutter_text : null);
|
||||||
|
this.prompt.set_confirm_actor(this._confirmEntry ? this._confirmEntry.clutter_text : null);
|
||||||
|
|
||||||
|
+ if (this._passwordEntry || this._confirmEntry) {
|
||||||
|
+ this._capsLockWarningLabel = new ShellEntry.CapsLockWarning();
|
||||||
|
+ layout.attach(this._capsLockWarningLabel, 1, row, 1, 1);
|
||||||
|
+ row++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (this.prompt.choice_visible) {
|
||||||
|
let choice = new CheckBox.CheckBox();
|
||||||
|
this.prompt.bind_property('choice-label', choice.getLabelActor(), 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
diff --git a/js/ui/components/networkAgent.js b/js/ui/components/networkAgent.js
|
||||||
|
index f871c732d9..32d40fb2b9 100644
|
||||||
|
--- a/js/ui/components/networkAgent.js
|
||||||
|
+++ b/js/ui/components/networkAgent.js
|
||||||
|
@@ -95,6 +95,14 @@ var NetworkSecretDialog = class extends ModalDialog.ModalDialog {
|
||||||
|
secret.entry.clutter_text.set_password_char('\u25cf');
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (this._content.secrets.some(s => s.password)) {
|
||||||
|
+ this._capsLockWarningLabel = new ShellEntry.CapsLockWarning();
|
||||||
|
+ if (rtl)
|
||||||
|
+ layout.attach(this._capsLockWarningLabel, 0, pos, 1, 1);
|
||||||
|
+ else
|
||||||
|
+ layout.attach(this._capsLockWarningLabel, 1, pos, 1, 1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
contentBox.messageBox.add(secretTable);
|
||||||
|
|
||||||
|
if (flags & NM.SecretAgentGetSecretsFlags.WPS_PBC_ACTIVE) {
|
||||||
|
diff --git a/js/ui/components/polkitAgent.js b/js/ui/components/polkitAgent.js
|
||||||
|
index 21feb40903..734a217335 100644
|
||||||
|
--- a/js/ui/components/polkitAgent.js
|
||||||
|
+++ b/js/ui/components/polkitAgent.js
|
||||||
|
@@ -108,6 +108,8 @@ var AuthenticationDialog = class extends ModalDialog.ModalDialog {
|
||||||
|
|
||||||
|
this.setInitialKeyFocus(this._passwordEntry);
|
||||||
|
this._passwordBox.hide();
|
||||||
|
+ this._capsLockWarningLabel = new ShellEntry.CapsLockWarning({ style_class: 'prompt-dialog-caps-lock-warning' });
|
||||||
|
+ content.messageBox.add(this._capsLockWarningLabel);
|
||||||
|
|
||||||
|
this._errorMessageLabel = new St.Label({ style_class: 'prompt-dialog-error-label' });
|
||||||
|
this._errorMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
diff --git a/js/ui/shellMountOperation.js b/js/ui/shellMountOperation.js
|
||||||
|
index f976f400f4..3a2377ddaf 100644
|
||||||
|
--- a/js/ui/shellMountOperation.js
|
||||||
|
+++ b/js/ui/shellMountOperation.js
|
||||||
|
@@ -305,6 +305,9 @@ var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
|
||||||
|
this._passwordBox.add(this._passwordEntry, {expand: true });
|
||||||
|
this.setInitialKeyFocus(this._passwordEntry);
|
||||||
|
|
||||||
|
+ this._capsLockWarningLabel = new ShellEntry.CapsLockWarning();
|
||||||
|
+ content.messageBox.add(this._capsLockWarningLabel);
|
||||||
|
+
|
||||||
|
this._errorMessageLabel = new St.Label({ style_class: 'prompt-dialog-error-label',
|
||||||
|
text: _("Sorry, that didn’t work. Please try again.") });
|
||||||
|
this._errorMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From 016cbd971711665844d40ec678d2779c160f791b Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
|
||||||
|
Date: Thu, 23 Jan 2020 22:37:06 +0100
|
||||||
|
Subject: [PATCH 3/7] shellEntry: Make signal id variable private
|
||||||
|
|
||||||
|
Signal connection IDs should be private variables, so make this one
|
||||||
|
private.
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/952
|
||||||
|
---
|
||||||
|
js/ui/shellEntry.js | 10 +++++-----
|
||||||
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js
|
||||||
|
index c1738c4064..cd7c9a6c88 100644
|
||||||
|
--- a/js/ui/shellEntry.js
|
||||||
|
+++ b/js/ui/shellEntry.js
|
||||||
|
@@ -183,19 +183,19 @@ class CapsLockWarning extends St.Label {
|
||||||
|
|
||||||
|
this.connect('notify::mapped', () => {
|
||||||
|
if (this.is_mapped()) {
|
||||||
|
- this.stateChangedId = this._keymap.connect('state-changed',
|
||||||
|
+ this._stateChangedId = this._keymap.connect('state-changed',
|
||||||
|
this._updateCapsLockWarningOpacity.bind(this));
|
||||||
|
} else {
|
||||||
|
- this._keymap.disconnect(this.stateChangedId);
|
||||||
|
- this.stateChangedId = 0;
|
||||||
|
+ this._keymap.disconnect(this._stateChangedId);
|
||||||
|
+ this._stateChangedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._updateCapsLockWarningOpacity();
|
||||||
|
});
|
||||||
|
|
||||||
|
this.connect('destroy', () => {
|
||||||
|
- if (this.stateChangedId > 0)
|
||||||
|
- this._keymap.disconnect(this.stateChangedId);
|
||||||
|
+ if (this._stateChangedId > 0)
|
||||||
|
+ this._keymap.disconnect(this._stateChangedId);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From ba65f9066d72731e345a5aced61f35d39c1c1376 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
|
||||||
|
Date: Thu, 23 Jan 2020 23:26:45 +0100
|
||||||
|
Subject: [PATCH 4/7] theme: Move caps-lock warning to entry widget stylesheet
|
||||||
|
|
||||||
|
The caps-lock warning is more related to entries than dialogs and is
|
||||||
|
also used in gdm, which is not realated to dialogs at all. Rename the
|
||||||
|
css class to caps-lock-warning-label and move it to the entry
|
||||||
|
stylesheet.
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/952
|
||||||
|
---
|
||||||
|
data/theme/gnome-shell-sass/_common.scss | 12 +++++++-----
|
||||||
|
js/ui/shellEntry.js | 2 +-
|
||||||
|
2 files changed, 8 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss
|
||||||
|
index 19a736ab7d..4661533de2 100644
|
||||||
|
--- a/data/theme/gnome-shell-sass/_common.scss
|
||||||
|
+++ b/data/theme/gnome-shell-sass/_common.scss
|
||||||
|
@@ -94,6 +94,13 @@ StEntry {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+.caps-lock-warning-label {
|
||||||
|
+ padding-left: 6.2em;
|
||||||
|
+ @include fontsize($font-size - 1);
|
||||||
|
+ color: $warning_color;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
|
||||||
|
/* Scrollbars */
|
||||||
|
|
||||||
|
@@ -391,11 +398,6 @@ StScrollBar {
|
||||||
|
padding-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
- .prompt-dialog-caps-lock-warning {
|
||||||
|
- @extend .prompt-dialog-error-label;
|
||||||
|
- padding-left: 6.2em;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
.prompt-dialog-info-label {
|
||||||
|
font-size: 10pt;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js
|
||||||
|
index cd7c9a6c88..46eba88d54 100644
|
||||||
|
--- a/js/ui/shellEntry.js
|
||||||
|
+++ b/js/ui/shellEntry.js
|
||||||
|
@@ -174,7 +174,7 @@ function addContextMenu(entry, params) {
|
||||||
|
var CapsLockWarning = GObject.registerClass(
|
||||||
|
class CapsLockWarning extends St.Label {
|
||||||
|
_init(params) {
|
||||||
|
- let defaultParams = { style_class: 'prompt-dialog-error-label' };
|
||||||
|
+ let defaultParams = { style_class: 'caps-lock-warning-label' };
|
||||||
|
super._init(Object.assign(defaultParams, params));
|
||||||
|
|
||||||
|
this.text = _('Caps lock is on.');
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From afd764c82febe21aec70bdfc19d256f3401530e1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
|
||||||
|
Date: Thu, 23 Jan 2020 22:36:09 +0100
|
||||||
|
Subject: [PATCH 5/7] shellEntry: Hide caps lock warning and use animation to
|
||||||
|
show it
|
||||||
|
|
||||||
|
Since the caps-lock warning adds a lot of spacing to dialogs and the
|
||||||
|
lock screen, hide it by default and only show it when necessary. To make
|
||||||
|
the transition smooth instead of just showing the label, animate it in
|
||||||
|
using the height and opacity.
|
||||||
|
|
||||||
|
Also add some bottom padding to the label so we can show or hide that
|
||||||
|
padding, too.
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/952
|
||||||
|
---
|
||||||
|
data/theme/gnome-shell-sass/_common.scss | 1 +
|
||||||
|
js/ui/shellEntry.js | 33 ++++++++++++++++++------
|
||||||
|
2 files changed, 26 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss
|
||||||
|
index 4661533de2..9e0751c8c5 100644
|
||||||
|
--- a/data/theme/gnome-shell-sass/_common.scss
|
||||||
|
+++ b/data/theme/gnome-shell-sass/_common.scss
|
||||||
|
@@ -95,6 +95,7 @@ StEntry {
|
||||||
|
}
|
||||||
|
|
||||||
|
.caps-lock-warning-label {
|
||||||
|
+ padding-bottom: 8px;
|
||||||
|
padding-left: 6.2em;
|
||||||
|
@include fontsize($font-size - 1);
|
||||||
|
color: $warning_color;
|
||||||
|
diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js
|
||||||
|
index 46eba88d54..fc8ee37a9a 100644
|
||||||
|
--- a/js/ui/shellEntry.js
|
||||||
|
+++ b/js/ui/shellEntry.js
|
||||||
|
@@ -6,6 +6,7 @@ const BoxPointer = imports.ui.boxpointer;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const Params = imports.misc.params;
|
||||||
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
+const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
|
var EntryMenu = class extends PopupMenu.PopupMenu {
|
||||||
|
constructor(entry) {
|
||||||
|
@@ -179,31 +180,47 @@ class CapsLockWarning extends St.Label {
|
||||||
|
|
||||||
|
this.text = _('Caps lock is on.');
|
||||||
|
|
||||||
|
+ this.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
+ this.clutter_text.line_wrap = true;
|
||||||
|
+
|
||||||
|
this._keymap = Clutter.get_default_backend().get_keymap();
|
||||||
|
|
||||||
|
this.connect('notify::mapped', () => {
|
||||||
|
if (this.is_mapped()) {
|
||||||
|
this._stateChangedId = this._keymap.connect('state-changed',
|
||||||
|
- this._updateCapsLockWarningOpacity.bind(this));
|
||||||
|
+ () => this._sync(true));
|
||||||
|
} else {
|
||||||
|
this._keymap.disconnect(this._stateChangedId);
|
||||||
|
this._stateChangedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- this._updateCapsLockWarningOpacity();
|
||||||
|
+ this._sync(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.connect('destroy', () => {
|
||||||
|
- if (this._stateChangedId > 0)
|
||||||
|
+ if (this._stateChangedId)
|
||||||
|
this._keymap.disconnect(this._stateChangedId);
|
||||||
|
});
|
||||||
|
-
|
||||||
|
- this.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
- this.clutter_text.line_wrap = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
- _updateCapsLockWarningOpacity() {
|
||||||
|
+ _sync(animate) {
|
||||||
|
let capsLockOn = this._keymap.get_caps_lock_state();
|
||||||
|
- this.opacity = capsLockOn ? 255 : 0;
|
||||||
|
+
|
||||||
|
+ Tweener.removeTweens(this);
|
||||||
|
+
|
||||||
|
+ this.natural_height_set = false;
|
||||||
|
+ let [, height] = this.get_preferred_height(-1);
|
||||||
|
+ this.natural_height_set = true;
|
||||||
|
+
|
||||||
|
+ Tweener.addTween(this, {
|
||||||
|
+ height: capsLockOn ? height : 0,
|
||||||
|
+ opacity: capsLockOn ? 255 : 0,
|
||||||
|
+ time: animate ? 0.2 : 0,
|
||||||
|
+ transition: 'easeOutQuad',
|
||||||
|
+ onComplete: () => {
|
||||||
|
+ if (capsLockOn)
|
||||||
|
+ this.height = -1;
|
||||||
|
+ },
|
||||||
|
+ });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From 1ef3dafb51da380c54635d0565dc098e40bbb3e1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Wed, 29 Jan 2020 17:48:57 +0100
|
||||||
|
Subject: [PATCH 6/7] js: Initialize some properties
|
||||||
|
|
||||||
|
Otherwise those can result in the (harmless) "reference to undefined
|
||||||
|
property" warnings.
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/970
|
||||||
|
---
|
||||||
|
js/ui/overview.js | 1 +
|
||||||
|
js/ui/shellEntry.js | 1 +
|
||||||
|
2 files changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/js/ui/overview.js b/js/ui/overview.js
|
||||||
|
index dc6ad1821b..5bad4cbd62 100644
|
||||||
|
--- a/js/ui/overview.js
|
||||||
|
+++ b/js/ui/overview.js
|
||||||
|
@@ -80,6 +80,7 @@ var Overview = class {
|
||||||
|
constructor() {
|
||||||
|
this._overviewCreated = false;
|
||||||
|
this._initCalled = false;
|
||||||
|
+ this._visible = false;
|
||||||
|
|
||||||
|
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
|
||||||
|
this._sessionUpdated();
|
||||||
|
diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js
|
||||||
|
index fc8ee37a9a..55267e7c87 100644
|
||||||
|
--- a/js/ui/shellEntry.js
|
||||||
|
+++ b/js/ui/shellEntry.js
|
||||||
|
@@ -184,6 +184,7 @@ class CapsLockWarning extends St.Label {
|
||||||
|
this.clutter_text.line_wrap = true;
|
||||||
|
|
||||||
|
this._keymap = Clutter.get_default_backend().get_keymap();
|
||||||
|
+ this._stateChangedId = 0;
|
||||||
|
|
||||||
|
this.connect('notify::mapped', () => {
|
||||||
|
if (this.is_mapped()) {
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From 273f7adb43cfee907342d017e1454ea90d42d262 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Fri, 21 Feb 2020 19:38:53 +0100
|
||||||
|
Subject: [PATCH 7/7] shellEntry: Restore natural-height-set instead of forcing
|
||||||
|
it
|
||||||
|
|
||||||
|
If we are transitioning the label from 0 to its natural height, we
|
||||||
|
must set natural-height-set again after querying the preferred height,
|
||||||
|
otherwise Clutter would skip the transition.
|
||||||
|
|
||||||
|
However when transitioning in the opposite direction, setting the
|
||||||
|
property to true can go horribly wrong:
|
||||||
|
If the actor hasn't been allocated before, it will store a fixed
|
||||||
|
natural height of 0. But as there is no fixed min-height, we can
|
||||||
|
end up with min-height > natural-height, which is a fatal error.
|
||||||
|
|
||||||
|
(This isn't an issue when *actually* setting a fixed height, as
|
||||||
|
that will set both natural and minimum height)
|
||||||
|
|
||||||
|
So instead of always setting natural-height-set to true, restore
|
||||||
|
its previous value to fix the issue.
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/issues/2255
|
||||||
|
---
|
||||||
|
js/ui/shellEntry.js | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js
|
||||||
|
index 55267e7c87..4a30b22f7a 100644
|
||||||
|
--- a/js/ui/shellEntry.js
|
||||||
|
+++ b/js/ui/shellEntry.js
|
||||||
|
@@ -209,9 +209,10 @@ class CapsLockWarning extends St.Label {
|
||||||
|
|
||||||
|
Tweener.removeTweens(this);
|
||||||
|
|
||||||
|
+ const naturalHeightSet = this.natural_height_set;
|
||||||
|
this.natural_height_set = false;
|
||||||
|
let [, height] = this.get_preferred_height(-1);
|
||||||
|
- this.natural_height_set = true;
|
||||||
|
+ this.natural_height_set = naturalHeightSet;
|
||||||
|
|
||||||
|
Tweener.addTween(this, {
|
||||||
|
height: capsLockOn ? height : 0,
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
3811
SOURCES/extension-updates.patch
Normal file
3811
SOURCES/extension-updates.patch
Normal file
File diff suppressed because it is too large
Load Diff
182
SOURCES/fix-some-js-warnings.patch
Normal file
182
SOURCES/fix-some-js-warnings.patch
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
From 43d6305bfbe079a3bf80a96d40a3a176c165ef7a Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
||||||
|
Date: Thu, 23 May 2019 06:12:56 +0200
|
||||||
|
Subject: [PATCH 1/5] realmd: Set login format to null on start and update if
|
||||||
|
invalid
|
||||||
|
|
||||||
|
We were checking an undefined property but that would lead to a a warning.
|
||||||
|
Instead we can consider the login format unset until is null, and in case
|
||||||
|
update it.
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
|
||||||
|
---
|
||||||
|
js/gdm/realmd.js | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/js/gdm/realmd.js b/js/gdm/realmd.js
|
||||||
|
index 50f3c5899..04cd99787 100644
|
||||||
|
--- a/js/gdm/realmd.js
|
||||||
|
+++ b/js/gdm/realmd.js
|
||||||
|
@@ -21,6 +21,7 @@ var Manager = class {
|
||||||
|
'/org/freedesktop/realmd',
|
||||||
|
this._reloadRealms.bind(this))
|
||||||
|
this._realms = {};
|
||||||
|
+ this._loginFormat = null;
|
||||||
|
|
||||||
|
this._signalId = this._aggregateProvider.connect('g-properties-changed',
|
||||||
|
(proxy, properties) => {
|
||||||
|
@@ -86,7 +87,7 @@ var Manager = class {
|
||||||
|
}
|
||||||
|
|
||||||
|
get loginFormat() {
|
||||||
|
- if (this._loginFormat !== undefined)
|
||||||
|
+ if (this._loginFormat)
|
||||||
|
return this._loginFormat;
|
||||||
|
|
||||||
|
this._updateLoginFormat();
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From 80836cd1ea4ef5d69a35bdfd7931b0e2c202f5b3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Tue, 9 Jun 2020 19:42:21 +0200
|
||||||
|
Subject: [PATCH 2/5] popupMenu: Guard against non-menu-item children
|
||||||
|
|
||||||
|
This avoid a harmless but annoying warning.
|
||||||
|
---
|
||||||
|
js/ui/popupMenu.js | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
|
||||||
|
index 44818533a..b5115d7f7 100644
|
||||||
|
--- a/js/ui/popupMenu.js
|
||||||
|
+++ b/js/ui/popupMenu.js
|
||||||
|
@@ -696,7 +696,8 @@ var PopupMenuBase = class {
|
||||||
|
}
|
||||||
|
|
||||||
|
_getMenuItems() {
|
||||||
|
- return this.box.get_children().map(a => a._delegate).filter(item => {
|
||||||
|
+ const children = this.box.get_children().filter(a => a._delegate !== undefined);
|
||||||
|
+ return children.map(a => a._delegate).filter(item => {
|
||||||
|
return item instanceof PopupBaseMenuItem || item instanceof PopupMenuSection;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From f0af67381cf0fb9a9ab766fa6b3d3e6ff5707122 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Tue, 9 Jun 2020 19:48:06 +0200
|
||||||
|
Subject: [PATCH 3/5] st/shadow: Check pipeline when painting
|
||||||
|
|
||||||
|
We shouldn't simply assume that st_shadow_helper_update() has been
|
||||||
|
called before paint() or that the pipeline was created successfully.
|
||||||
|
---
|
||||||
|
src/st/st-shadow.c | 11 ++++++-----
|
||||||
|
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/st/st-shadow.c b/src/st/st-shadow.c
|
||||||
|
index f3a22f034..7665de755 100644
|
||||||
|
--- a/src/st/st-shadow.c
|
||||||
|
+++ b/src/st/st-shadow.c
|
||||||
|
@@ -289,9 +289,10 @@ st_shadow_helper_paint (StShadowHelper *helper,
|
||||||
|
ClutterActorBox *actor_box,
|
||||||
|
guint8 paint_opacity)
|
||||||
|
{
|
||||||
|
- _st_paint_shadow_with_opacity (helper->shadow,
|
||||||
|
- framebuffer,
|
||||||
|
- helper->pipeline,
|
||||||
|
- actor_box,
|
||||||
|
- paint_opacity);
|
||||||
|
+ if (helper->pipeline != NULL)
|
||||||
|
+ _st_paint_shadow_with_opacity (helper->shadow,
|
||||||
|
+ framebuffer,
|
||||||
|
+ helper->pipeline,
|
||||||
|
+ actor_box,
|
||||||
|
+ paint_opacity);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From a500f3c59a485755b8361e8f4dd48f8df4af95ba Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Tue, 5 Jan 2021 21:42:24 +0100
|
||||||
|
Subject: [PATCH 4/5] viewSelector: Don't set page parent during construction
|
||||||
|
|
||||||
|
gjs now aggressively garbage-collects objects that fall out of scope,
|
||||||
|
sometimes too aggressively:
|
||||||
|
|
||||||
|
- we pass a child as construct property to StBin
|
||||||
|
- as a result, the child's ::parent-set handler runs
|
||||||
|
- when calling clutter_actor_get_parent() from that
|
||||||
|
handler, the returned object is garbage-collected
|
||||||
|
*before* the constructor returns (and thus the
|
||||||
|
assignment that would keep it alive)
|
||||||
|
|
||||||
|
This is a bug on the gjs side that should be fixed, but we can easily
|
||||||
|
work around the issue by setting the child after constructing the
|
||||||
|
parent.
|
||||||
|
---
|
||||||
|
js/ui/viewSelector.js | 12 +++++++-----
|
||||||
|
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js
|
||||||
|
index 77146552d..6529ac9a5 100644
|
||||||
|
--- a/js/ui/viewSelector.js
|
||||||
|
+++ b/js/ui/viewSelector.js
|
||||||
|
@@ -301,11 +301,13 @@ var ViewSelector = class {
|
||||||
|
_addPage(actor, name, a11yIcon, params) {
|
||||||
|
params = Params.parse(params, { a11yFocus: null });
|
||||||
|
|
||||||
|
- let page = new St.Bin({ child: actor,
|
||||||
|
- x_align: St.Align.START,
|
||||||
|
- y_align: St.Align.START,
|
||||||
|
- x_fill: true,
|
||||||
|
- y_fill: true });
|
||||||
|
+ let page = new St.Bin({
|
||||||
|
+ x_align: St.Align.START,
|
||||||
|
+ y_align: St.Align.START,
|
||||||
|
+ x_fill: true,
|
||||||
|
+ y_fill: true,
|
||||||
|
+ });
|
||||||
|
+ page.set_child(actor);
|
||||||
|
if (params.a11yFocus)
|
||||||
|
Main.ctrlAltTabManager.addGroup(params.a11yFocus, name, a11yIcon);
|
||||||
|
else
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
||||||
|
|
||||||
|
From a53d1a74fed3aee896a6930130bd7e3a39a24255 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Fri, 23 Oct 2020 23:44:48 +0200
|
||||||
|
Subject: [PATCH 5/5] workspacesView: Don't set up MetaLater when unparented
|
||||||
|
|
||||||
|
We already do the check in the later handler, but if we got
|
||||||
|
unparented because the actor is destroyed, then the call to
|
||||||
|
get_parent() itself will trigger a (harmless but annoying)
|
||||||
|
warning.
|
||||||
|
---
|
||||||
|
js/ui/workspacesView.js | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
|
||||||
|
index e302296a6..3270900b2 100644
|
||||||
|
--- a/js/ui/workspacesView.js
|
||||||
|
+++ b/js/ui/workspacesView.js
|
||||||
|
@@ -715,6 +715,9 @@ var WorkspacesDisplay = class {
|
||||||
|
oldParent.disconnect(this._notifyOpacityId);
|
||||||
|
this._notifyOpacityId = 0;
|
||||||
|
|
||||||
|
+ if (!this.actor.get_parent())
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
||||||
|
let newParent = this.actor.get_parent();
|
||||||
|
if (!newParent)
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
117
SOURCES/osk-fixes.patch
Normal file
117
SOURCES/osk-fixes.patch
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
From 96ccb155bbe6ce570832a9f3d27a0a08698127ea Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
|
||||||
|
Date: Sat, 28 Mar 2020 14:15:09 +0100
|
||||||
|
Subject: [PATCH 1/3] keyboard: Don't include keyboard devices when updating
|
||||||
|
lastDevice
|
||||||
|
|
||||||
|
We're dealing with attached keyboards now using the touch_mode property
|
||||||
|
of ClutterSeat: If a device has a keyboard attached, the touch-mode is
|
||||||
|
FALSE and we won't automatically show the OSK on touches, also the
|
||||||
|
touch-mode gets set to FALSE when an external keyboard is being plugged
|
||||||
|
in, so that also hides the OSK automatically.
|
||||||
|
|
||||||
|
With that, we can now ignore keyboard devices when updating the last
|
||||||
|
used device and no longer have to special-case our own virtual devices.
|
||||||
|
|
||||||
|
Because there was no special-case for the virtual device we use on
|
||||||
|
Wayland now, this fixes a bug where the keyboard disappeared after
|
||||||
|
touching keys like Enter or Backspace.
|
||||||
|
|
||||||
|
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2287
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1142
|
||||||
|
---
|
||||||
|
js/ui/keyboard.js | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
|
||||||
|
index c4ac72d..94b5325 100644
|
||||||
|
--- a/js/ui/keyboard.js
|
||||||
|
+++ b/js/ui/keyboard.js
|
||||||
|
@@ -1075,6 +1075,9 @@ var Keyboard = class Keyboard {
|
||||||
|
let device = manager.get_device(deviceId);
|
||||||
|
|
||||||
|
if (device.get_device_name().indexOf('XTEST') < 0) {
|
||||||
|
+ if (device.device_type == Clutter.InputDeviceType.KEYBOARD_DEVICE)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
this._lastDeviceId = deviceId;
|
||||||
|
this._syncEnabled();
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
||||||
|
|
||||||
|
From 3106746ae424287d8644643a2ef46d565e4cd7ed Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
|
||||||
|
Date: Sat, 28 Mar 2020 14:34:24 +0100
|
||||||
|
Subject: [PATCH 2/3] layout: Use translation_y of 0 to hide keyboard
|
||||||
|
|
||||||
|
Since we show the keyboard using a translation_y of -keyboardHeight, the
|
||||||
|
keyboard will be moved down far enough to be out of sight by setting
|
||||||
|
translation_y to 0.
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1142
|
||||||
|
---
|
||||||
|
js/ui/layout.js | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/layout.js b/js/ui/layout.js
|
||||||
|
index beb4c0a..4382f6e 100644
|
||||||
|
--- a/js/ui/layout.js
|
||||||
|
+++ b/js/ui/layout.js
|
||||||
|
@@ -719,7 +719,7 @@ var LayoutManager = GObject.registerClass({
|
||||||
|
showKeyboard() {
|
||||||
|
this.keyboardBox.show();
|
||||||
|
Tweener.addTween(this.keyboardBox,
|
||||||
|
- { anchor_y: this.keyboardBox.height,
|
||||||
|
+ { translation_y: -this.keyboardBox.height,
|
||||||
|
opacity: 255,
|
||||||
|
time: KEYBOARD_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
@@ -735,7 +735,7 @@ var LayoutManager = GObject.registerClass({
|
||||||
|
this._updateRegions();
|
||||||
|
|
||||||
|
this._keyboardHeightNotifyId = this.keyboardBox.connect('notify::height', () => {
|
||||||
|
- this.keyboardBox.anchor_y = this.keyboardBox.height;
|
||||||
|
+ this.keyboardBox.translation_y = -this.keyboardBox.height;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -745,7 +745,7 @@ var LayoutManager = GObject.registerClass({
|
||||||
|
this._keyboardHeightNotifyId = 0;
|
||||||
|
}
|
||||||
|
Tweener.addTween(this.keyboardBox,
|
||||||
|
- { anchor_y: 0,
|
||||||
|
+ { translation_y: 0,
|
||||||
|
opacity: 0,
|
||||||
|
time: immediate ? 0 : KEYBOARD_ANIMATION_TIME,
|
||||||
|
transition: 'easeInQuad',
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
||||||
|
|
||||||
|
From 642822308a72be6a47f4eb285f32539499f0d3e4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: rpm-build <rpm-build>
|
||||||
|
Date: Wed, 21 Oct 2020 20:29:34 +0200
|
||||||
|
Subject: [PATCH 3/3] layout: queue redraw after hiding keyboard
|
||||||
|
|
||||||
|
---
|
||||||
|
js/ui/layout.js | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/js/ui/layout.js b/js/ui/layout.js
|
||||||
|
index 4382f6e..1824313 100644
|
||||||
|
--- a/js/ui/layout.js
|
||||||
|
+++ b/js/ui/layout.js
|
||||||
|
@@ -759,6 +759,7 @@ var LayoutManager = GObject.registerClass({
|
||||||
|
_hideKeyboardComplete() {
|
||||||
|
this.keyboardBox.hide();
|
||||||
|
this._updateRegions();
|
||||||
|
+ global.stage.queue_redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
// setDummyCursorGeometry:
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
79
SOURCES/wake-up-on-deactivate.patch
Normal file
79
SOURCES/wake-up-on-deactivate.patch
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
From d6ead50fe230df58ddab822966d69760b00ec920 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Wed, 1 Apr 2020 14:48:10 +0200
|
||||||
|
Subject: [PATCH 1/2] screenShield: Switch lightboxes off before unlock
|
||||||
|
transition
|
||||||
|
|
||||||
|
There is no point in animating a transition with fullscreen black
|
||||||
|
rectangles stacked on top, so switch them off before rather than
|
||||||
|
after the transition.
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1158
|
||||||
|
---
|
||||||
|
js/ui/screenShield.js | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
|
||||||
|
index cd38f11fc8..282f29fa30 100644
|
||||||
|
--- a/js/ui/screenShield.js
|
||||||
|
+++ b/js/ui/screenShield.js
|
||||||
|
@@ -1221,6 +1221,9 @@ var ScreenShield = class {
|
||||||
|
this._isModal = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ this._longLightbox.hide();
|
||||||
|
+ this._shortLightbox.hide();
|
||||||
|
+
|
||||||
|
Tweener.addTween(this._lockDialogGroup, {
|
||||||
|
scale_x: 0,
|
||||||
|
scale_y: 0,
|
||||||
|
@@ -1237,8 +1240,6 @@ var ScreenShield = class {
|
||||||
|
this._dialog = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
- this._longLightbox.hide();
|
||||||
|
- this._shortLightbox.hide();
|
||||||
|
this.actor.hide();
|
||||||
|
|
||||||
|
if (this._becameActiveId != 0) {
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 39ac7cad68d8c00d98c900b35add637b01eddbbf Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Tue, 31 Mar 2020 21:07:59 +0200
|
||||||
|
Subject: [PATCH 2/2] screenShield: Wake up on deactivate()
|
||||||
|
|
||||||
|
Usually the screen is woken up before the shield is deactivated, but
|
||||||
|
it is also possible to unlock the session programmatically via the
|
||||||
|
org.gnome.ScreenSaver D-Bus API.
|
||||||
|
|
||||||
|
The intention is very likely not to unlock a turned off screen in
|
||||||
|
that case. Nor does it seem like a good idea to change the lock
|
||||||
|
state without any indication.
|
||||||
|
|
||||||
|
Waking up the screen is more likely to meet expectations and is
|
||||||
|
more reasonable too, so do that.
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1158
|
||||||
|
---
|
||||||
|
js/ui/screenShield.js | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
|
||||||
|
index 282f29fa30..2d0a429bee 100644
|
||||||
|
--- a/js/ui/screenShield.js
|
||||||
|
+++ b/js/ui/screenShield.js
|
||||||
|
@@ -1200,6 +1200,8 @@ var ScreenShield = class {
|
||||||
|
if (Main.sessionMode.currentMode == 'unlock-dialog')
|
||||||
|
Main.sessionMode.popMode('unlock-dialog');
|
||||||
|
|
||||||
|
+ this.emit('wake-up-screen');
|
||||||
|
+
|
||||||
|
if (this._isGreeter) {
|
||||||
|
// We don't want to "deactivate" any more than
|
||||||
|
// this. In particular, we don't want to drop
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
Name: gnome-shell
|
Name: gnome-shell
|
||||||
Version: 3.32.2
|
Version: 3.32.2
|
||||||
Release: 19%{?dist}
|
Release: 29%{?dist}
|
||||||
Summary: Window management and application launching for GNOME
|
Summary: Window management and application launching for GNOME
|
||||||
|
|
||||||
Group: User Interface/Desktops
|
Group: User Interface/Desktops
|
||||||
@ -24,14 +24,18 @@ Patch16: 0001-data-install-process-working.svg-to-filesystem.patch
|
|||||||
Patch17: 0001-loginDialog-make-info-messages-themed.patch
|
Patch17: 0001-loginDialog-make-info-messages-themed.patch
|
||||||
Patch18: 0001-gdm-add-AuthList-control.patch
|
Patch18: 0001-gdm-add-AuthList-control.patch
|
||||||
Patch19: 0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch
|
Patch19: 0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch
|
||||||
|
Patch20: wake-up-on-deactivate.patch
|
||||||
|
Patch21: caps-lock-warning.patch
|
||||||
|
|
||||||
# Misc.
|
# Misc.
|
||||||
Patch30: 0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch
|
Patch30: 0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch
|
||||||
Patch31: 0001-extensions-Add-a-SESSION_MODE-extension-type.patch
|
Patch31: 0001-extensions-Add-a-SESSION_MODE-extension-type.patch
|
||||||
Patch32: 0001-extensionSystem-Notify-about-extension-issues-on-upd.patch
|
Patch32: extension-updates.patch
|
||||||
Patch33: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch
|
Patch33: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch
|
||||||
Patch34: 0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch
|
Patch34: 0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch
|
||||||
Patch35: 0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch
|
Patch35: 0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch
|
||||||
|
Patch36: 0001-shell-app-Handle-workspace-from-startup-notification.patch
|
||||||
|
Patch37: 0001-main-Dump-stack-on-segfaults-by-default.patch
|
||||||
Patch38: 0001-appDisplay-Show-full-app-name-on-hover.patch
|
Patch38: 0001-appDisplay-Show-full-app-name-on-hover.patch
|
||||||
Patch39: horizontal-workspace-support.patch
|
Patch39: horizontal-workspace-support.patch
|
||||||
Patch40: 0001-animation-fix-unintentional-loop-while-polkit-dialog.patch
|
Patch40: 0001-animation-fix-unintentional-loop-while-polkit-dialog.patch
|
||||||
@ -46,10 +50,12 @@ Patch48: 0001-padOsd-Re-query-action-labels-after-mode-switches.patch
|
|||||||
Patch49: 0001-Do-not-change-Wacom-LEDs-through-g-s-d.patch
|
Patch49: 0001-Do-not-change-Wacom-LEDs-through-g-s-d.patch
|
||||||
Patch50: 0001-st-texture-cache-Cancel-pending-requests-on-icon-the.patch
|
Patch50: 0001-st-texture-cache-Cancel-pending-requests-on-icon-the.patch
|
||||||
Patch51: introspect-backports.patch
|
Patch51: introspect-backports.patch
|
||||||
|
Patch52: 0001-popupMenu-Handle-keypress-if-numlock-is-enabled.patch
|
||||||
|
|
||||||
# Backport JS invalid access warnings (#1651894, #1663171, #1642482, #1637622)
|
# Backport JS invalid access warnings (#1651894, #1663171, #1642482, #1637622)
|
||||||
Patch54: fix-invalid-access-warnings.patch
|
Patch54: fix-invalid-access-warnings.patch
|
||||||
Patch55: more-spurious-allocation-warnings.patch
|
Patch55: more-spurious-allocation-warnings.patch
|
||||||
|
Patch56: fix-some-js-warnings.patch
|
||||||
|
|
||||||
# Backport performance fixes under load (#1820760)
|
# Backport performance fixes under load (#1820760)
|
||||||
Patch60: 0001-environment-reduce-calls-to-g_time_zone_new_local.patch
|
Patch60: 0001-environment-reduce-calls-to-g_time_zone_new_local.patch
|
||||||
@ -59,6 +65,12 @@ Patch63: 0004-global-force-fsync-to-worker-thread-when-saving-stat.patch
|
|||||||
Patch64: 0005-app-cache-add-ShellAppCache-for-GAppInfo-caching.patch
|
Patch64: 0005-app-cache-add-ShellAppCache-for-GAppInfo-caching.patch
|
||||||
Patch65: 0006-js-Always-use-AppSystem-to-lookup-apps.patch
|
Patch65: 0006-js-Always-use-AppSystem-to-lookup-apps.patch
|
||||||
|
|
||||||
|
# Stop screen recording on monitor changes (#1705392)
|
||||||
|
Patch70: 0001-screencast-Stop-recording-when-screen-size-or-resour.patch
|
||||||
|
|
||||||
|
# Backport OSK fixes (#1871041)
|
||||||
|
Patch75: osk-fixes.patch
|
||||||
|
|
||||||
# suspend/resume fix on nvidia (#1663440)
|
# suspend/resume fix on nvidia (#1663440)
|
||||||
Patch10001: 0001-background-refresh-after-suspend-on-wayland.patch
|
Patch10001: 0001-background-refresh-after-suspend-on-wayland.patch
|
||||||
Patch10002: 0002-background-rebuild-background-not-just-animation-on-.patch
|
Patch10002: 0002-background-rebuild-background-not-just-animation-on-.patch
|
||||||
@ -216,6 +228,8 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
|
|||||||
%{_datadir}/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml
|
%{_datadir}/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml
|
||||||
%{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider.xml
|
%{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider.xml
|
||||||
%{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml
|
%{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml
|
||||||
|
%{_datadir}/icons/hicolor/scalable/apps/org.gnome.Extensions.svg
|
||||||
|
%{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Extensions-symbolic.svg
|
||||||
%{_userunitdir}/gnome-shell.service
|
%{_userunitdir}/gnome-shell.service
|
||||||
%{_userunitdir}/gnome-shell-wayland.target
|
%{_userunitdir}/gnome-shell-wayland.target
|
||||||
%{_userunitdir}/gnome-shell-x11.target
|
%{_userunitdir}/gnome-shell-x11.target
|
||||||
@ -238,6 +252,50 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
|
|||||||
%{_mandir}/man1/%{name}.1.gz
|
%{_mandir}/man1/%{name}.1.gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Feb 01 2021 Florian Müllner <fmuellner@redhat.com> - 3.32.2-29
|
||||||
|
- Refuse to override system extensions
|
||||||
|
Related: #1802105
|
||||||
|
|
||||||
|
* Mon Jan 25 2021 Florian Müllner <fmuellner@redhat.com> - 3.32.2-28
|
||||||
|
- Backport extension updates support
|
||||||
|
Related: #1802105
|
||||||
|
|
||||||
|
* Thu Jan 14 2021 Florian Müllner <fmuellner@redhat.com> - 3.32.2-27
|
||||||
|
- Default to printing JS backtrace on segfaults
|
||||||
|
Resolves: #1883868
|
||||||
|
|
||||||
|
* Wed Jan 13 2021 Carlos Garnacho <cgarnach@redhat.com> - 3.32.2-26
|
||||||
|
- Backport OSK fixes
|
||||||
|
Resolves: #1871041
|
||||||
|
|
||||||
|
* Tue Jan 12 2021 Jonas Ådahl <jadahl@redhat.com> - 3.32.2-25
|
||||||
|
- Stop screen recording on monitor changes
|
||||||
|
Resolves: #1705392
|
||||||
|
|
||||||
|
* Thu Jan 07 2021 Florian Müllner <fmuellner@redhat.com> - 3.32.2-24
|
||||||
|
- Handle workspace from startup notification
|
||||||
|
Resolves: #1671761
|
||||||
|
|
||||||
|
* Tue Jan 05 2021 Florian Müllner <fmuellner@redhat.com> - 3.32.2-23
|
||||||
|
- Work around aggressive garbage collection
|
||||||
|
Related: #1881312
|
||||||
|
|
||||||
|
* Fri Oct 23 2020 Florian Müllner <fmuellner@redhat.com> - 3.32.2-22
|
||||||
|
- Wake up lock screen when deactivated programmatically
|
||||||
|
Resolves: #1854290
|
||||||
|
- Backport better caps-lock warning
|
||||||
|
Resolves: #1861357
|
||||||
|
- Fix more (harmless) JS warnings
|
||||||
|
Resolves: #1881312
|
||||||
|
|
||||||
|
* Thu Oct 01 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 3.32.2-21
|
||||||
|
- Fix JS warning in AuthList downstream patch
|
||||||
|
Resolves: #1860946
|
||||||
|
|
||||||
|
* Thu Jul 30 2020 Florian Müllner <fmuellner@redhat.com> - 3.32.2-20
|
||||||
|
- Fix popupMenu keynav when NumLock is active
|
||||||
|
Resolves: #1840080
|
||||||
|
|
||||||
* Mon Jun 15 2020 Florian Müllner <fmuellner@redhat.com> - 3.32.2-19
|
* Mon Jun 15 2020 Florian Müllner <fmuellner@redhat.com> - 3.32.2-19
|
||||||
- Fix last backport
|
- Fix last backport
|
||||||
Resolves: #1847051
|
Resolves: #1847051
|
||||||
|
Loading…
Reference in New Issue
Block a user