mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	Disabled: clicking a disabled item focuses parent window. (#8064)
This commit is contained in:
		| @@ -74,6 +74,7 @@ Other changes: | ||||
|   window. (#3200) | ||||
| - Nav: rectangle highlight not rendered for items with ImGuiItemFlags_NoNav. Can be relevant | ||||
|   when e.g activating the item with mouse, then Ctrl+Tabbing back and forth.  | ||||
| - Disabled: clicking a disabled item focuses parent window. (#8064)  | ||||
| - InvisibleButton, Nav: fixed an issue when InvisibleButton() would be navigable into but | ||||
|   not display navigation highlight. Properly navigation on it by default. (#8057) | ||||
| - InvisibleButton: added ImGuiButtonFlags_EnableNav to enable navigation. (#8057) | ||||
|   | ||||
							
								
								
									
										2
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -29,7 +29,7 @@ | ||||
| // Library Version | ||||
| // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') | ||||
| #define IMGUI_VERSION       "1.91.4 WIP" | ||||
| #define IMGUI_VERSION_NUM   19134 | ||||
| #define IMGUI_VERSION_NUM   19135 | ||||
| #define IMGUI_HAS_TABLE | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -542,7 +542,8 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool | ||||
|  | ||||
|     // Mouse handling | ||||
|     const ImGuiID test_owner_id = (flags & ImGuiButtonFlags_NoTestKeyOwner) ? ImGuiKeyOwner_Any : id; | ||||
|     if (hovered) | ||||
|     const bool hovered_disabled = (g.HoveredId == id && g.HoveredIdIsDisabled); | ||||
|     if (hovered || hovered_disabled) | ||||
|     { | ||||
|         IM_ASSERT(id != 0); // Lazily check inside rare path. | ||||
|  | ||||
| @@ -559,7 +560,8 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool | ||||
|             } | ||||
|  | ||||
|         // Process initial action | ||||
|         if (!(flags & ImGuiButtonFlags_NoKeyModsAllowed) || (!g.IO.KeyCtrl && !g.IO.KeyShift && !g.IO.KeyAlt)) | ||||
|         const bool mods_ok = !(flags & ImGuiButtonFlags_NoKeyModsAllowed) || (!g.IO.KeyCtrl && !g.IO.KeyShift && !g.IO.KeyAlt); | ||||
|         if (mods_ok && !hovered_disabled) | ||||
|         { | ||||
|             if (mouse_button_clicked != -1 && g.ActiveId != id) | ||||
|             { | ||||
| @@ -606,7 +608,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool | ||||
|                     if (!has_repeated_at_least_once) | ||||
|                         pressed = true; | ||||
|                     if (!(flags & ImGuiButtonFlags_NoNavFocus)) | ||||
|                         SetFocusID(id, window); | ||||
|                         SetFocusID(id, window); // FIXME: Lack of FocusWindow() call here is inconsistent with other paths. Research why. | ||||
|                     ClearActiveID(); | ||||
|                 } | ||||
|             } | ||||
| @@ -617,6 +619,17 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool | ||||
|                 if (g.IO.MouseDownDuration[g.ActiveIdMouseButton] > 0.0f && IsMouseClicked(g.ActiveIdMouseButton, ImGuiInputFlags_Repeat, test_owner_id)) | ||||
|                     pressed = true; | ||||
|         } | ||||
|         else if (mods_ok && hovered_disabled) | ||||
|         { | ||||
|             if (mouse_button_clicked != -1 && g.ActiveId != id) | ||||
|             { | ||||
|                 // Disabled path still focus | ||||
|                 // FIXME-NAV: Could somehow call SetNavID() with a null ID but mouse pos as NavRectRel so nav may be resumed? | ||||
|                 // Will do it once we do it for regular click on window-void. | ||||
|                 if (flags & (ImGuiButtonFlags_PressedOnClickRelease | ImGuiButtonFlags_PressedOnClickReleaseAnywhere | ImGuiButtonFlags_PressedOnClick | ImGuiButtonFlags_PressedOnDoubleClick)) | ||||
|                     FocusWindow(window, ImGuiFocusRequestFlags_RestoreFocusedChild); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (pressed) | ||||
|             g.NavDisableHighlight = true; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ocornut
					ocornut