import gnome-shell-3.32.2-30.el8
This commit is contained in:
parent
0a8425e83d
commit
7f32e65a87
@ -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);
|
||||
+
|
||||
+const AuthList = new Lang.Class({
|
||||
+var AuthList = new Lang.Class({
|
||||
+ Name: 'AuthList',
|
||||
+
|
||||
+ _init() {
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 2acede02f30833c3fb891db8483f933f7b41508c Mon Sep 17 00:00:00 2001
|
||||
From: rpm-build <rpm-build>
|
||||
Date: Wed, 21 Oct 2020 21:32:03 +0200
|
||||
Subject: [PATCH] keyboard: Only enable keyboard if
|
||||
ClutterDeviceManager::touch-mode is enabled
|
||||
|
||||
---
|
||||
js/ui/keyboard.js | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
|
||||
index 94b5325..b1ee270 100644
|
||||
--- a/js/ui/keyboard.js
|
||||
+++ b/js/ui/keyboard.js
|
||||
@@ -1051,6 +1051,9 @@ var Keyboard = class Keyboard {
|
||||
this._suggestions = null;
|
||||
this._emojiKeyVisible = true;
|
||||
|
||||
+ let manager = Clutter.DeviceManager.get_default();
|
||||
+ manager.connect('notify::touch-mode', this._syncEnabled.bind(this));
|
||||
+
|
||||
this._focusTracker = new FocusTracker();
|
||||
this._focusTracker.connect('position-changed', this._onFocusPositionChanged.bind(this));
|
||||
this._focusTracker.connect('reset', () => {
|
||||
@@ -1120,8 +1123,10 @@ var Keyboard = class Keyboard {
|
||||
|
||||
_syncEnabled() {
|
||||
let wasEnabled = this._enabled;
|
||||
+ let manager = Clutter.DeviceManager.get_default();
|
||||
+ let autoEnabled = manager.get_touch_mode() && this._lastDeviceIsTouchscreen();
|
||||
this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD);
|
||||
- this._enabled = this._enableKeyboard || this._lastDeviceIsTouchscreen();
|
||||
+ this._enabled = this._enableKeyboard || autoEnabled;
|
||||
if (!this._enabled && !this._keyboardController)
|
||||
return;
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
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,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
|
||||
Version: 3.32.2
|
||||
Release: 20%{?dist}
|
||||
Release: 30%{?dist}
|
||||
Summary: Window management and application launching for GNOME
|
||||
|
||||
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
|
||||
Patch18: 0001-gdm-add-AuthList-control.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.
|
||||
Patch30: 0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.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
|
||||
Patch34: 0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.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
|
||||
Patch39: horizontal-workspace-support.patch
|
||||
Patch40: 0001-animation-fix-unintentional-loop-while-polkit-dialog.patch
|
||||
@ -51,6 +55,7 @@ Patch52: 0001-popupMenu-Handle-keypress-if-numlock-is-enabled.patch
|
||||
# Backport JS invalid access warnings (#1651894, #1663171, #1642482, #1637622)
|
||||
Patch54: fix-invalid-access-warnings.patch
|
||||
Patch55: more-spurious-allocation-warnings.patch
|
||||
Patch56: fix-some-js-warnings.patch
|
||||
|
||||
# Backport performance fixes under load (#1820760)
|
||||
Patch60: 0001-environment-reduce-calls-to-g_time_zone_new_local.patch
|
||||
@ -60,6 +65,13 @@ Patch63: 0004-global-force-fsync-to-worker-thread-when-saving-stat.patch
|
||||
Patch64: 0005-app-cache-add-ShellAppCache-for-GAppInfo-caching.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
|
||||
Patch76: 0001-keyboard-Only-enable-keyboard-if-ClutterDeviceManage.patch
|
||||
|
||||
# suspend/resume fix on nvidia (#1663440)
|
||||
Patch10001: 0001-background-refresh-after-suspend-on-wayland.patch
|
||||
Patch10002: 0002-background-rebuild-background-not-just-animation-on-.patch
|
||||
@ -217,6 +229,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.ShellSearchProvider.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-wayland.target
|
||||
%{_userunitdir}/gnome-shell-x11.target
|
||||
@ -239,6 +253,50 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
|
||||
%{_mandir}/man1/%{name}.1.gz
|
||||
|
||||
%changelog
|
||||
* Mon Feb 22 2021 Carlos Garnacho <cgarnach@redhat.com> - 3.32.2-30
|
||||
- Backport of touch mode
|
||||
Resolves: #1833787
|
||||
|
||||
* 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
|
||||
|
Loading…
Reference in New Issue
Block a user