mirror of
https://github.com/ocornut/imgui.git
synced 2024-12-03 21:59:15 +08:00
Log/Capture: reworked scope + decorating menus, tabs.
This commit is contained in:
parent
a4fcc93f4a
commit
f37a9a27e5
@ -48,6 +48,8 @@ Other changes:
|
|||||||
- Buttons: using ImGuiItemFlags_ButtonRepeat makes default button behavior use
|
- Buttons: using ImGuiItemFlags_ButtonRepeat makes default button behavior use
|
||||||
PressedOnClick instead of PressedOnClickRelease when unspecified.
|
PressedOnClick instead of PressedOnClickRelease when unspecified.
|
||||||
- Fonts: removed const qualifiers from most font functions.
|
- Fonts: removed const qualifiers from most font functions.
|
||||||
|
- Log/Capture: better decorating of BeginMenu() and TabItem() output.
|
||||||
|
- Log/Capture: a non terminated log ends automatically in the window which called it.
|
||||||
- Backends: DX12: Unmap() call specify written range. The range is informational and
|
- Backends: DX12: Unmap() call specify written range. The range is informational and
|
||||||
may be used by debug tools.
|
may be used by debug tools.
|
||||||
- Backends: SDL2: Replace SDL_Vulkan_GetDrawableSize() forward declaration with the
|
- Backends: SDL2: Replace SDL_Vulkan_GetDrawableSize() forward declaration with the
|
||||||
|
@ -4008,6 +4008,7 @@ ImGuiContext::ImGuiContext(ImFontAtlas* shared_font_atlas)
|
|||||||
|
|
||||||
LogEnabled = false;
|
LogEnabled = false;
|
||||||
LogFlags = ImGuiLogFlags_None;
|
LogFlags = ImGuiLogFlags_None;
|
||||||
|
LogWindow = NULL;
|
||||||
LogNextPrefix = LogNextSuffix = NULL;
|
LogNextPrefix = LogNextSuffix = NULL;
|
||||||
LogFile = NULL;
|
LogFile = NULL;
|
||||||
LogLinePosY = FLT_MAX;
|
LogLinePosY = FLT_MAX;
|
||||||
@ -7748,7 +7749,7 @@ void ImGui::End()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Stop logging
|
// Stop logging
|
||||||
if (!(window->Flags & ImGuiWindowFlags_ChildWindow)) // FIXME: add more options for scope of logging
|
if (g.LogWindow == window) // FIXME: add more options for scope of logging
|
||||||
LogFinish();
|
LogFinish();
|
||||||
|
|
||||||
if (window->DC.IsSetPos)
|
if (window->DC.IsSetPos)
|
||||||
@ -14334,6 +14335,7 @@ void ImGui::LogBegin(ImGuiLogFlags flags, int auto_open_depth)
|
|||||||
|
|
||||||
g.LogEnabled = g.ItemUnclipByLog = true;
|
g.LogEnabled = g.ItemUnclipByLog = true;
|
||||||
g.LogFlags = flags;
|
g.LogFlags = flags;
|
||||||
|
g.LogWindow = window;
|
||||||
g.LogNextPrefix = g.LogNextSuffix = NULL;
|
g.LogNextPrefix = g.LogNextSuffix = NULL;
|
||||||
g.LogDepthRef = window->DC.TreeDepth;
|
g.LogDepthRef = window->DC.TreeDepth;
|
||||||
g.LogDepthToExpand = ((auto_open_depth >= 0) ? auto_open_depth : g.LogDepthToExpandDefault);
|
g.LogDepthToExpand = ((auto_open_depth >= 0) ? auto_open_depth : g.LogDepthToExpandDefault);
|
||||||
|
@ -2321,6 +2321,7 @@ struct ImGuiContext
|
|||||||
// Capture/Logging
|
// Capture/Logging
|
||||||
bool LogEnabled; // Currently capturing
|
bool LogEnabled; // Currently capturing
|
||||||
ImGuiLogFlags LogFlags; // Capture flags/type
|
ImGuiLogFlags LogFlags; // Capture flags/type
|
||||||
|
ImGuiWindow* LogWindow;
|
||||||
ImFileHandle LogFile; // If != NULL log to stdout/ file
|
ImFileHandle LogFile; // If != NULL log to stdout/ file
|
||||||
ImGuiTextBuffer LogBuffer; // Accumulation buffer when log to clipboard. This is pointer so our GImGui static constructor doesn't call heap allocators.
|
ImGuiTextBuffer LogBuffer; // Accumulation buffer when log to clipboard. This is pointer so our GImGui static constructor doesn't call heap allocators.
|
||||||
const char* LogNextPrefix;
|
const char* LogNextPrefix;
|
||||||
|
@ -8811,6 +8811,7 @@ bool ImGui::BeginMenuEx(const char* label, const char* icon, bool enabled)
|
|||||||
float w = label_size.x;
|
float w = label_size.x;
|
||||||
ImVec2 text_pos(window->DC.CursorPos.x + offsets->OffsetLabel, window->DC.CursorPos.y + window->DC.CurrLineTextBaseOffset);
|
ImVec2 text_pos(window->DC.CursorPos.x + offsets->OffsetLabel, window->DC.CursorPos.y + window->DC.CurrLineTextBaseOffset);
|
||||||
pressed = Selectable("", menu_is_open, selectable_flags, ImVec2(w, label_size.y));
|
pressed = Selectable("", menu_is_open, selectable_flags, ImVec2(w, label_size.y));
|
||||||
|
LogSetNextTextDecoration("[", "]");
|
||||||
RenderText(text_pos, label);
|
RenderText(text_pos, label);
|
||||||
PopStyleVar();
|
PopStyleVar();
|
||||||
window->DC.CursorPos.x += IM_TRUNC(style.ItemSpacing.x * (-1.0f + 0.5f)); // -1 spacing to compensate the spacing added when Selectable() did a SameLine(). It would also work to call SameLine() ourselves after the PopStyleVar().
|
window->DC.CursorPos.x += IM_TRUNC(style.ItemSpacing.x * (-1.0f + 0.5f)); // -1 spacing to compensate the spacing added when Selectable() did a SameLine(). It would also work to call SameLine() ourselves after the PopStyleVar().
|
||||||
@ -8827,6 +8828,7 @@ bool ImGui::BeginMenuEx(const char* label, const char* icon, bool enabled)
|
|||||||
float extra_w = ImMax(0.0f, GetContentRegionAvail().x - min_w);
|
float extra_w = ImMax(0.0f, GetContentRegionAvail().x - min_w);
|
||||||
ImVec2 text_pos(window->DC.CursorPos.x + offsets->OffsetLabel, window->DC.CursorPos.y + window->DC.CurrLineTextBaseOffset);
|
ImVec2 text_pos(window->DC.CursorPos.x + offsets->OffsetLabel, window->DC.CursorPos.y + window->DC.CurrLineTextBaseOffset);
|
||||||
pressed = Selectable("", menu_is_open, selectable_flags | ImGuiSelectableFlags_SpanAvailWidth, ImVec2(min_w, label_size.y));
|
pressed = Selectable("", menu_is_open, selectable_flags | ImGuiSelectableFlags_SpanAvailWidth, ImVec2(min_w, label_size.y));
|
||||||
|
LogSetNextTextDecoration("", ">");
|
||||||
RenderText(text_pos, label);
|
RenderText(text_pos, label);
|
||||||
if (icon_w > 0.0f)
|
if (icon_w > 0.0f)
|
||||||
RenderText(pos + ImVec2(offsets->OffsetIcon, 0.0f), icon);
|
RenderText(pos + ImVec2(offsets->OffsetIcon, 0.0f), icon);
|
||||||
@ -9040,6 +9042,7 @@ bool ImGui::MenuItemEx(const char* label, const char* icon, const char* shortcut
|
|||||||
if (shortcut_w > 0.0f)
|
if (shortcut_w > 0.0f)
|
||||||
{
|
{
|
||||||
PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]);
|
PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]);
|
||||||
|
LogSetNextTextDecoration("(", ")");
|
||||||
RenderText(pos + ImVec2(offsets->OffsetShortcut + stretch_w, 0.0f), shortcut, NULL, false);
|
RenderText(pos + ImVec2(offsets->OffsetShortcut + stretch_w, 0.0f), shortcut, NULL, false);
|
||||||
PopStyleColor();
|
PopStyleColor();
|
||||||
}
|
}
|
||||||
@ -10288,6 +10291,7 @@ void ImGui::TabItemLabelAndCloseButton(ImDrawList* draw_list, const ImRect& bb,
|
|||||||
text_ellipsis_clip_bb.Max.x -= unsaved_marker_visible ? (button_sz * 0.80f) : 0.0f;
|
text_ellipsis_clip_bb.Max.x -= unsaved_marker_visible ? (button_sz * 0.80f) : 0.0f;
|
||||||
ellipsis_max_x = text_pixel_clip_bb.Max.x;
|
ellipsis_max_x = text_pixel_clip_bb.Max.x;
|
||||||
}
|
}
|
||||||
|
LogSetNextTextDecoration("/", "\\");
|
||||||
RenderTextEllipsis(draw_list, text_ellipsis_clip_bb.Min, text_ellipsis_clip_bb.Max, text_pixel_clip_bb.Max.x, ellipsis_max_x, label, NULL, &label_size);
|
RenderTextEllipsis(draw_list, text_ellipsis_clip_bb.Min, text_ellipsis_clip_bb.Max, text_pixel_clip_bb.Max.x, ellipsis_max_x, label, NULL, &label_size);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
Loading…
Reference in New Issue
Block a user