Backport support for top positioning

The current mockups from branding position the logo on the
top right, which the extension didn't support until recently.

Related: #2052594
This commit is contained in:
Florian Müllner 2022-02-22 18:54:08 +01:00
parent 5d642bc50b
commit a4512614e7
3 changed files with 183 additions and 1 deletions

View File

@ -0,0 +1,135 @@
From ff01583cb7eb00cbe012011b3de34298243787bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Tue, 8 Feb 2022 13:41:18 +0100
Subject: [PATCH] Support positioning at the top
Fedora has always placed the logo at the bottom, but for RHEL the
placement will likely be at the top.
---
extension.js | 30 ++++++++-----------
prefs.js | 30 +++++++++----------
...sted.background-logo-extension.gschema.xml | 6 +++-
3 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/extension.js b/extension.js
index d1bf35b..8255617 100644
--- a/extension.js
+++ b/extension.js
@@ -166,26 +166,22 @@ class BackgroundLogo extends St.Widget {
_updatePosition() {
let xAlign, yAlign;
- switch (this._settings.get_string('logo-position')) {
- case 'center':
- xAlign = Clutter.ActorAlign.CENTER;
- yAlign = Clutter.ActorAlign.CENTER;
- break;
- case 'bottom-left':
+ const position = this._settings.get_string('logo-position');
+ if (position.endsWith('left'))
xAlign = Clutter.ActorAlign.START;
- yAlign = Clutter.ActorAlign.END;
- break;
- case 'bottom-center':
- xAlign = Clutter.ActorAlign.CENTER;
- yAlign = Clutter.ActorAlign.END;
- break;
- case 'bottom-right':
+ else if (position.endsWith('right'))
xAlign = Clutter.ActorAlign.END;
+ else
+ xAlign = Clutter.ActorAlign.CENTER;
+
+ if (position.startsWith('top'))
+ yAlign = Clutter.ActorAlign.START;
+ else if (position.startsWith('bottom'))
yAlign = Clutter.ActorAlign.END;
- break;
- }
- this._bin.x_align = xAlign;
- this._bin.y_align = yAlign;
+ else
+ yAlign = Clutter.ActorAlign.CENTER;
+
+ this._bin.set({ xAlign, yAlign });
}
_updateBorder() {
diff --git a/prefs.js b/prefs.js
index a2ce27a..c8d5903 100644
--- a/prefs.js
+++ b/prefs.js
@@ -76,6 +76,9 @@ class BackgroundLogoPrefsWidget extends Gtk.Grid {
comboBox.append('bottom-left', 'Bottom left');
comboBox.append('bottom-center', 'Bottom center');
comboBox.append('bottom-right', 'Bottom right');
+ comboBox.append('top-left', 'Top left');
+ comboBox.append('top-center', 'Top center');
+ comboBox.append('top-right', 'Top right');
this._settings.bind('logo-position',
comboBox, 'active-id',
Gio.SettingsBindFlags.DEFAULT);
@@ -196,24 +199,21 @@ class BackgroundLogoPrefsWidget extends Gtk.Grid {
_getLogoPosition(width, height) {
let scaledBorder = this._settings.get_uint('logo-border');
let x, y;
- switch (this._settings.get_string('logo-position')) {
- case 'center':
- x = (width - this._logo.get_width()) / 2;
- y = (height - this._logo.get_height()) / 2;
- break;
- case 'bottom-left':
+ const position = this._settings.get_string('logo-position');
+ if (position.endsWith('left'))
x = scaledBorder;
- y = height - this._logo.get_height() - scaledBorder;
- break;
- case 'bottom-center':
+ else if (position.endsWith('right'))
+ x = (width - this._logo.get_width() - scaledBorder);
+ else
x = (width - this._logo.get_width()) / 2;
+
+ if (position.startsWith('top'))
+ y = scaledBorder;
+ else if (position.startsWith('bottom'))
y = height - this._logo.get_height() - scaledBorder;
- break;
- case 'bottom-right':
- x = width - this._logo.get_width() - scaledBorder;
- y = height - this._logo.get_height() - scaledBorder;
- break;
- }
+ else
+ y = (height - this._logo.get_height()) / 2;
+
return [x, y];
}
diff --git a/schemas/org.fedorahosted.background-logo-extension.gschema.xml b/schemas/org.fedorahosted.background-logo-extension.gschema.xml
index abacefb..74bc3a8 100644
--- a/schemas/org.fedorahosted.background-logo-extension.gschema.xml
+++ b/schemas/org.fedorahosted.background-logo-extension.gschema.xml
@@ -5,6 +5,9 @@
<value nick="bottom-left" value="1"/>
<value nick="bottom-center" value="2"/>
<value nick="bottom-right" value="3" />
+ <value nick="top-left" value="4"/>
+ <value nick="top-center" value="5"/>
+ <value nick="top-right" value="6" />
</enum>
<schema path="/org/fedorahosted/background-logo-extension/"
@@ -20,7 +23,8 @@
<summary>Logo position</summary>
<description>
The position logo of the logo; valid values are 'center',
- 'bottom-left', 'bottom-center' and 'bottom-right'
+ 'bottom-left', 'bottom-center', 'bottom-right',
+ 'top-left', 'top-center' and 'top-right'
</description>
</key>
<key type="d" name="logo-size">
--
2.33.1

View File

@ -0,0 +1,40 @@
From ab86a3469bca9246ba5a6039d0cce8c6afae1fc9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Tue, 15 Feb 2022 15:25:43 +0100
Subject: [PATCH] prefs: Scale preview border
We currently pick up the settings value directly, which is the
border that is used on the actual (i.e. monitor-sized) background.
That's way too big when applied as-is on the preview, so assume a
common monitor size and compute an appropriate scale from that.
---
prefs.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/prefs.js b/prefs.js
index c8d5903..ba78322 100644
--- a/prefs.js
+++ b/prefs.js
@@ -13,6 +13,7 @@ const ExtensionUtils = imports.misc.extensionUtils;
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
+const MONITOR_WIDTH = 1920;
const PREVIEW_WIDTH = 400;
let BackgroundLogoPrefsWidget = GObject.registerClass(
@@ -197,7 +198,9 @@ class BackgroundLogoPrefsWidget extends Gtk.Grid {
}
_getLogoPosition(width, height) {
- let scaledBorder = this._settings.get_uint('logo-border');
+ const previewScale = PREVIEW_WIDTH / MONITOR_WIDTH;
+ const scaledBorder =
+ previewScale * this._settings.get_uint('logo-border');
let x, y;
const position = this._settings.get_string('logo-position');
if (position.endsWith('left'))
--
2.33.1

View File

@ -3,7 +3,7 @@
Name: gnome-shell-extension-background-logo
Version: 40.0~rc
Release: 2%{?dist}
Release: 3%{?dist}
Summary: Background logo extension for GNOME Shell
License: GPLv2+
@ -20,6 +20,9 @@ Requires: gnome-shell >= %{shell_version}
# https://pagure.io/background-logo-extension/pull-request/32
Patch0: 32.patch
Patch1: 0001-Support-positioning-at-the-top.patch
Patch2: 0001-prefs-Scale-preview-border.patch
%description
Show your pride! Display the Fedora logo (or any other graphic) in the corner of your desktop.
@ -39,6 +42,10 @@ Show your pride! Display the Fedora logo (or any other graphic) in the corner of
%{_datadir}/gnome-shell/extensions/background-logo@fedorahosted.org/
%changelog
* Tue Feb 22 2022 Florian Müllner <fmuellner@redhat.com> - 40.0~rc-3
- Backport support for top positioning in RHEL
Related: #2052594
* Wed Mar 31 2021 Michael Catanzaro <mcatanzaro@redhat.com> - 40.0~rc-2
- Fix logo flickering