fix: Only update font size after letting go of slider

This commit is contained in:
WerWolv
2025-08-17 23:36:02 +02:00
parent d8f8e61a11
commit 7588a84e86
2 changed files with 15 additions and 7 deletions

View File

@@ -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;
};

View File

@@ -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;
}
}