mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Fix tabbing in/out of an InputTextMultiline(), broken by 6b8a059.
				
					
				
			This commit is contained in:
		| @@ -3966,6 +3966,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ | ||||
|  | ||||
|     ImGuiWindow* draw_window = window; | ||||
|     ImVec2 inner_size = frame_size; | ||||
|     ImGuiItemStatusFlags item_status_flags = 0; | ||||
|     if (is_multiline) | ||||
|     { | ||||
|         if (!ItemAdd(total_bb, id, &frame_bb, ImGuiItemAddFlags_Focusable)) | ||||
| @@ -3974,6 +3975,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ | ||||
|             EndGroup(); | ||||
|             return false; | ||||
|         } | ||||
|         item_status_flags = g.LastItemData.StatusFlags; | ||||
|  | ||||
|         // We reproduce the contents of BeginChildFrame() in order to provide 'label' so our window internal data are easier to read/debug. | ||||
|         PushStyleColor(ImGuiCol_ChildBg, style.Colors[ImGuiCol_FrameBg]); | ||||
| @@ -4000,6 +4002,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ | ||||
|         if (!(flags & ImGuiInputTextFlags_MergedItem)) | ||||
|             if (!ItemAdd(total_bb, id, &frame_bb, ImGuiItemAddFlags_Focusable)) | ||||
|                 return false; | ||||
|         item_status_flags = g.LastItemData.StatusFlags; | ||||
|     } | ||||
|     const bool hovered = ItemHoverable(frame_bb, id); | ||||
|     if (hovered) | ||||
| @@ -4008,8 +4011,8 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ | ||||
|     // We are only allowed to access the state if we are already the active widget. | ||||
|     ImGuiInputTextState* state = GetInputTextState(id); | ||||
|  | ||||
|     const bool focus_requested_by_code = (g.LastItemData.StatusFlags & ImGuiItemStatusFlags_FocusedByCode) != 0; | ||||
|     const bool focus_requested_by_tabbing = (g.LastItemData.StatusFlags & ImGuiItemStatusFlags_FocusedByTabbing) != 0; | ||||
|     const bool focus_requested_by_code = (item_status_flags & ImGuiItemStatusFlags_FocusedByCode) != 0; | ||||
|     const bool focus_requested_by_tabbing = (item_status_flags & ImGuiItemStatusFlags_FocusedByTabbing) != 0; | ||||
|  | ||||
|     const bool user_clicked = hovered && io.MouseClicked[0]; | ||||
|     const bool user_nav_input_start = (g.ActiveId != id) && ((g.NavInputId == id) || (g.NavActivateId == id && g.NavInputSource == ImGuiInputSource_Keyboard)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user