diff --git a/src/dusk/imgui/ImGuiConsole.cpp b/src/dusk/imgui/ImGuiConsole.cpp index bef9c26cab..80e0e97b16 100644 --- a/src/dusk/imgui/ImGuiConsole.cpp +++ b/src/dusk/imgui/ImGuiConsole.cpp @@ -324,21 +324,18 @@ namespace dusk { ImGuiMenuGame::ToggleFullscreen(); } - if (!dusk::IsGameLaunched) { - m_preLaunchWindow.draw(); - } + // if (!dusk::IsGameLaunched) { + // m_preLaunchWindow.draw(); + // } m_isHidden = !getSettings().backend.duskMenuOpen; if (ImGui::GetIO().KeyShift && ImGui::IsKeyPressed(ImGuiKey_F1)) { m_isHidden = !m_isHidden; } - bool showMenu = !dusk::IsGameLaunched || !m_isHidden; - if (dusk::IsGameLaunched) { - const bool menuOpen = !m_isHidden; - if (getSettings().backend.duskMenuOpen != menuOpen) { - getSettings().backend.duskMenuOpen.setValue(menuOpen); - Save(); - } + bool showMenu = !m_isHidden; + if (getSettings().backend.duskMenuOpen != showMenu) { + getSettings().backend.duskMenuOpen.setValue(showMenu); + Save(); } // The menu bar renders with ImGuiCol_WindowBg behind it. We just want ImGuiCol_MenuBarBg, diff --git a/src/dusk/ui/popup.cpp b/src/dusk/ui/popup.cpp index 373b51c630..44e44f7a27 100644 --- a/src/dusk/ui/popup.cpp +++ b/src/dusk/ui/popup.cpp @@ -12,6 +12,8 @@ #include "dusk/main.h" +#include + namespace dusk::ui { namespace { @@ -67,6 +69,36 @@ void Popup::hide() { mRoot->RemoveAttribute("open"); } +void Popup::update() { + update_safe_area(); + Document::update(); +} + +void Popup::update_safe_area() noexcept { + if (mDocument == nullptr || mTabBar == nullptr) { + return; + } + + Rml::Context* context = mDocument->GetContext(); + Insets safeInsets = safe_area_insets(context); + safeInsets = { + 0.0f, + std::round(safeInsets.right), + 0.0f, + std::round(safeInsets.left), + }; + if (safeInsets == mTabBarPadding) { + return; + } + + mTabBarPadding = safeInsets; + auto* tabBar = mTabBar->root(); + tabBar->SetProperty( + Rml::PropertyId::PaddingRight, Rml::Property(safeInsets.right, Rml::Unit::PX)); + tabBar->SetProperty( + Rml::PropertyId::PaddingLeft, Rml::Property(safeInsets.left, Rml::Unit::PX)); +} + void Popup::toggle() { if (visible()) { hide(); diff --git a/src/dusk/ui/popup.hpp b/src/dusk/ui/popup.hpp index 2316201021..066798e9da 100644 --- a/src/dusk/ui/popup.hpp +++ b/src/dusk/ui/popup.hpp @@ -17,6 +17,7 @@ public: void show() override; void hide() override; + void update() override; bool focus() override; bool visible() const override; @@ -26,9 +27,12 @@ protected: bool handle_nav_command(Rml::Event& event, NavCommand cmd) override; private: + void update_safe_area() noexcept; + Rml::Element* mRoot; std::unique_ptr mTabBar; std::unique_ptr