From aae5586b5c70270e392cc96b4ae33b900d93ac57 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Tue, 24 Oct 2023 19:29:22 +0200 Subject: [PATCH] fix: Provider tab bar arrow buttons not working Fixes #1374 --- plugins/builtin/source/content/ui_items.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/plugins/builtin/source/content/ui_items.cpp b/plugins/builtin/source/content/ui_items.cpp index 96529ae1f..96ca28b2a 100644 --- a/plugins/builtin/source/content/ui_items.cpp +++ b/plugins/builtin/source/content/ui_items.cpp @@ -157,6 +157,9 @@ namespace hex::plugin::builtin { ImHexApi::Provider::setCurrentProvider(currIndex + 1); }); + static bool providerJustChanged = true; + EventManager::subscribe([](auto, auto) { providerJustChanged = true; }); + ContentRegistry::Interface::addToolbarItem([] { auto provider = ImHexApi::Provider::get(); bool providerValid = provider != nullptr; @@ -259,14 +262,23 @@ namespace hex::plugin::builtin { ImGuiTabItemFlags flags = ImGuiTabItemFlags_NoTooltip; if (tabProvider->isDirty()) flags |= ImGuiTabItemFlags_UnsavedDocument; - if (i64(i) == selectedProviderIndex) + if (i64(i) == selectedProviderIndex && providerJustChanged) { flags |= ImGuiTabItemFlags_SetSelected; + providerJustChanged = false; + } + static size_t lastSelectedProvider = 0; + + bool isSelected = false; if (ImGui::BeginTabItem(tabProvider->getName().c_str(), &open, flags)) { + isSelected = true; ImGui::EndTabItem(); } - if (ImGui::IsItemClicked()) + + if (isSelected && lastSelectedProvider != i) { ImHexApi::Provider::setCurrentProvider(i); + lastSelectedProvider = i; + } if (ImGui::InfoTooltip()) { ImGui::BeginTooltip();