import gnome-shell-3.32.2-30.el8

This commit is contained in:
CentOS Sources 2021-05-18 02:42:55 -04:00 committed by Andrew Lukoshko
parent 0a8425e83d
commit 7f32e65a87
12 changed files with 5146 additions and 75 deletions

View File

@ -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

View File

@ -100,7 +100,7 @@ index 000000000..fc1c3d6e4
+});
+Signals.addSignalMethods(AuthListItem.prototype);
+
+const AuthList = new Lang.Class({
+var AuthList = new Lang.Class({
+ Name: 'AuthList',
+
+ _init() {

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View 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 didnt 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

File diff suppressed because it is too large Load Diff

View 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
View 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

View 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

View File

@ -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