mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Debug: Add more log. Reworked IMGUI_DEBUG_PRINT IMGUI_DEBUG_PRINTF. Added internal IsDragDropActive() helper.
DebugLog() output to TTY by default.
Amend 1d6e34f.
			
			
This commit is contained in:
		
							
								
								
									
										45
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -1270,7 +1270,7 @@ void ImGuiIO::ClearInputKeys() | ||||
| // - float analog_value: 0.0f..1.0f | ||||
| void ImGuiIO::AddKeyAnalogEvent(ImGuiKey key, bool down, float analog_value) | ||||
| { | ||||
|     //if (e->Down) { IMGUI_DEBUG_PRINT("AddKeyEvent() Key='%s' %d, NativeKeycode = %d, NativeScancode = %d\n", ImGui::GetKeyName(e->Key), e->Down, e->NativeKeycode, e->NativeScancode); } | ||||
|     //if (e->Down) { IMGUI_DEBUG_LOG_IO("AddKeyEvent() Key='%s' %d, NativeKeycode = %d, NativeScancode = %d\n", ImGui::GetKeyName(e->Key), e->Down, e->NativeKeycode, e->NativeScancode); } | ||||
|     if (key == ImGuiKey_None || !AppAcceptingEvents) | ||||
|         return; | ||||
|     ImGuiContext& g = *GImGui; | ||||
| @@ -3386,7 +3386,8 @@ void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window) | ||||
|     g.ActiveIdIsJustActivated = (g.ActiveId != id); | ||||
|     if (g.ActiveIdIsJustActivated) | ||||
|     { | ||||
|         IMGUI_DEBUG_LOG_ACTIVEID("[activeid] SetActiveID(0x%08X) in Window \"%s\"\n", id, window ? window->Name : "<NULL>"); | ||||
|         IMGUI_DEBUG_LOG_ACTIVEID("SetActiveID() old:0x%08X (window \"%s\") -> new:0x%08X (window \"%s\")\n", | ||||
|             g.ActiveId, g.ActiveIdWindow ? g.ActiveIdWindow->Name : "", id, window ? window->Name : ""); | ||||
|         g.ActiveIdTimer = 0.0f; | ||||
|         g.ActiveIdHasBeenPressedBefore = false; | ||||
|         g.ActiveIdHasBeenEditedBefore = false; | ||||
| @@ -4350,9 +4351,16 @@ void ImGui::NewFrame() | ||||
|     g.HoveredIdUsingMouseWheel = false; | ||||
|     g.HoveredIdDisabled = false; | ||||
|  | ||||
|     // Update ActiveId data (clear reference to active widget if the widget isn't alive anymore) | ||||
|     if (g.ActiveIdIsAlive != g.ActiveId && g.ActiveIdPreviousFrame == g.ActiveId && g.ActiveId != 0) | ||||
|     // Clear ActiveID if the item is not alive anymore. | ||||
|     // In 1.87, the common most call to KeepAliveID() was moved from GetID() to ItemAdd(). | ||||
|     // As a result, custom widget using ButtonBehavior() _without_ ItemAdd() need to call KeepAliveID() themselves. | ||||
|     if (g.ActiveId != 0 && g.ActiveIdIsAlive != g.ActiveId && g.ActiveIdPreviousFrame == g.ActiveId) | ||||
|     { | ||||
|         IMGUI_DEBUG_LOG_ACTIVEID("NewFrame(): ClearActiveID() because it isn't marked alive anymore!\n"); | ||||
|         ClearActiveID(); | ||||
|     } | ||||
|  | ||||
|     // Update ActiveId data (clear reference to active widget if the widget isn't alive anymore) | ||||
|     if (g.ActiveId) | ||||
|         g.ActiveIdTimer += g.IO.DeltaTime; | ||||
|     g.LastActiveIdTimer += g.IO.DeltaTime; | ||||
| @@ -5364,7 +5372,7 @@ static void UpdateWindowInFocusOrderList(ImGuiWindow* window, bool just_created, | ||||
| static ImGuiWindow* CreateNewWindow(const char* name, ImGuiWindowFlags flags) | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     //IMGUI_DEBUG_PRINT("CreateNewWindow '%s', flags = 0x%08X\n", name, flags); | ||||
|     //IMGUI_DEBUG_LOG("CreateNewWindow '%s', flags = 0x%08X\n", name, flags); | ||||
|  | ||||
|     // Create window the first time | ||||
|     ImGuiWindow* window = IM_NEW(ImGuiWindow)(&g, name); | ||||
| @@ -7378,11 +7386,13 @@ void ImGui::PopFocusScope() | ||||
|     g.FocusScopeStack.pop_back(); | ||||
| } | ||||
|  | ||||
| // Note: this will likely be called ActivateItem() once we rework our Focus/Activation system! | ||||
| void ImGui::SetKeyboardFocusHere(int offset) | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     ImGuiWindow* window = g.CurrentWindow; | ||||
|     IM_ASSERT(offset >= -1);    // -1 is allowed but not below | ||||
|     IMGUI_DEBUG_LOG_ACTIVEID("SetKeyboardFocusHere(%d) in window \"%s\"\n", offset, window->Name); | ||||
|  | ||||
|     SetNavWindow(window); | ||||
|  | ||||
| @@ -7829,12 +7839,12 @@ static const char* GetInputSourceName(ImGuiInputSource source) | ||||
|  | ||||
| /*static void DebugPrintInputEvent(const char* prefix, const ImGuiInputEvent* e) | ||||
| { | ||||
|     if (e->Type == ImGuiInputEventType_MousePos)    { IMGUI_DEBUG_PRINT("%s: MousePos (%.1f %.1f)\n", prefix, e->MousePos.PosX, e->MousePos.PosY); return; } | ||||
|     if (e->Type == ImGuiInputEventType_MouseButton) { IMGUI_DEBUG_PRINT("%s: MouseButton %d %s\n", prefix, e->MouseButton.Button, e->MouseButton.Down ? "Down" : "Up"); return; } | ||||
|     if (e->Type == ImGuiInputEventType_MouseWheel)  { IMGUI_DEBUG_PRINT("%s: MouseWheel (%.1f %.1f)\n", prefix, e->MouseWheel.WheelX, e->MouseWheel.WheelY); return; } | ||||
|     if (e->Type == ImGuiInputEventType_Key)         { IMGUI_DEBUG_PRINT("%s: Key \"%s\" %s\n", prefix, ImGui::GetKeyName(e->Key.Key), e->Key.Down ? "Down" : "Up"); return; } | ||||
|     if (e->Type == ImGuiInputEventType_Text)        { IMGUI_DEBUG_PRINT("%s: Text: %c (U+%08X)\n", prefix, e->Text.Char, e->Text.Char); return; } | ||||
|     if (e->Type == ImGuiInputEventType_Focus)       { IMGUI_DEBUG_PRINT("%s: AppFocused %d\n", prefix, e->AppFocused.Focused); return; } | ||||
|     if (e->Type == ImGuiInputEventType_MousePos)    { IMGUI_DEBUG_LOG_IO("%s: MousePos (%.1f %.1f)\n", prefix, e->MousePos.PosX, e->MousePos.PosY); return; } | ||||
|     if (e->Type == ImGuiInputEventType_MouseButton) { IMGUI_DEBUG_LOG_IO("%s: MouseButton %d %s\n", prefix, e->MouseButton.Button, e->MouseButton.Down ? "Down" : "Up"); return; } | ||||
|     if (e->Type == ImGuiInputEventType_MouseWheel)  { IMGUI_DEBUG_LOG_IO("%s: MouseWheel (%.1f %.1f)\n", prefix, e->MouseWheel.WheelX, e->MouseWheel.WheelY); return; } | ||||
|     if (e->Type == ImGuiInputEventType_Key)         { IMGUI_DEBUG_LOG_IO("%s: Key \"%s\" %s\n", prefix, ImGui::GetKeyName(e->Key.Key), e->Key.Down ? "Down" : "Up"); return; } | ||||
|     if (e->Type == ImGuiInputEventType_Text)        { IMGUI_DEBUG_LOG_IO("%s: Text: %c (U+%08X)\n", prefix, e->Text.Char, e->Text.Char); return; } | ||||
|     if (e->Type == ImGuiInputEventType_Focus)       { IMGUI_DEBUG_LOG_IO("%s: AppFocused %d\n", prefix, e->AppFocused.Focused); return; } | ||||
| }*/ | ||||
|  | ||||
| // Process input queue | ||||
| @@ -7954,7 +7964,7 @@ void ImGui::UpdateInputEvents(bool trickle_fast_inputs) | ||||
|     } | ||||
|  | ||||
|     // Record trail (for domain-specific applications wanting to access a precise trail) | ||||
|     //if (event_n != 0) IMGUI_DEBUG_PRINT("Processed: %d / Remaining: %d\n", event_n, g.InputEventsQueue.Size - event_n); | ||||
|     //if (event_n != 0) IMGUI_DEBUG_LOG_IO("Processed: %d / Remaining: %d\n", event_n, g.InputEventsQueue.Size - event_n); | ||||
|     for (int n = 0; n < event_n; n++) | ||||
|         g.InputEventsTrail.push_back(g.InputEventsQueue[n]); | ||||
|  | ||||
| @@ -10318,7 +10328,7 @@ static void ImGui::NavUpdate() | ||||
|     { | ||||
|         io.MousePos = io.MousePosPrev = NavCalcPreferredRefPos(); | ||||
|         io.WantSetMousePos = true; | ||||
|         //IMGUI_DEBUG_PRINT("SetMousePos: (%.1f,%.1f)\n", io.MousePos.x, io.MousePos.y); | ||||
|         //IMGUI_DEBUG_LOG_IO("SetMousePos: (%.1f,%.1f)\n", io.MousePos.x, io.MousePos.y); | ||||
|     } | ||||
|  | ||||
|     // [DEBUG] | ||||
| @@ -11027,6 +11037,12 @@ void ImGui::NavUpdateWindowingOverlay() | ||||
| // [SECTION] DRAG AND DROP | ||||
| //----------------------------------------------------------------------------- | ||||
|  | ||||
| bool ImGui::IsDragDropActive() | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     return g.DragDropActive; | ||||
| } | ||||
|  | ||||
| void ImGui::ClearDragDrop() | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
| @@ -13125,8 +13141,11 @@ void ImGui::DebugLog(const char* fmt, ...) | ||||
| void ImGui::DebugLogV(const char* fmt, va_list args) | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     const int old_size = g.DebugLogBuf.size(); | ||||
|     g.DebugLogBuf.appendf("[%05d] ", g.FrameCount); | ||||
|     g.DebugLogBuf.appendfv(fmt, args); | ||||
|     if (g.DebugLogFlags & ImGuiDebugLogFlags_OutputToTTY) | ||||
|         IMGUI_DEBUG_PRINTF("%s", g.DebugLogBuf.begin() + old_size); | ||||
| } | ||||
|  | ||||
| void ImGui::ShowDebugLogWindow(bool* p_open) | ||||
|   | ||||
| @@ -195,8 +195,13 @@ namespace ImStb | ||||
| //----------------------------------------------------------------------------- | ||||
|  | ||||
| // Debug Printing Into TTY | ||||
| #ifndef IMGUI_DEBUG_PRINT | ||||
| #define IMGUI_DEBUG_PRINT(_FMT,...)     printf("[%05d] " _FMT, g.FrameCount, __VA_ARGS__) | ||||
| // (since IMGUI_VERSION_NUM >= 18729: IMGUI_DEBUG_LOG was reworked into IMGUI_DEBUG_PRINTF (and removed framecount from it). If you were using a #define IMGUI_DEBUG_LOG please rename) | ||||
| #ifndef IMGUI_DEBUG_PRINTF | ||||
| #ifndef IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS | ||||
| #define IMGUI_DEBUG_PRINTF(_FMT,...)    printf(_FMT, __VA_ARGS__) | ||||
| #else | ||||
| #define IMGUI_DEBUG_PRINTF(_FMT,...) | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| // Debug Logging for ShowDebugLogWindow(). This is designed for relatively rare events so please don't spam. | ||||
| @@ -205,6 +210,7 @@ namespace ImStb | ||||
| #define IMGUI_DEBUG_LOG_FOCUS(...)      do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventFocus)    IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0) | ||||
| #define IMGUI_DEBUG_LOG_POPUP(...)      do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventPopup)    IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0) | ||||
| #define IMGUI_DEBUG_LOG_NAV(...)        do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventNav)      IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0) | ||||
| #define IMGUI_DEBUG_LOG_IO(...)         do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventIO)       IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0) | ||||
|  | ||||
| // Static Asserts | ||||
| #define IM_STATIC_ASSERT(_COND)         static_assert(_COND, "") | ||||
| @@ -1494,7 +1500,9 @@ enum ImGuiDebugLogFlags_ | ||||
|     ImGuiDebugLogFlags_EventFocus       = 1 << 1, | ||||
|     ImGuiDebugLogFlags_EventPopup       = 1 << 2, | ||||
|     ImGuiDebugLogFlags_EventNav         = 1 << 3, | ||||
|     ImGuiDebugLogFlags_EventMask_       = ImGuiDebugLogFlags_EventActiveId  | ImGuiDebugLogFlags_EventFocus | ImGuiDebugLogFlags_EventPopup | ImGuiDebugLogFlags_EventNav | ||||
|     ImGuiDebugLogFlags_EventIO          = 1 << 4, | ||||
|     ImGuiDebugLogFlags_EventMask_       = ImGuiDebugLogFlags_EventActiveId  | ImGuiDebugLogFlags_EventFocus | ImGuiDebugLogFlags_EventPopup | ImGuiDebugLogFlags_EventNav | ImGuiDebugLogFlags_EventIO, | ||||
|     ImGuiDebugLogFlags_OutputToTTY      = 1 << 10   // Also send output to TTY | ||||
| }; | ||||
|  | ||||
| struct ImGuiMetricsConfig | ||||
| @@ -1964,7 +1972,7 @@ struct ImGuiContext | ||||
|         LogDepthRef = 0; | ||||
|         LogDepthToExpand = LogDepthToExpandDefault = 2; | ||||
|  | ||||
|         DebugLogFlags = ImGuiDebugLogFlags_None; | ||||
|         DebugLogFlags = ImGuiDebugLogFlags_OutputToTTY; | ||||
|         DebugItemPickerActive = false; | ||||
|         DebugItemPickerBreakId = 0; | ||||
|  | ||||
| @@ -2703,6 +2711,7 @@ namespace ImGui | ||||
| #endif | ||||
|  | ||||
|     // Drag and Drop | ||||
|     IMGUI_API bool          IsDragDropActive(); | ||||
|     IMGUI_API bool          BeginDragDropTargetCustom(const ImRect& bb, ImGuiID id); | ||||
|     IMGUI_API void          ClearDragDrop(); | ||||
|     IMGUI_API bool          IsDragDropPayloadBeingAccepted(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user