mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	Made it guaranteed by API that after calling Begin() the last Item represent the title bar. (#823)
This commit is contained in:
		| @@ -4589,6 +4589,11 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) | |||||||
|         window->InnerRect.Max.x = window->Pos.x + window->Size.x - window->ScrollbarSizes.x; |         window->InnerRect.Max.x = window->Pos.x + window->Size.x - window->ScrollbarSizes.x; | ||||||
|         window->InnerRect.Max.y = window->Pos.y + window->Size.y - window->ScrollbarSizes.y; |         window->InnerRect.Max.y = window->Pos.y + window->Size.y - window->ScrollbarSizes.y; | ||||||
|         //window->DrawList->AddRect(window->InnerRect.Min, window->InnerRect.Max, IM_COL32_WHITE); |         //window->DrawList->AddRect(window->InnerRect.Min, window->InnerRect.Max, IM_COL32_WHITE); | ||||||
|  |  | ||||||
|  |         // After Begin() we fill the last item / hovered data using the title bar data. Make that a standard behavior (to allow usage of context menus on title bar only, etc.). | ||||||
|  |         window->DC.LastItemId = window->MoveId; | ||||||
|  |         window->DC.LastItemRect = title_bar_rect; | ||||||
|  |         window->DC.LastItemRectHoveredRect = IsMouseHoveringRect(title_bar_rect.Min, title_bar_rect.Max, false); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // Inner clipping rectangle |     // Inner clipping rectangle | ||||||
|   | |||||||
| @@ -2406,6 +2406,15 @@ struct ExampleAppConsole | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         // As a specific feature guaranteed by the library, after calling Begin() the last Item represent the title bar. So e.g. IsItemHovered() will return true when hovering the title bar. | ||||||
|  |         // Here we create a context menu only available from the title bar. | ||||||
|  |         if (ImGui::BeginPopupContextItem()) | ||||||
|  |         { | ||||||
|  |             if (ImGui::MenuItem("Close")) | ||||||
|  |                 *p_open = false; | ||||||
|  |             ImGui::EndPopup(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         ImGui::TextWrapped("This example implements a console with basic coloring, completion and history. A more elaborate implementation may want to store entries along with extra data such as timestamp, emitter, etc."); |         ImGui::TextWrapped("This example implements a console with basic coloring, completion and history. A more elaborate implementation may want to store entries along with extra data such as timestamp, emitter, etc."); | ||||||
|         ImGui::TextWrapped("Enter 'HELP' for help, press TAB to use text completion."); |         ImGui::TextWrapped("Enter 'HELP' for help, press TAB to use text completion."); | ||||||
|  |  | ||||||
| @@ -2850,7 +2859,7 @@ static void ShowExampleAppLongText(bool* p_open) | |||||||
|     static ImGuiTextBuffer log; |     static ImGuiTextBuffer log; | ||||||
|     static int lines = 0; |     static int lines = 0; | ||||||
|     ImGui::Text("Printing unusually long amount of text."); |     ImGui::Text("Printing unusually long amount of text."); | ||||||
|     ImGui::Combo("Test type", &test_type, "Single call to TextUnformatted()\0Multiple calls to Text(), clipped manually\0Multiple calls to Text(), not clipped\0"); |     ImGui::Combo("Test type", &test_type, "Single call to TextUnformatted()\0Multiple calls to Text(), clipped manually\0Multiple calls to Text(), not clipped (slow)\0"); | ||||||
|     ImGui::Text("Buffer contents: %d lines, %d bytes", lines, log.size()); |     ImGui::Text("Buffer contents: %d lines, %d bytes", lines, log.size()); | ||||||
|     if (ImGui::Button("Clear")) { log.clear(); lines = 0; } |     if (ImGui::Button("Clear")) { log.clear(); lines = 0; } | ||||||
|     ImGui::SameLine(); |     ImGui::SameLine(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 omar
					omar