feat: Added command line palette option to open/focus views

This commit is contained in:
WerWolv
2025-08-08 22:36:46 +02:00
parent df1e97af0a
commit ad87f005fe
3 changed files with 39 additions and 18 deletions

View File

@@ -85,15 +85,22 @@ namespace hex {
*/
[[nodiscard]] virtual View* getMenuItemInheritView() const { return nullptr; }
[[nodiscard]] virtual bool shouldStoreWindowState() const { return true; }
[[nodiscard]] const char *getIcon() const { return m_icon; }
[[nodiscard]] const UnlocalizedString& getUnlocalizedName() const;
[[nodiscard]] std::string getName() const;
[[nodiscard]] virtual bool shouldStoreWindowState() const { return true; }
[[nodiscard]] bool &getWindowOpenState();
[[nodiscard]] const bool &getWindowOpenState() const;
[[nodiscard]] const UnlocalizedString &getUnlocalizedName() const;
[[nodiscard]] std::string getName() const;
[[nodiscard]] bool isFocused() const { return m_focused; }
[[nodiscard]] static std::string toWindowName(const UnlocalizedString &unlocalizedName);
[[nodiscard]] static const View* getLastFocusedView();
static void discardNavigationRequests();
void bringToFront();
[[nodiscard]] bool didWindowJustOpen();
void setWindowJustOpened(bool state);
@@ -102,21 +109,8 @@ namespace hex {
void setWindowJustClosed(bool state);
void trackViewState();
static void discardNavigationRequests();
[[nodiscard]] static std::string toWindowName(const UnlocalizedString &unlocalizedName);
[[nodiscard]] bool isFocused() const { return m_focused; }
/**
* @brief Used for focus handling. Don't use this directly
* @param focused Whether this view is focused
*/
void setFocused(bool focused);
[[nodiscard]] static const View* getLastFocusedView();
public:
class Window;
class Special;

View File

@@ -82,6 +82,12 @@ namespace hex {
ImGui::GetIO().ConfigFlags &= ~ImGuiConfigFlags_NavEnableKeyboard;
}
void View::bringToFront() {
getWindowOpenState() = true;
TaskManager::doLater([this]{ ImGui::SetWindowFocus(toWindowName(getUnlocalizedName()).c_str()); });
}
std::string View::toWindowName(const UnlocalizedString &unlocalizedName) {
return fmt::format("{}###{}", Lang(unlocalizedName), unlocalizedName.get());
}