From 018c61890c8272926b41e082f8083e4bff81b3c8 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Tue, 5 Aug 2025 23:32:44 +0200 Subject: [PATCH] impr: Use icon buttons for bold and italic font settings --- plugins/fonts/include/font_settings.hpp | 6 +-- plugins/fonts/source/font_settings.cpp | 61 +++++++++---------------- 2 files changed, 24 insertions(+), 43 deletions(-) diff --git a/plugins/fonts/include/font_settings.hpp b/plugins/fonts/include/font_settings.hpp index c037b4450..6f3b3a53a 100644 --- a/plugins/fonts/include/font_settings.hpp +++ b/plugins/fonts/include/font_settings.hpp @@ -68,14 +68,12 @@ namespace hex::fonts { [[nodiscard]] bool isItalic() const; [[nodiscard]] AntialiasingType getAntialiasingType() const; - private: - bool drawPopup(); - private: FontFilePicker m_fontFilePicker; SliderPoints m_fontSize; AntialiasPicker m_antiAliased; - ContentRegistry::Settings::Widgets::Checkbox m_bold, m_italic; + + bool m_bold, m_italic; bool m_applyEnabled = false; }; diff --git a/plugins/fonts/source/font_settings.cpp b/plugins/fonts/source/font_settings.cpp index 90cac88ec..e8c072c83 100644 --- a/plugins/fonts/source/font_settings.cpp +++ b/plugins/fonts/source/font_settings.cpp @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -223,10 +224,21 @@ namespace hex::fonts { ImGui::BeginDisabled(m_fontFilePicker.isPixelPerfectFontSelected()); { - if (m_fontSize.draw("hex.fonts.setting.font.font_size"_lang)) changed = true; - if (m_bold.draw("hex.fonts.setting.font.font_bold"_lang)) changed = true; - if (m_italic.draw("hex.fonts.setting.font.font_italic"_lang)) changed = true; - if (m_antiAliased.draw("hex.fonts.setting.font.font_antialias"_lang)) changed = true; + if (m_fontSize.draw("hex.fonts.setting.font.font_size"_lang)) + changed = true; + + if (ImGuiExt::DimmedIconToggle(ICON_VS_BOLD, &m_bold)) + changed = true; + ImGui::SetItemTooltip("hex.fonts.setting.font.font_bold"_lang); + + ImGui::SameLine(); + + if (ImGuiExt::DimmedIconToggle(ICON_VS_ITALIC, &m_italic)) + changed = true; + ImGui::SetItemTooltip("hex.fonts.setting.font.font_italic"_lang); + + if (m_antiAliased.draw("hex.fonts.setting.font.font_antialias"_lang)) + changed = true; } ImGui::EndDisabled(); @@ -242,8 +254,8 @@ namespace hex::fonts { json["font_file"] = m_fontFilePicker.store(); json["font_size"] = m_fontSize.store(); - json["bold"] = m_bold.store(); - json["italic"] = m_italic.store(); + json["bold"] = m_bold; + json["italic"] = m_italic; json["antialiased"] = m_antiAliased.store(); return json; @@ -251,40 +263,11 @@ namespace hex::fonts { void FontSelector::load(const nlohmann::json& data) { m_fontFilePicker.load(data["font_file"]); m_fontSize.load(data["font_size"]); - m_bold.load(data["bold"]); - m_italic.load(data["italic"]); + m_bold = data["bold"]; + m_italic = data["italic"]; m_antiAliased.load(data["antialiased"]); } - bool FontSelector::drawPopup() { - bool changed = false; - if (ImGui::BeginPopup("Fonts")) { - if (m_fontFilePicker.draw("hex.fonts.setting.font.custom_font"_lang)) m_applyEnabled = true; - - ImGui::BeginDisabled(m_fontFilePicker.isPixelPerfectFontSelected()); - { - if (m_fontSize.draw("hex.fonts.setting.font.font_size"_lang)) m_applyEnabled = true; - if (m_bold.draw("hex.fonts.setting.font.font_bold"_lang)) m_applyEnabled = true; - if (m_italic.draw("hex.fonts.setting.font.font_italic"_lang)) m_applyEnabled = true; - if (m_antiAliased.draw("hex.fonts.setting.font.font_antialias"_lang)) m_applyEnabled = true; - } - ImGui::EndDisabled(); - - ImGui::NewLine(); - - ImGui::BeginDisabled(!m_applyEnabled); - if (ImGui::Button("hex.ui.common.apply"_lang)) { - changed = true; - m_applyEnabled = false; - } - ImGui::EndDisabled(); - - ImGui::EndPopup(); - } - - return changed; - } - [[nodiscard]] const std::fs::path& FontSelector::getFontPath() const { return m_fontFilePicker.getPath(); } @@ -298,11 +281,11 @@ namespace hex::fonts { } [[nodiscard]] bool FontSelector::isBold() const { - return m_bold.isChecked(); + return m_bold; } [[nodiscard]] bool FontSelector::isItalic() const { - return m_italic.isChecked(); + return m_italic; } [[nodiscard]] AntialiasingType FontSelector::getAntialiasingType() const {