impr: Allow views to opt out of having their open state saved
This commit is contained in:
parent
bad37d0940
commit
bfdb9b4019
@ -80,6 +80,8 @@ namespace hex {
|
||||
*/
|
||||
[[nodiscard]] virtual ImGuiWindowFlags getWindowFlags() const;
|
||||
|
||||
[[nodiscard]] virtual bool shouldStoreWindowState() const { return true; }
|
||||
|
||||
[[nodiscard]] const char *getIcon() const { return m_icon; }
|
||||
|
||||
[[nodiscard]] bool &getWindowOpenState();
|
||||
@ -183,7 +185,8 @@ namespace hex {
|
||||
}
|
||||
}
|
||||
|
||||
virtual bool hasCloseButton() const { return true; }
|
||||
[[nodiscard]] virtual bool hasCloseButton() const { return true; }
|
||||
[[nodiscard]] bool shouldStoreWindowState() const override { return false; }
|
||||
};
|
||||
|
||||
}
|
@ -50,6 +50,9 @@ namespace hex::plugin::builtin {
|
||||
|
||||
LayoutManager::registerLoadCallback([](std::string_view line) {
|
||||
for (auto &[name, view] : ContentRegistry::Views::impl::getEntries()) {
|
||||
if (!view->shouldStoreWindowState())
|
||||
continue;
|
||||
|
||||
std::string format = hex::format("{}=%d", view->getUnlocalizedName().get());
|
||||
sscanf(line.data(), format.c_str(), &view->getWindowOpenState());
|
||||
}
|
||||
@ -57,6 +60,9 @@ namespace hex::plugin::builtin {
|
||||
|
||||
LayoutManager::registerStoreCallback([](ImGuiTextBuffer *buffer) {
|
||||
for (auto &[name, view] : ContentRegistry::Views::impl::getEntries()) {
|
||||
if (!view->shouldStoreWindowState())
|
||||
continue;
|
||||
|
||||
buffer->appendf("%s=%d\n", name.c_str(), view->getWindowOpenState());
|
||||
}
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user