From 77cfd1393c0bb7dbe7a23bc6a7f9d9400eb9c11c Mon Sep 17 00:00:00 2001 From: pajlada Date: Sun, 3 Mar 2024 13:41:32 +0100 Subject: [PATCH] fix: the font switcher now remembers your previous font (#5224) Fixes #2112 --- CHANGELOG.md | 1 + src/widgets/settingspages/GeneralPage.cpp | 16 +++++----- src/widgets/settingspages/GeneralPageView.hpp | 29 ++++++++++++++----- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6601c09e2..2311c7bf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,7 @@ - Bugfix: Fixed selection of tabs after closing a tab when using "Live Tabs Only". (#4770) - Bugfix: Fixed input in reply thread popup losing focus when dragging. (#4815) - Bugfix: Fixed the Quick Switcher (CTRL+K) from sometimes showing up on the wrong window. (#4819) +- Bugfix: Fixed the font switcher not remembering what font you had previously selected. (#5224) - Bugfix: Fixed too much text being copied when copying chat messages. (#4812, #4830, #4839) - Bugfix: Fixed an issue where the setting `Only search for emote autocompletion at the start of emote names` wouldn't disable if it was enabled when the client started. (#4855) - Bugfix: Fixed empty page being added when showing out of bounds dialog. (#4849) diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index 2923516cc..546bc70f3 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -173,7 +173,8 @@ void GeneralPage::initLayout(GeneralPageView &layout) }, [this](auto args) { return this->getFont(args); - }); + }, + true, "", true); layout.addDropdown( "Font size", {"9pt", "10pt", "12pt", "14pt", "16pt", "20pt"}, getIApp()->getFonts()->chatFontSize, @@ -1293,22 +1294,19 @@ QString GeneralPage::getFont(const DropdownArgs &args) const { if (args.combobox->currentIndex() == args.combobox->count() - 1) { - args.combobox->setCurrentIndex(0); args.combobox->setEditText("Choosing..."); - QFontDialog dialog( - getIApp()->getFonts()->getFont(FontStyle::ChatMedium, 1.)); auto ok = bool(); - auto font = dialog.getFont(&ok, this->window()); + auto previousFont = + getIApp()->getFonts()->getFont(FontStyle::ChatMedium, 1.); + auto font = QFontDialog::getFont(&ok, previousFont, this->window()); if (ok) { return font.family(); } - else - { - return args.combobox->itemText(0); - } + + return previousFont.family(); } return args.value; } diff --git a/src/widgets/settingspages/GeneralPageView.hpp b/src/widgets/settingspages/GeneralPageView.hpp index 0cfa17998..d2a0a27e1 100644 --- a/src/widgets/settingspages/GeneralPageView.hpp +++ b/src/widgets/settingspages/GeneralPageView.hpp @@ -147,7 +147,7 @@ public: pajlada::Settings::Setting &setting, std::function(T)> getValue, std::function setValue, bool editable = true, - QString toolTipText = {}) + QString toolTipText = {}, bool listenToActivated = false) { auto items2 = items; auto selected = getValue(setting.getValue()); @@ -197,14 +197,27 @@ public: }, this->managedConnections_); - QObject::connect( - combo, QOverload::of(&QComboBox::currentIndexChanged), - [combo, &setting, - setValue = std::move(setValue)](const int newIndex) { - setting = setValue(DropdownArgs{combo->itemText(newIndex), - combo->currentIndex(), combo}); - getIApp()->getWindows()->forceLayoutChannelViews(); + auto updateSetting = [combo, &setting, setValue = std::move(setValue)]( + const int newIndex) { + setting = setValue(DropdownArgs{ + .value = combo->itemText(newIndex), + .index = combo->currentIndex(), + .combobox = combo, }); + getIApp()->getWindows()->forceLayoutChannelViews(); + }; + + if (listenToActivated) + { + QObject::connect(combo, &QComboBox::activated, updateSetting); + } + else + { + QObject::connect( + combo, + QOverload::of(&QComboBox::currentIndexChanged), + updateSetting); + } return combo; }