From cd24db88a99dd9dffc968ae0f83d6f0e1277b5cb Mon Sep 17 00:00:00 2001 From: Athanasius Date: Fri, 11 Sep 2020 11:14:19 +0100 Subject: [PATCH] UI Scaling: Size the Scale bar as per our startup value If we use the last configured value then the width of the Scale bar changes as per the user's last setting, even though they might not have yet restarted for all the rest of the UI to resize. --- EDMarketConnector.py | 2 ++ prefs.py | 4 ++-- theme.py | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/EDMarketConnector.py b/EDMarketConnector.py index b6e348a7..f2f8fbb4 100755 --- a/EDMarketConnector.py +++ b/EDMarketConnector.py @@ -1068,11 +1068,13 @@ Locale LC_TIME: {locale.getlocale(locale.LC_TIME)}''' We scale the UI relative to what we find tk-scaling is on startup. """ ui_scale = config.getint('ui_scale') + # NB: This *also* catches a literal 0 value to re-set to the default 100 if not ui_scale: ui_scale = 100 config.set('ui_scale', ui_scale) theme.default_ui_scale = root.tk.call('tk', 'scaling') logger.debug(f'Default tk scaling = {theme.default_ui_scale}') + theme.startup_ui_scale = ui_scale root.tk.call('tk', 'scaling', theme.default_ui_scale * float(ui_scale) / 100.0) app = AppWindow(root) diff --git a/prefs.py b/prefs.py index 40cf8a93..6b2e824c 100644 --- a/prefs.py +++ b/prefs.py @@ -354,8 +354,8 @@ class PreferencesDialog(tk.Toplevel): themeframe, variable=self.ui_scale, orient=tk.HORIZONTAL, - length=300 * (float(config.getint('ui_scale')) / 100.0 * theme.default_ui_scale), - from_=10, + length=300 * (float(theme.startup_ui_scale) / 100.0 * theme.default_ui_scale), + from_=0, to=400, tickinterval=50, resolution=10, diff --git a/theme.py b/theme.py index f1a97721..d56b7798 100644 --- a/theme.py +++ b/theme.py @@ -116,6 +116,7 @@ class _Theme(object): self.defaults = {} self.current = {} self.default_ui_scale = None # None == not yet known + self.startup_ui_scale = None def register(self, widget): # Note widget and children for later application of a theme. Note if the widget has explicit fg or bg attributes.