mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Internals: folded ImGuiItemAddFlags into ImGuiItemFlags. ImGuiItemAddFlags_Focusable > ImGuiItemFlags_Inputable. One step in the big nav/tab/focus rework.
Bonus simplified Selectable() handling of its custom disabled flag. (#211)
This commit is contained in:
		| @@ -2389,7 +2389,7 @@ bool ImGui::DragScalar(const char* label, ImGuiDataType data_type, void* p_data, | ||||
|  | ||||
|     const bool temp_input_allowed = (flags & ImGuiSliderFlags_NoInput) == 0; | ||||
|     ItemSize(total_bb, style.FramePadding.y); | ||||
|     if (!ItemAdd(total_bb, id, &frame_bb, temp_input_allowed ? ImGuiItemAddFlags_Focusable : 0)) | ||||
|     if (!ItemAdd(total_bb, id, &frame_bb, temp_input_allowed ? ImGuiItemFlags_Inputable : 0)) | ||||
|         return false; | ||||
|  | ||||
|     // Default format string when passing NULL | ||||
| @@ -3005,7 +3005,7 @@ bool ImGui::SliderScalar(const char* label, ImGuiDataType data_type, void* p_dat | ||||
|  | ||||
|     const bool temp_input_allowed = (flags & ImGuiSliderFlags_NoInput) == 0; | ||||
|     ItemSize(total_bb, style.FramePadding.y); | ||||
|     if (!ItemAdd(total_bb, id, &frame_bb, temp_input_allowed ? ImGuiItemAddFlags_Focusable : 0)) | ||||
|     if (!ItemAdd(total_bb, id, &frame_bb, temp_input_allowed ? ImGuiItemFlags_Inputable : 0)) | ||||
|         return false; | ||||
|  | ||||
|     // Default format string when passing NULL | ||||
| @@ -3443,7 +3443,7 @@ bool ImGui::InputScalar(const char* label, ImGuiDataType data_type, void* p_data | ||||
|         style.FramePadding.x = style.FramePadding.y; | ||||
|         ImGuiButtonFlags button_flags = ImGuiButtonFlags_Repeat | ImGuiButtonFlags_DontClosePopups; | ||||
|         if (flags & ImGuiInputTextFlags_ReadOnly) | ||||
|             BeginDisabled(true); | ||||
|             BeginDisabled(); | ||||
|         SameLine(0, style.ItemInnerSpacing.x); | ||||
|         if (ButtonEx("-", ImVec2(button_size, button_size), button_flags)) | ||||
|         { | ||||
| @@ -3975,7 +3975,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ | ||||
|     { | ||||
|         ImVec2 backup_pos = window->DC.CursorPos; | ||||
|         ItemSize(total_bb, style.FramePadding.y); | ||||
|         if (!ItemAdd(total_bb, id, &frame_bb, ImGuiItemAddFlags_Focusable)) | ||||
|         if (!ItemAdd(total_bb, id, &frame_bb, ImGuiItemFlags_Inputable)) | ||||
|         { | ||||
|             EndGroup(); | ||||
|             return false; | ||||
| @@ -4006,7 +4006,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ | ||||
|         // Support for internal ImGuiInputTextFlags_MergedItem flag, which could be redesigned as an ItemFlags if needed (with test performed in ItemAdd) | ||||
|         ItemSize(total_bb, style.FramePadding.y); | ||||
|         if (!(flags & ImGuiInputTextFlags_MergedItem)) | ||||
|             if (!ItemAdd(total_bb, id, &frame_bb, ImGuiItemAddFlags_Focusable)) | ||||
|             if (!ItemAdd(total_bb, id, &frame_bb, ImGuiItemFlags_Inputable)) | ||||
|                 return false; | ||||
|         item_status_flags = g.LastItemData.StatusFlags; | ||||
|     } | ||||
| @@ -6144,20 +6144,8 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl | ||||
|         window->ClipRect.Max.x = window->ParentWorkRect.Max.x; | ||||
|     } | ||||
|  | ||||
|     bool item_add; | ||||
|     const bool disabled_item = (flags & ImGuiSelectableFlags_Disabled) != 0; | ||||
|     if (disabled_item) | ||||
|     { | ||||
|         ImGuiItemFlags backup_item_flags = g.CurrentItemFlags; | ||||
|         g.CurrentItemFlags |= ImGuiItemFlags_Disabled; | ||||
|         item_add = ItemAdd(bb, id); | ||||
|         g.CurrentItemFlags = backup_item_flags; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         item_add = ItemAdd(bb, id); | ||||
|     } | ||||
|  | ||||
|     const bool item_add = ItemAdd(bb, id, NULL, disabled_item ? ImGuiItemFlags_Disabled : ImGuiItemFlags_None); | ||||
|     if (span_all_columns) | ||||
|     { | ||||
|         window->ClipRect.Min.x = backup_clip_rect_min_x; | ||||
| @@ -6169,7 +6157,7 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl | ||||
|  | ||||
|     const bool disabled_global = (g.CurrentItemFlags & ImGuiItemFlags_Disabled) != 0; | ||||
|     if (disabled_item && !disabled_global) // Only testing this as an optimization | ||||
|         BeginDisabled(true); | ||||
|         BeginDisabled(); | ||||
|  | ||||
|     // FIXME: We can standardize the behavior of those two, we could also keep the fast path of override ClipRect + full push on render only, | ||||
|     // which would be advantageous since most selectable are not selected. | ||||
| @@ -7007,7 +6995,7 @@ bool ImGui::MenuItemEx(const char* label, const char* icon, const char* shortcut | ||||
|     bool pressed; | ||||
|     PushID(label); | ||||
|     if (!enabled) | ||||
|         BeginDisabled(true); | ||||
|         BeginDisabled(); | ||||
|     const ImGuiSelectableFlags flags = ImGuiSelectableFlags_SelectOnRelease | ImGuiSelectableFlags_SetNavIdOnHover; | ||||
|     const ImGuiMenuColumns* offsets = &window->DC.MenuColumns; | ||||
|     if (window->DC.LayoutType == ImGuiLayoutType_Horizontal) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user