diff --git a/lib/libimhex/source/ui/imgui_imhex_extensions.cpp b/lib/libimhex/source/ui/imgui_imhex_extensions.cpp index 2be888a8a..5ccf00309 100644 --- a/lib/libimhex/source/ui/imgui_imhex_extensions.cpp +++ b/lib/libimhex/source/ui/imgui_imhex_extensions.cpp @@ -821,8 +821,11 @@ namespace ImGuiExt { PushStyleColor(ImGuiCol_Text, color); // Render - const ImU32 col = GetColorU32((held && hovered) ? ImGuiCol_ScrollbarGrabActive : hovered ? ImGuiCol_ScrollbarGrabHovered - : ImGuiCol_MenuBarBg); + ImU32 col = 0x00; + if (held) + col = GetColorU32(ImGuiCol_ScrollbarGrabActive); + else if (hovered) + col = GetColorU32(ImGuiCol_ScrollbarGrabHovered); RenderNavCursor(bb, id); RenderFrame(bb.Min, bb.Max, col, false, style.FrameRounding); RenderTextClipped(bb.Min + padding, bb.Max - padding, symbol, nullptr, &size, style.ButtonTextAlign, &bb); diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index 1bf8282a1..e1721b8bc 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -514,6 +514,7 @@ "hex.builtin.setting.interface.scaling.native": "Native", "hex.builtin.setting.interface.scaling.fractional_warning": "The default font does not support fractional scaling. For better results, select a custom font in the 'Font' tab.", "hex.builtin.setting.interface.show_header_command_palette": "Show Command Palette in Window Header", + "hex.builtin.setting.interface.show_titlebar_backdrop": "Show titlebar backdrop color", "hex.builtin.setting.interface.style": "Styling", "hex.builtin.setting.interface.use_native_menu_bar": "Use native menu bar", "hex.builtin.setting.interface.window": "Window", diff --git a/plugins/builtin/source/content/settings_entries.cpp b/plugins/builtin/source/content/settings_entries.cpp index 0285b793a..fa7d53041 100644 --- a/plugins/builtin/source/content/settings_entries.cpp +++ b/plugins/builtin/source/content/settings_entries.cpp @@ -750,6 +750,8 @@ namespace hex::plugin::builtin { ThemeManager::setAccentColor(colorPicker->getColor()); }); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.show_titlebar_backdrop", true); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.scaling_factor") .requiresRestart(); diff --git a/plugins/builtin/source/content/window_decoration.cpp b/plugins/builtin/source/content/window_decoration.cpp index ff9021467..3d85ed7f9 100644 --- a/plugins/builtin/source/content/window_decoration.cpp +++ b/plugins/builtin/source/content/window_decoration.cpp @@ -35,6 +35,16 @@ namespace hex::plugin::builtin { bool s_showSearchBar = true; bool s_displayShortcutHighlights = true; bool s_useNativeMenuBar = false; + bool s_showTitlebarBackDrop = true; + + void drawTitleBarBackDrop() { + if (!s_showTitlebarBackDrop) + return; + + const auto size = ImHexApi::System::getMainWindowSize(); + const auto pos = ImHexApi::System::getMainWindowPosition() - ImVec2(0, size.y / 2 - 20_scaled); + ImGui::GetWindowDrawList()->AddShadowCircle(pos, size.x / 4, ImGui::GetColorU32(ImGuiCol_ButtonActive, 0.8), size.x / 4, ImVec2()); + } void createNestedMenu(std::span menuItems, const char *icon, const Shortcut &shortcut, View *view, const ContentRegistry::Interface::impl::MenuCallback &callback, const ContentRegistry::Interface::impl::EnabledCallback &enabledCallback, const ContentRegistry::Interface::impl::SelectedCallback &selectedCallback) { const auto &name = menuItems.front(); @@ -399,6 +409,7 @@ namespace hex::plugin::builtin { auto window = ImHexApi::System::getMainWindowHandle(); menu::enableNativeMenuBar(s_useNativeMenuBar); if (menu::beginMainMenuBar()) { + drawTitleBarBackDrop(); if (ImHexApi::System::isBorderlessWindowModeEnabled()) { #if defined(OS_WINDOWS) ImGui::SetCursorPosX(5_scaled); @@ -477,6 +488,7 @@ namespace hex::plugin::builtin { ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0F); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0F); if (ImGui::BeginMenuBar()) { + drawTitleBarBackDrop(); for (const auto &callback : ContentRegistry::Interface::impl::getToolbarItems()) { callback(); ImGui::SameLine(); @@ -652,6 +664,10 @@ namespace hex::plugin::builtin { s_useNativeMenuBar = value.get(true); }); + ContentRegistry::Settings::onChange("hex.builtin.setting.interface", "hex.builtin.setting.interface.show_titlebar_backdrop", [](const ContentRegistry::Settings::SettingsValue &value) { + s_showTitlebarBackDrop = value.get(true); + }); + ContentRegistry::Settings::onChange("hex.builtin.setting.interface", "hex.builtin.setting.interface.randomize_window_title", [](const ContentRegistry::Settings::SettingsValue &value) { const bool randomTitle = value.get(false); if (randomTitle) {