mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	TabBar: Fixed ImGuiTabItemFlags_SetSelected being ignored if the tab is not visible (with scrolling policy enabled) or if is currently appearing.
This commit is contained in:
		@@ -6592,6 +6592,8 @@ bool    ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open,
 | 
			
		||||
    if (tab_appearing && (tab_bar->Flags & ImGuiTabBarFlags_AutoSelectNewTabs) && tab_bar->NextSelectedTabId == 0)
 | 
			
		||||
        if (!tab_bar_appearing || tab_bar->SelectedTabId == 0)
 | 
			
		||||
            tab_bar->NextSelectedTabId = id;  // New tabs gets activated
 | 
			
		||||
    if ((flags & ImGuiTabItemFlags_SetSelected) && (tab_bar->SelectedTabId != id)) // SetSelected can only be passed on explicit tab bar
 | 
			
		||||
        tab_bar->NextSelectedTabId = id;
 | 
			
		||||
 | 
			
		||||
    // Lock visibility
 | 
			
		||||
    bool tab_contents_visible = (tab_bar->VisibleTabId == id);
 | 
			
		||||
@@ -6643,9 +6645,9 @@ bool    ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open,
 | 
			
		||||
        button_flags |= ImGuiButtonFlags_PressedOnDragDropHold;
 | 
			
		||||
    bool hovered, held;
 | 
			
		||||
    bool pressed = ButtonBehavior(bb, id, &hovered, &held, button_flags);
 | 
			
		||||
    hovered |= (g.HoveredId == id);
 | 
			
		||||
    if (pressed || ((flags & ImGuiTabItemFlags_SetSelected) && !tab_contents_visible)) // SetSelected can only be passed on explicit tab bar
 | 
			
		||||
    if (pressed)
 | 
			
		||||
        tab_bar->NextSelectedTabId = id;
 | 
			
		||||
    hovered |= (g.HoveredId == id);
 | 
			
		||||
 | 
			
		||||
    // Allow the close button to overlap unless we are dragging (in which case we don't want any overlapping tabs to be hovered)
 | 
			
		||||
    if (!held)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user