mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	Nav: Disabled items are not candidate for default focus. (#211, #787) + simplify handling of ImGuiButtonFlags_PressedOnDragDropHold path.
This commit is contained in:
		| @@ -54,6 +54,7 @@ Other Changes: | |||||||
| - TabBar: Fixed using more than 32 KB-worth of tab names. (#4176) | - TabBar: Fixed using more than 32 KB-worth of tab names. (#4176) | ||||||
| - Drag and Drop: drop target highlight doesn't try to bypass host clipping rectangle. (#4281, #3272) | - Drag and Drop: drop target highlight doesn't try to bypass host clipping rectangle. (#4281, #3272) | ||||||
| - Menus: MenuItem() and BeginMenu() are not affected/overlapping when style.SelectableTextAlign is altered. | - Menus: MenuItem() and BeginMenu() are not affected/overlapping when style.SelectableTextAlign is altered. | ||||||
|  | - Nav: Disabled items are not candidate for default focus. (#211, #787) | ||||||
| - Fixed printf-style format checks on non-MinGW flavors. (#4183, #3592) | - Fixed printf-style format checks on non-MinGW flavors. (#4183, #3592) | ||||||
| - Fonts: Functions with a 'float size_pixels' parameter can accept zero if it is set in ImFontSize::SizePixels. | - Fonts: Functions with a 'float size_pixels' parameter can accept zero if it is set in ImFontSize::SizePixels. | ||||||
| - Fonts: Prefer using U+FFFD character for fallback instead of '?', if available. (#4269) | - Fonts: Prefer using U+FFFD character for fallback instead of '?', if available. (#4269) | ||||||
|   | |||||||
| @@ -8846,12 +8846,13 @@ static void ImGui::NavProcessItem(ImGuiWindow* window, const ImRect& nav_bb, con | |||||||
|     if (g.NavInitRequest && g.NavLayer == window->DC.NavLayerCurrent) |     if (g.NavInitRequest && g.NavLayer == window->DC.NavLayerCurrent) | ||||||
|     { |     { | ||||||
|         // Even if 'ImGuiItemFlags_NoNavDefaultFocus' is on (typically collapse/close button) we record the first ResultId so they can be used as a fallback |         // Even if 'ImGuiItemFlags_NoNavDefaultFocus' is on (typically collapse/close button) we record the first ResultId so they can be used as a fallback | ||||||
|         if (!(item_flags & ImGuiItemFlags_NoNavDefaultFocus) || g.NavInitResultId == 0) |         const bool candidate_for_nav_default_focus = (item_flags & (ImGuiItemFlags_NoNavDefaultFocus | ImGuiItemFlags_Disabled)) == 0; | ||||||
|  |         if (candidate_for_nav_default_focus || g.NavInitResultId == 0) | ||||||
|         { |         { | ||||||
|             g.NavInitResultId = id; |             g.NavInitResultId = id; | ||||||
|             g.NavInitResultRectRel = nav_bb_rel; |             g.NavInitResultRectRel = nav_bb_rel; | ||||||
|         } |         } | ||||||
|         if (!(item_flags & ImGuiItemFlags_NoNavDefaultFocus)) |         if (candidate_for_nav_default_focus) | ||||||
|         { |         { | ||||||
|             g.NavInitRequest = false; // Found a match, clear request |             g.NavInitRequest = false; // Found a match, clear request | ||||||
|             NavUpdateAnyRequestFlag(); |             NavUpdateAnyRequestFlag(); | ||||||
| @@ -11246,7 +11247,7 @@ void ImGui::ShowMetricsWindow(bool* p_open) | |||||||
|         Text("ActiveId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d, Source: %s", g.ActiveId, g.ActiveIdPreviousFrame, g.ActiveIdTimer, g.ActiveIdAllowOverlap, input_source_names[g.ActiveIdSource]); |         Text("ActiveId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d, Source: %s", g.ActiveId, g.ActiveIdPreviousFrame, g.ActiveIdTimer, g.ActiveIdAllowOverlap, input_source_names[g.ActiveIdSource]); | ||||||
|         Text("ActiveIdWindow: '%s'", g.ActiveIdWindow ? g.ActiveIdWindow->Name : "NULL"); |         Text("ActiveIdWindow: '%s'", g.ActiveIdWindow ? g.ActiveIdWindow->Name : "NULL"); | ||||||
|         Text("ActiveIdUsing: Wheel: %d, NavDirMask: %X, NavInputMask: %X, KeyInputMask: %llX", g.ActiveIdUsingMouseWheel, g.ActiveIdUsingNavDirMask, g.ActiveIdUsingNavInputMask, g.ActiveIdUsingKeyInputMask); |         Text("ActiveIdUsing: Wheel: %d, NavDirMask: %X, NavInputMask: %X, KeyInputMask: %llX", g.ActiveIdUsingMouseWheel, g.ActiveIdUsingNavDirMask, g.ActiveIdUsingNavInputMask, g.ActiveIdUsingKeyInputMask); | ||||||
|         Text("HoveredId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d", g.HoveredId, g.HoveredIdPreviousFrame, g.HoveredIdTimer, g.HoveredIdAllowOverlap); // Data is "in-flight" so depending on when the Metrics window is called we may see current frame information or not |         Text("HoveredId: 0x%08X (%.2f sec), AllowOverlap: %d", g.HoveredIdPreviousFrame, g.HoveredIdTimer, g.HoveredIdAllowOverlap); // Not displaying g.HoveredId as it is update mid-frame | ||||||
|         Text("DragDrop: %d, SourceId = 0x%08X, Payload \"%s\" (%d bytes)", g.DragDropActive, g.DragDropPayload.SourceId, g.DragDropPayload.DataType, g.DragDropPayload.DataSize); |         Text("DragDrop: %d, SourceId = 0x%08X, Payload \"%s\" (%d bytes)", g.DragDropActive, g.DragDropPayload.SourceId, g.DragDropPayload.DataType, g.DragDropPayload.DataSize); | ||||||
|         Unindent(); |         Unindent(); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -527,7 +527,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool | |||||||
|         { |         { | ||||||
|             hovered = true; |             hovered = true; | ||||||
|             SetHoveredID(id); |             SetHoveredID(id); | ||||||
|             if (CalcTypematicRepeatAmount(g.HoveredIdTimer + 0.0001f - g.IO.DeltaTime, g.HoveredIdTimer + 0.0001f, DRAGDROP_HOLD_TO_OPEN_TIMER, 0.00f)) |             if (g.HoveredIdTimer - g.IO.DeltaTime <= DRAGDROP_HOLD_TO_OPEN_TIMER && g.HoveredIdTimer >= DRAGDROP_HOLD_TO_OPEN_TIMER) | ||||||
|             { |             { | ||||||
|                 pressed = true; |                 pressed = true; | ||||||
|                 g.DragDropHoldJustPressedId = id; |                 g.DragDropHoldJustPressedId = id; | ||||||
| @@ -6140,7 +6140,7 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl | |||||||
|     if (flags & ImGuiSelectableFlags_Disabled) |     if (flags & ImGuiSelectableFlags_Disabled) | ||||||
|     { |     { | ||||||
|         ImGuiItemFlags backup_item_flags = g.CurrentItemFlags; |         ImGuiItemFlags backup_item_flags = g.CurrentItemFlags; | ||||||
|         g.CurrentItemFlags |= ImGuiItemFlags_Disabled | ImGuiItemFlags_NoNavDefaultFocus; |         g.CurrentItemFlags |= ImGuiItemFlags_Disabled; | ||||||
|         item_add = ItemAdd(bb, id); |         item_add = ItemAdd(bb, id); | ||||||
|         g.CurrentItemFlags = backup_item_flags; |         g.CurrentItemFlags = backup_item_flags; | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user