|
@@ -925,8 +925,6 @@ bool ImGui::ScrollbarEx(const ImRect& bb_frame, ImGuiID id, ImGuiAxis axis, ImS6
|
|
|
if (window->SkipItems)
|
|
|
return false;
|
|
|
|
|
|
- KeepAliveID(id);
|
|
|
-
|
|
|
const float bb_frame_width = bb_frame.GetWidth();
|
|
|
const float bb_frame_height = bb_frame.GetHeight();
|
|
|
if (bb_frame_width <= 0.0f || bb_frame_height <= 0.0f)
|
|
@@ -958,6 +956,7 @@ bool ImGui::ScrollbarEx(const ImRect& bb_frame, ImGuiID id, ImGuiAxis axis, ImS6
|
|
|
// Handle input right away. None of the code of Begin() is relying on scrolling position before calling Scrollbar().
|
|
|
bool held = false;
|
|
|
bool hovered = false;
|
|
|
+ ItemAdd(bb_frame, id, NULL, ImGuiItemFlags_NoNav);
|
|
|
ButtonBehavior(bb, id, &hovered, &held, ImGuiButtonFlags_NoNavFocus);
|
|
|
|
|
|
const ImS64 scroll_max = ImMax((ImS64)1, size_contents_v - size_avail_v);
|
|
@@ -1477,11 +1476,7 @@ bool ImGui::SplitterBehavior(const ImRect& bb, ImGuiID id, ImGuiAxis axis, float
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
ImGuiWindow* window = g.CurrentWindow;
|
|
|
|
|
|
- const ImGuiItemFlags item_flags_backup = g.CurrentItemFlags;
|
|
|
- g.CurrentItemFlags |= ImGuiItemFlags_NoNav | ImGuiItemFlags_NoNavDefaultFocus;
|
|
|
- bool item_add = ItemAdd(bb, id);
|
|
|
- g.CurrentItemFlags = item_flags_backup;
|
|
|
- if (!item_add)
|
|
|
+ if (!ItemAdd(bb, id, NULL, ImGuiItemFlags_NoNav))
|
|
|
return false;
|
|
|
|
|
|
bool hovered, held;
|
|
@@ -6834,7 +6829,7 @@ void ImGui::EndMenuBar()
|
|
|
// To do so we claim focus back, restore NavId and then process the movement request for yet another frame.
|
|
|
// This involve a one-frame delay which isn't very problematic in this situation. We could remove it by scoring in advance for multiple window (probably not worth bothering)
|
|
|
const ImGuiNavLayer layer = ImGuiNavLayer_Menu;
|
|
|
- IM_ASSERT(window->DC.NavLayersActiveMaskNext & (1 << layer)); // Sanity check
|
|
|
+ IM_ASSERT(window->DC.NavLayersActiveMaskNext & (1 << layer)); // Sanity check (FIXME: Seems unnecessary)
|
|
|
FocusWindow(window);
|
|
|
SetNavID(window->NavLastIds[layer], layer, 0, window->NavRectRel[layer]);
|
|
|
g.NavDisableHighlight = true; // Hide highlight for the current frame so we don't see the intermediary selection.
|
|
@@ -8059,7 +8054,7 @@ bool ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open,
|
|
|
IMGUI_TEST_ENGINE_ITEM_INFO(id, label, g.LastItemData.StatusFlags);
|
|
|
if (p_open && !*p_open)
|
|
|
{
|
|
|
- ItemAdd(ImRect(), id, NULL, ImGuiItemFlags_NoNav | ImGuiItemFlags_NoNavDefaultFocus);
|
|
|
+ ItemAdd(ImRect(), id, NULL, ImGuiItemFlags_NoNav);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -8131,7 +8126,7 @@ bool ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open,
|
|
|
// and then gets submitted again, the tabs will have 'tab_appearing=true' but 'tab_is_new=false'.
|
|
|
if (tab_appearing && (!tab_bar_appearing || tab_is_new))
|
|
|
{
|
|
|
- ItemAdd(ImRect(), id, NULL, ImGuiItemFlags_NoNav | ImGuiItemFlags_NoNavDefaultFocus);
|
|
|
+ ItemAdd(ImRect(), id, NULL, ImGuiItemFlags_NoNav);
|
|
|
if (is_tab_button)
|
|
|
return false;
|
|
|
return tab_contents_visible;
|