feat(console): persist the output zoom level across launches
The console zoom (s_console_zoom) was a plain static reset to 1.0 each launch, unlike the sibling toggles. Wire it through Settings (console_zoom float), restored into the static at startup in the App ctor and written back via the existing post-render diff-and-save. Loading clamps to [0.25, 4.0] (also catching NaN) so a corrupt value can't feed the scanline divisor. Verified: seeding console_zoom=1.5 survives a relaunch and the console text renders larger. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -313,6 +313,7 @@ bool App::init()
|
|||||||
ui::ConsoleTab::s_scanline_enabled = settings_->getScanlineEnabled();
|
ui::ConsoleTab::s_scanline_enabled = settings_->getScanlineEnabled();
|
||||||
ui::ConsoleTab::s_line_accents_enabled = settings_->getConsoleLineAccents();
|
ui::ConsoleTab::s_line_accents_enabled = settings_->getConsoleLineAccents();
|
||||||
ui::ConsoleTab::s_line_text_color_enabled = settings_->getConsoleTextColor();
|
ui::ConsoleTab::s_line_text_color_enabled = settings_->getConsoleTextColor();
|
||||||
|
ui::ConsoleTab::s_console_zoom = settings_->getConsoleZoom();
|
||||||
|
|
||||||
// Apply saved user font scale so fonts are correct on first reload
|
// Apply saved user font scale so fonts are correct on first reload
|
||||||
{
|
{
|
||||||
@@ -1798,9 +1799,11 @@ void App::render()
|
|||||||
// disk I/O — and only here in the Console case where these statics can change.
|
// disk I/O — and only here in the Console case where these statics can change.
|
||||||
if (settings_) {
|
if (settings_) {
|
||||||
if (ui::ConsoleTab::s_line_accents_enabled != settings_->getConsoleLineAccents() ||
|
if (ui::ConsoleTab::s_line_accents_enabled != settings_->getConsoleLineAccents() ||
|
||||||
ui::ConsoleTab::s_line_text_color_enabled != settings_->getConsoleTextColor()) {
|
ui::ConsoleTab::s_line_text_color_enabled != settings_->getConsoleTextColor() ||
|
||||||
|
ui::ConsoleTab::s_console_zoom != settings_->getConsoleZoom()) {
|
||||||
settings_->setConsoleLineAccents(ui::ConsoleTab::s_line_accents_enabled);
|
settings_->setConsoleLineAccents(ui::ConsoleTab::s_line_accents_enabled);
|
||||||
settings_->setConsoleTextColor(ui::ConsoleTab::s_line_text_color_enabled);
|
settings_->setConsoleTextColor(ui::ConsoleTab::s_line_text_color_enabled);
|
||||||
|
settings_->setConsoleZoom(ui::ConsoleTab::s_console_zoom);
|
||||||
settings_->save();
|
settings_->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -177,6 +177,8 @@ bool Settings::load(const std::string& path)
|
|||||||
loadScalar(j, "scanline_enabled", scanline_enabled_);
|
loadScalar(j, "scanline_enabled", scanline_enabled_);
|
||||||
loadScalar(j, "console_line_accents", console_line_accents_);
|
loadScalar(j, "console_line_accents", console_line_accents_);
|
||||||
loadScalar(j, "console_text_color", console_text_color_);
|
loadScalar(j, "console_text_color", console_text_color_);
|
||||||
|
loadScalar(j, "console_zoom", console_zoom_);
|
||||||
|
if (!(console_zoom_ >= 0.25f && console_zoom_ <= 4.0f)) console_zoom_ = 1.0f; // guard bad/NaN
|
||||||
if (j.contains("hidden_addresses") && j["hidden_addresses"].is_array()) {
|
if (j.contains("hidden_addresses") && j["hidden_addresses"].is_array()) {
|
||||||
hidden_addresses_.clear();
|
hidden_addresses_.clear();
|
||||||
for (const auto& a : j["hidden_addresses"])
|
for (const auto& a : j["hidden_addresses"])
|
||||||
@@ -429,6 +431,7 @@ bool Settings::save(const std::string& path)
|
|||||||
j["scanline_enabled"] = scanline_enabled_;
|
j["scanline_enabled"] = scanline_enabled_;
|
||||||
j["console_line_accents"] = console_line_accents_;
|
j["console_line_accents"] = console_line_accents_;
|
||||||
j["console_text_color"] = console_text_color_;
|
j["console_text_color"] = console_text_color_;
|
||||||
|
j["console_zoom"] = console_zoom_;
|
||||||
j["hidden_addresses"] = json::array();
|
j["hidden_addresses"] = json::array();
|
||||||
for (const auto& addr : hidden_addresses_)
|
for (const auto& addr : hidden_addresses_)
|
||||||
j["hidden_addresses"].push_back(addr);
|
j["hidden_addresses"].push_back(addr);
|
||||||
|
|||||||
@@ -195,6 +195,8 @@ public:
|
|||||||
void setConsoleLineAccents(bool v) { console_line_accents_ = v; }
|
void setConsoleLineAccents(bool v) { console_line_accents_ = v; }
|
||||||
bool getConsoleTextColor() const { return console_text_color_; }
|
bool getConsoleTextColor() const { return console_text_color_; }
|
||||||
void setConsoleTextColor(bool v) { console_text_color_ = v; }
|
void setConsoleTextColor(bool v) { console_text_color_ = v; }
|
||||||
|
float getConsoleZoom() const { return console_zoom_; }
|
||||||
|
void setConsoleZoom(float v) { console_zoom_ = v; }
|
||||||
|
|
||||||
// Hidden addresses (addresses hidden from the UI by the user)
|
// Hidden addresses (addresses hidden from the UI by the user)
|
||||||
const std::set<std::string>& getHiddenAddresses() const { return hidden_addresses_; }
|
const std::set<std::string>& getHiddenAddresses() const { return hidden_addresses_; }
|
||||||
@@ -491,6 +493,7 @@ private:
|
|||||||
bool scanline_enabled_ = true;
|
bool scanline_enabled_ = true;
|
||||||
bool console_line_accents_ = true; // left color accent bars in console output
|
bool console_line_accents_ = true; // left color accent bars in console output
|
||||||
bool console_text_color_ = true; // per-channel text coloring in console output
|
bool console_text_color_ = true; // per-channel text coloring in console output
|
||||||
|
float console_zoom_ = 1.0f; // console output font zoom factor
|
||||||
std::set<std::string> hidden_addresses_;
|
std::set<std::string> hidden_addresses_;
|
||||||
std::set<std::string> favorite_addresses_;
|
std::set<std::string> favorite_addresses_;
|
||||||
std::map<std::string, AddressMeta> address_meta_;
|
std::map<std::string, AddressMeta> address_meta_;
|
||||||
|
|||||||
Reference in New Issue
Block a user