mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Default window focus scope not 0. Added ImGuiSelectableFlags_SelectOnNav with comments and caveats. (#1861, #4242,)
Focus scope default value: amend7ee623d9a5041c882ebe08be
This commit is contained in:
		| @@ -6181,6 +6181,17 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl | ||||
|     bool hovered, held; | ||||
|     bool pressed = ButtonBehavior(bb, id, &hovered, &held, button_flags); | ||||
|  | ||||
|     // Auto-select when moved into | ||||
|     // - This will be more fully fleshed in the range-select branch | ||||
|     // - This is not exposed as it won't nicely work with some user side handling of shift/control | ||||
|     // - We cannot do 'if (g.NavJustMovedToId != id) { selected = false; pressed = was_selected; }' for two reasons | ||||
|     //   - (1) it would require focus scope to be set, need exposing PushFocusScope() or equivalent (e.g. BeginSelection() calling PushFocusScope()) | ||||
|     //   - (2) usage will fail with clipped items | ||||
|     //   The multi-select API aim to fix those issues, e.g. may be replaced with a BeginSelection() API. | ||||
|     if ((flags & ImGuiSelectableFlags_SelectOnNav) && g.NavJustMovedToId != 0 && g.NavJustMovedToFocusScopeId == window->DC.NavFocusScopeIdCurrent) | ||||
|         if (g.NavJustMovedToId == id) | ||||
|             selected = pressed = true; | ||||
|  | ||||
|     // Update NavId when clicking or when Hovering (this doesn't happen on most widgets), so navigation can be resumed with gamepad/keyboard | ||||
|     if (pressed || (hovered && (flags & ImGuiSelectableFlags_SetNavIdOnHover))) | ||||
|     { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user