From ff01583cb7eb00cbe012011b3de34298243787bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= 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 @@ + + + Logo position 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' -- 2.33.1