From 7588a84e860318dd17a450be9196503d30def27f Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sun, 17 Aug 2025 23:36:02 +0200 Subject: [PATCH] fix: Only update font size after letting go of slider --- plugins/fonts/include/font_settings.hpp | 3 +++ plugins/fonts/source/font_settings.cpp | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/plugins/fonts/include/font_settings.hpp b/plugins/fonts/include/font_settings.hpp index 8919412c1..29bb99d41 100644 --- a/plugins/fonts/include/font_settings.hpp +++ b/plugins/fonts/include/font_settings.hpp @@ -65,6 +65,9 @@ namespace hex::fonts { public: SliderPoints(float defaultValue, float min, float max) : SliderFloat(defaultValue, min, max) { } bool draw(const std::string &name) override; + + private: + bool m_changed = false; }; diff --git a/plugins/fonts/source/font_settings.cpp b/plugins/fonts/source/font_settings.cpp index 0ad60e013..27e530080 100644 --- a/plugins/fonts/source/font_settings.cpp +++ b/plugins/fonts/source/font_settings.cpp @@ -199,16 +199,21 @@ namespace hex::fonts { } bool SliderPoints::draw(const std::string &name) { - auto scaleFactor = ImHexApi::System::getBackingScaleFactor(); - float value = ImHexApi::Fonts::pixelsToPoints(m_value) * scaleFactor; - float min = ImHexApi::Fonts::pixelsToPoints(m_min) * scaleFactor; - float max = ImHexApi::Fonts::pixelsToPoints(m_max) * scaleFactor; + float value = ImHexApi::Fonts::pixelsToPoints(m_value); + float min = ImHexApi::Fonts::pixelsToPoints(m_min); + float max = ImHexApi::Fonts::pixelsToPoints(m_max); - auto changed = ImGui::SliderFloat(name.c_str(), &value, min, max, "%.0f pt"); + if (ImGui::SliderFloat(name.c_str(), &value, min, max, "%.0f pt")) + m_changed = true; - m_value = ImHexApi::Fonts::pointsToPixels(value / scaleFactor); + m_value = ImHexApi::Fonts::pointsToPixels(value); - return changed; + if (m_changed && !ImGui::IsItemActive()) { + m_changed = false; + return true; + } else { + return false; + } }