|
@@ -143,7 +143,8 @@ CODE
|
|
|
- CTRL+Shift+Left/Right: Select words.
|
|
|
- CTRL+A or Double-Click: Select All.
|
|
|
- CTRL+X, CTRL+C, CTRL+V: Use OS clipboard.
|
|
|
- - CTRL+Z, CTRL+Y: Undo, Redo.
|
|
|
+ - CTRL+Z Undo.
|
|
|
+ - CTRL+Y or CTRL+Shift+Z: Redo.
|
|
|
- ESCAPE: Revert text to its original value.
|
|
|
- On OSX, controls are automatically adjusted to match standard OSX text editing 2ts and behaviors.
|
|
|
|
|
@@ -1363,7 +1364,8 @@ ImGuiStyle::ImGuiStyle()
|
|
|
LogSliderDeadzone = 4.0f; // The size in pixels of the dead-zone around zero on logarithmic sliders that cross zero.
|
|
|
TabRounding = 5.0f; // Radius of upper corners of a tab. Set to 0.0f to have rectangular tabs.
|
|
|
TabBorderSize = 0.0f; // Thickness of border around tabs.
|
|
|
- TabMinWidthForCloseButton = 0.0f; // Minimum width for close button to appear on an unselected tab when hovered. Set to 0.0f to always show when hovering, set to FLT_MAX to never show close button unless selected.
|
|
|
+ TabCloseButtonMinWidthSelected = -1.0f; // -1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width.
|
|
|
+ TabCloseButtonMinWidthUnselected = 0.0f; // -1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width. FLT_MAX: never show close button when unselected.
|
|
|
TabBarBorderSize = 1.0f; // Thickness of tab-bar separator, which takes on the tab active color to denote focus.
|
|
|
TabBarOverlineSize = 1.0f; // Thickness of tab-bar overline, which highlights the selected tab-bar.
|
|
|
TableAngledHeadersAngle = 35.0f * (IM_PI / 180.0f); // Angle of angled headers (supported values range from -50 degrees to +50 degrees).
|
|
@@ -1419,7 +1421,8 @@ void ImGuiStyle::ScaleAllSizes(float scale_factor)
|
|
|
GrabRounding = ImTrunc(GrabRounding * scale_factor);
|
|
|
LogSliderDeadzone = ImTrunc(LogSliderDeadzone * scale_factor);
|
|
|
TabRounding = ImTrunc(TabRounding * scale_factor);
|
|
|
- TabMinWidthForCloseButton = (TabMinWidthForCloseButton != FLT_MAX) ? ImTrunc(TabMinWidthForCloseButton * scale_factor) : FLT_MAX;
|
|
|
+ TabCloseButtonMinWidthSelected = (TabCloseButtonMinWidthSelected > 0.0f && TabCloseButtonMinWidthSelected != FLT_MAX) ? ImTrunc(TabCloseButtonMinWidthSelected * scale_factor) : TabCloseButtonMinWidthSelected;
|
|
|
+ TabCloseButtonMinWidthUnselected = (TabCloseButtonMinWidthUnselected > 0.0f && TabCloseButtonMinWidthUnselected != FLT_MAX) ? ImTrunc(TabCloseButtonMinWidthUnselected * scale_factor) : TabCloseButtonMinWidthUnselected;
|
|
|
TabBarOverlineSize = ImTrunc(TabBarOverlineSize * scale_factor);
|
|
|
SeparatorTextPadding = ImTrunc(SeparatorTextPadding * scale_factor);
|
|
|
DockingSeparatorSize = ImTrunc(DockingSeparatorSize * scale_factor);
|
|
@@ -2459,7 +2462,7 @@ int ImTextCharFromUtf8(unsigned int* out_char, const char* in_text, const char*
|
|
|
int e = 0;
|
|
|
e = (*out_char < mins[len]) << 6; // non-canonical encoding
|
|
|
e |= ((*out_char >> 11) == 0x1b) << 7; // surrogate half?
|
|
|
- e |= (*out_char > IM_UNICODE_CODEPOINT_MAX) << 8; // out of range?
|
|
|
+ e |= (*out_char > IM_UNICODE_CODEPOINT_MAX) << 8; // out of range we can store in ImWchar (FIXME: May evolve)
|
|
|
e |= (s[1] & 0xc0) >> 2;
|
|
|
e |= (s[2] & 0xc0) >> 4;
|
|
|
e |= (s[3] ) >> 6;
|
|
@@ -3975,6 +3978,7 @@ ImGuiContext::ImGuiContext(ImFontAtlas* shared_font_atlas)
|
|
|
InputEventsNextEventId = 1;
|
|
|
|
|
|
WindowsActiveCount = 0;
|
|
|
+ WindowsBorderHoverPadding = 0.0f;
|
|
|
CurrentWindow = NULL;
|
|
|
HoveredWindow = NULL;
|
|
|
HoveredWindowUnderMovingWindow = NULL;
|
|
@@ -6341,7 +6345,7 @@ bool ImGui::BeginChildEx(const char* name, ImGuiID id, const ImVec2& size_arg, I
|
|
|
// A SetNextWindowSize() call always has priority (#8020)
|
|
|
// (since the code in Begin() never supported SizeVal==0.0f aka auto-resize via SetNextWindowSize() call, we don't support it here for now)
|
|
|
// FIXME: We only support ImGuiCond_Always in this path. Supporting other paths would requires to obtain window pointer.
|
|
|
- if ((g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSize) != 0 && (g.NextWindowData.SizeCond & ImGuiCond_Always) != 0)
|
|
|
+ if ((g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasSize) != 0 && (g.NextWindowData.SizeCond & ImGuiCond_Always) != 0)
|
|
|
{
|
|
|
if (g.NextWindowData.SizeVal.x > 0.0f)
|
|
|
{
|
|
@@ -6357,11 +6361,11 @@ bool ImGui::BeginChildEx(const char* name, ImGuiID id, const ImVec2& size_arg, I
|
|
|
SetNextWindowSize(size);
|
|
|
|
|
|
// Forward child flags (we allow prior settings to merge but it'll only work for adding flags)
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasChildFlags)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasChildFlags)
|
|
|
g.NextWindowData.ChildFlags |= child_flags;
|
|
|
else
|
|
|
g.NextWindowData.ChildFlags = child_flags;
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasChildFlags;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasChildFlags;
|
|
|
|
|
|
// Build up name. If you need to append to a same child from multiple location in the ID stack, use BeginChild(ImGuiID id) with a stable value.
|
|
|
// FIXME: 2023/11/14: commented out shorted version. We had an issue with multiple ### in child window path names, which the trailing hash helped workaround.
|
|
@@ -6596,7 +6600,7 @@ static ImVec2 CalcWindowSizeAfterConstraint(ImGuiWindow* window, const ImVec2& s
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
ImVec2 new_size = size_desired;
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSizeConstraint)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasSizeConstraint)
|
|
|
{
|
|
|
// See comments in SetNextWindowSizeConstraints() for details about setting size_min an size_max.
|
|
|
ImRect cr = g.NextWindowData.SizeConstraintRect;
|
|
@@ -7113,7 +7117,7 @@ void ImGui::RenderWindowDecorations(ImGuiWindow* window, const ImRect& title_bar
|
|
|
// Adjust alpha. For docking
|
|
|
bool override_alpha = false;
|
|
|
float alpha = 1.0f;
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasBgAlpha)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasBgAlpha)
|
|
|
{
|
|
|
alpha = g.NextWindowData.BgAlphaVal;
|
|
|
override_alpha = true;
|
|
@@ -7330,7 +7334,7 @@ void ImGui::UpdateWindowSkipRefresh(ImGuiWindow* window)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
window->SkipRefresh = false;
|
|
|
- if ((g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasRefreshPolicy) == 0)
|
|
|
+ if ((g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasRefreshPolicy) == 0)
|
|
|
return;
|
|
|
if (g.NextWindowData.RefreshFlagsVal & ImGuiWindowRefreshFlags_TryToAvoidRefresh)
|
|
|
{
|
|
@@ -7413,7 +7417,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
SetWindowConditionAllowFlags(window, ImGuiCond_Appearing, true);
|
|
|
window->FlagsPreviousFrame = window->Flags;
|
|
|
window->Flags = (ImGuiWindowFlags)flags;
|
|
|
- window->ChildFlags = (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasChildFlags) ? g.NextWindowData.ChildFlags : 0;
|
|
|
+ window->ChildFlags = (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasChildFlags) ? g.NextWindowData.ChildFlags : 0;
|
|
|
window->LastFrameActive = current_frame;
|
|
|
window->LastTimeActive = (float)g.Time;
|
|
|
window->BeginOrderWithinParent = 0;
|
|
@@ -7427,7 +7431,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
// Docking
|
|
|
// (NB: during the frame dock nodes are created, it is possible that (window->DockIsActive == false) even though (window->DockNode->Windows.Size > 1)
|
|
|
IM_ASSERT(window->DockNode == NULL || window->DockNodeAsHost == NULL); // Cannot be both
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasDock)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasDock)
|
|
|
SetWindowDock(window, g.NextWindowData.DockId, g.NextWindowData.DockCond);
|
|
|
if (first_begin_of_the_frame)
|
|
|
{
|
|
@@ -7442,7 +7446,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
if (window->DockIsActive)
|
|
|
{
|
|
|
IM_ASSERT(window->DockNode != NULL);
|
|
|
- g.NextWindowData.Flags &= ~ImGuiNextWindowDataFlags_HasSizeConstraint; // Docking currently override constraints
|
|
|
+ g.NextWindowData.HasFlags &= ~ImGuiNextWindowDataFlags_HasSizeConstraint; // Docking currently override constraints
|
|
|
}
|
|
|
|
|
|
// Amend the Appearing flag
|
|
@@ -7522,7 +7526,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
// (FIXME: Consider splitting the HasXXX flags into X/Y components
|
|
|
bool window_pos_set_by_api = false;
|
|
|
bool window_size_x_set_by_api = false, window_size_y_set_by_api = false;
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasPos)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasPos)
|
|
|
{
|
|
|
window_pos_set_by_api = (window->SetWindowPosAllowFlags & g.NextWindowData.PosCond) != 0;
|
|
|
if (window_pos_set_by_api && ImLengthSqr(g.NextWindowData.PosPivotVal) > 0.00001f)
|
|
@@ -7538,7 +7542,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
SetWindowPos(window, g.NextWindowData.PosVal, g.NextWindowData.PosCond);
|
|
|
}
|
|
|
}
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSize)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasSize)
|
|
|
{
|
|
|
window_size_x_set_by_api = (window->SetWindowSizeAllowFlags & g.NextWindowData.SizeCond) != 0 && (g.NextWindowData.SizeVal.x > 0.0f);
|
|
|
window_size_y_set_by_api = (window->SetWindowSizeAllowFlags & g.NextWindowData.SizeCond) != 0 && (g.NextWindowData.SizeVal.y > 0.0f);
|
|
@@ -7548,7 +7552,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
g.NextWindowData.SizeVal.y = window->SizeFull.y;
|
|
|
SetWindowSize(window, g.NextWindowData.SizeVal, g.NextWindowData.SizeCond);
|
|
|
}
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasScroll)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasScroll)
|
|
|
{
|
|
|
if (g.NextWindowData.ScrollVal.x >= 0.0f)
|
|
|
{
|
|
@@ -7561,15 +7565,15 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
window->ScrollTargetCenterRatio.y = 0.0f;
|
|
|
}
|
|
|
}
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasContentSize)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasContentSize)
|
|
|
window->ContentSizeExplicit = g.NextWindowData.ContentSizeVal;
|
|
|
else if (first_begin_of_the_frame)
|
|
|
window->ContentSizeExplicit = ImVec2(0.0f, 0.0f);
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasWindowClass)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasWindowClass)
|
|
|
window->WindowClass = g.NextWindowData.WindowClass;
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasCollapsed)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasCollapsed)
|
|
|
SetWindowCollapsed(window, g.NextWindowData.CollapsedVal, g.NextWindowData.CollapsedCond);
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasFocus)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasFocus)
|
|
|
FocusWindow(window);
|
|
|
if (window->Appearing)
|
|
|
SetWindowConditionAllowFlags(window, ImGuiCond_Appearing, false);
|
|
@@ -8248,7 +8252,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
// Hide along with parent or if parent is collapsed
|
|
|
if (parent_window && (parent_window->Collapsed || parent_window->HiddenFramesCanSkipItems > 0))
|
|
|
window->HiddenFramesCanSkipItems = 1;
|
|
|
- if (parent_window && (parent_window->Collapsed || parent_window->HiddenFramesCannotSkipItems > 0))
|
|
|
+ if (parent_window && parent_window->HiddenFramesCannotSkipItems > 0)
|
|
|
window->HiddenFramesCannotSkipItems = 1;
|
|
|
}
|
|
|
|
|
@@ -8802,7 +8806,7 @@ void ImGui::SetNextWindowPos(const ImVec2& pos, ImGuiCond cond, const ImVec2& pi
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
IM_ASSERT(cond == 0 || ImIsPowerOfTwo(cond)); // Make sure the user doesn't attempt to combine multiple condition flags.
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasPos;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasPos;
|
|
|
g.NextWindowData.PosVal = pos;
|
|
|
g.NextWindowData.PosPivotVal = pivot;
|
|
|
g.NextWindowData.PosCond = cond ? cond : ImGuiCond_Always;
|
|
@@ -8813,7 +8817,7 @@ void ImGui::SetNextWindowSize(const ImVec2& size, ImGuiCond cond)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
IM_ASSERT(cond == 0 || ImIsPowerOfTwo(cond)); // Make sure the user doesn't attempt to combine multiple condition flags.
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasSize;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasSize;
|
|
|
g.NextWindowData.SizeVal = size;
|
|
|
g.NextWindowData.SizeCond = cond ? cond : ImGuiCond_Always;
|
|
|
}
|
|
@@ -8825,7 +8829,7 @@ void ImGui::SetNextWindowSize(const ImVec2& size, ImGuiCond cond)
|
|
|
void ImGui::SetNextWindowSizeConstraints(const ImVec2& size_min, const ImVec2& size_max, ImGuiSizeCallback custom_callback, void* custom_callback_user_data)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasSizeConstraint;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasSizeConstraint;
|
|
|
g.NextWindowData.SizeConstraintRect = ImRect(size_min, size_max);
|
|
|
g.NextWindowData.SizeCallback = custom_callback;
|
|
|
g.NextWindowData.SizeCallbackUserData = custom_callback_user_data;
|
|
@@ -8836,14 +8840,14 @@ void ImGui::SetNextWindowSizeConstraints(const ImVec2& size_min, const ImVec2& s
|
|
|
void ImGui::SetNextWindowContentSize(const ImVec2& size)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasContentSize;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasContentSize;
|
|
|
g.NextWindowData.ContentSizeVal = ImTrunc(size);
|
|
|
}
|
|
|
|
|
|
void ImGui::SetNextWindowScroll(const ImVec2& scroll)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasScroll;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasScroll;
|
|
|
g.NextWindowData.ScrollVal = scroll;
|
|
|
}
|
|
|
|
|
@@ -8851,7 +8855,7 @@ void ImGui::SetNextWindowCollapsed(bool collapsed, ImGuiCond cond)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
IM_ASSERT(cond == 0 || ImIsPowerOfTwo(cond)); // Make sure the user doesn't attempt to combine multiple condition flags.
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasCollapsed;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasCollapsed;
|
|
|
g.NextWindowData.CollapsedVal = collapsed;
|
|
|
g.NextWindowData.CollapsedCond = cond ? cond : ImGuiCond_Always;
|
|
|
}
|
|
@@ -8859,21 +8863,21 @@ void ImGui::SetNextWindowCollapsed(bool collapsed, ImGuiCond cond)
|
|
|
void ImGui::SetNextWindowBgAlpha(float alpha)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasBgAlpha;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasBgAlpha;
|
|
|
g.NextWindowData.BgAlphaVal = alpha;
|
|
|
}
|
|
|
|
|
|
void ImGui::SetNextWindowViewport(ImGuiID id)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasViewport;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasViewport;
|
|
|
g.NextWindowData.ViewportId = id;
|
|
|
}
|
|
|
|
|
|
void ImGui::SetNextWindowDockID(ImGuiID id, ImGuiCond cond)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasDock;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasDock;
|
|
|
g.NextWindowData.DockCond = cond ? cond : ImGuiCond_Always;
|
|
|
g.NextWindowData.DockId = id;
|
|
|
}
|
|
@@ -8882,7 +8886,7 @@ void ImGui::SetNextWindowClass(const ImGuiWindowClass* window_class)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
IM_ASSERT((window_class->ViewportFlagsOverrideSet & window_class->ViewportFlagsOverrideClear) == 0); // Cannot set both set and clear for the same bit
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasWindowClass;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasWindowClass;
|
|
|
g.NextWindowData.WindowClass = *window_class;
|
|
|
}
|
|
|
|
|
@@ -8890,7 +8894,7 @@ void ImGui::SetNextWindowClass(const ImGuiWindowClass* window_class)
|
|
|
void ImGui::SetNextWindowRefreshPolicy(ImGuiWindowRefreshFlags flags)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasRefreshPolicy;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasRefreshPolicy;
|
|
|
g.NextWindowData.RefreshFlagsVal = flags;
|
|
|
}
|
|
|
|
|
@@ -11966,7 +11970,7 @@ bool ImGui::BeginTooltipEx(ImGuiTooltipFlags tooltip_flags, ImGuiWindowFlags ext
|
|
|
// See FindBestWindowPosForPopup() for positionning logic of other tooltips (not drag and drop ones).
|
|
|
//ImVec2 tooltip_pos = g.IO.MousePos - g.ActiveIdClickOffset - g.Style.WindowPadding;
|
|
|
const bool is_touchscreen = (g.IO.MouseSource == ImGuiMouseSource_TouchScreen);
|
|
|
- if ((g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasPos) == 0)
|
|
|
+ if ((g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasPos) == 0)
|
|
|
{
|
|
|
ImVec2 tooltip_pos = is_touchscreen ? (g.IO.MousePos + TOOLTIP_DEFAULT_OFFSET_TOUCH * g.Style.MouseCursorScale) : (g.IO.MousePos + TOOLTIP_DEFAULT_OFFSET_MOUSE * g.Style.MouseCursorScale);
|
|
|
ImVec2 tooltip_pivot = is_touchscreen ? TOOLTIP_DEFAULT_PIVOT_TOUCH : ImVec2(0.0f, 0.0f);
|
|
@@ -12391,7 +12395,7 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags fla
|
|
|
// Center modal windows by default for increased visibility
|
|
|
// (this won't really last as settings will kick in, and is mostly for backward compatibility. user may do the same themselves)
|
|
|
// FIXME: Should test for (PosCond & window->SetWindowPosAllowFlags) with the upcoming window.
|
|
|
- if ((g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasPos) == 0)
|
|
|
+ if ((g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasPos) == 0)
|
|
|
{
|
|
|
const ImGuiViewport* viewport = window->WasActive ? window->Viewport : GetMainViewport(); // FIXME-VIEWPORT: What may be our reference viewport?
|
|
|
SetNextWindowPos(viewport->GetCenter(), ImGuiCond_FirstUseEver, ImVec2(0.5f, 0.5f));
|
|
@@ -12694,7 +12698,7 @@ void ImGui::SetWindowFocus(const char* name)
|
|
|
void ImGui::SetNextWindowFocus()
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasFocus;
|
|
|
+ g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasFocus;
|
|
|
}
|
|
|
|
|
|
// Similar to IsWindowHovered()
|
|
@@ -16172,7 +16176,7 @@ static void ImGui::WindowSelectViewport(ImGuiWindow* window)
|
|
|
window->ViewportId = 0;
|
|
|
}
|
|
|
|
|
|
- if ((g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasViewport) == 0)
|
|
|
+ if ((g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasViewport) == 0)
|
|
|
{
|
|
|
// By default inherit from parent window
|
|
|
if (window->Viewport == NULL && window->ParentWindow && (!window->ParentWindow->IsFallbackWindow || window->ParentWindow->WasActive))
|
|
@@ -16188,7 +16192,7 @@ static void ImGui::WindowSelectViewport(ImGuiWindow* window)
|
|
|
}
|
|
|
|
|
|
bool lock_viewport = false;
|
|
|
- if (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasViewport)
|
|
|
+ if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasViewport)
|
|
|
{
|
|
|
// Code explicitly request a viewport
|
|
|
window->Viewport = (ImGuiViewportP*)FindViewportByID(g.NextWindowData.ViewportId);
|
|
@@ -20125,7 +20129,7 @@ void ImGui::BeginDocked(ImGuiWindow* window, bool* p_open)
|
|
|
// Calling SetNextWindowPos() undock windows by default (by setting PosUndock)
|
|
|
bool want_undock = false;
|
|
|
want_undock |= (window->Flags & ImGuiWindowFlags_NoDocking) != 0;
|
|
|
- want_undock |= (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasPos) && (window->SetWindowPosAllowFlags & g.NextWindowData.PosCond) && g.NextWindowData.PosUndock;
|
|
|
+ want_undock |= (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasPos) && (window->SetWindowPosAllowFlags & g.NextWindowData.PosCond) && g.NextWindowData.PosUndock;
|
|
|
if (want_undock)
|
|
|
{
|
|
|
DockContextProcessUndockWindow(&g, window);
|
|
@@ -20243,7 +20247,7 @@ void ImGui::BeginDockableDragDropSource(ImGuiWindow* window)
|
|
|
// When ConfigDockingWithShift is set, display a tooltip to increase UI affordance.
|
|
|
// We cannot set for HoveredWindowUnderMovingWindow != NULL here, as it is only valid/useful when drag and drop is already active
|
|
|
// (because of the 'is_mouse_dragging_with_an_expected_destination' logic in UpdateViewportsNewFrame() function)
|
|
|
- IM_ASSERT(g.NextWindowData.Flags == 0);
|
|
|
+ IM_ASSERT(g.NextWindowData.HasFlags == 0);
|
|
|
if (g.IO.ConfigDockingWithShift && g.MouseStationaryTimer >= 1.0f && g.ActiveId >= 1.0f)
|
|
|
SetTooltip("%s", LocalizeGetMsg(ImGuiLocKey_DockingHoldShiftToDock));
|
|
|
return;
|
|
@@ -20723,7 +20727,11 @@ static void Platform_SetClipboardTextFn_DefaultImpl(ImGuiContext* ctx, const cha
|
|
|
#endif
|
|
|
static bool Platform_OpenInShellFn_DefaultImpl(ImGuiContext*, const char* path)
|
|
|
{
|
|
|
- return (INT_PTR)::ShellExecuteA(NULL, "open", path, NULL, NULL, SW_SHOWDEFAULT) > 32;
|
|
|
+ const int path_wsize = ::MultiByteToWideChar(CP_UTF8, 0, path, -1, NULL, 0);
|
|
|
+ ImVector<wchar_t> path_wbuf;
|
|
|
+ path_wbuf.resize(path_wsize);
|
|
|
+ ::MultiByteToWideChar(CP_UTF8, 0, path, -1, path_wbuf.Data, path_wsize);
|
|
|
+ return (INT_PTR)::ShellExecuteW(NULL, L"open", path_wbuf.Data, NULL, NULL, SW_SHOWDEFAULT) > 32;
|
|
|
}
|
|
|
#else
|
|
|
#include <sys/wait.h>
|
|
@@ -22410,7 +22418,7 @@ static void ShowDebugLogFlag(const char* name, ImGuiDebugLogFlags flags)
|
|
|
void ImGui::ShowDebugLogWindow(bool* p_open)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- if ((g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSize) == 0)
|
|
|
+ if ((g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasSize) == 0)
|
|
|
SetNextWindowSize(ImVec2(0.0f, GetFontSize() * 12.0f), ImGuiCond_FirstUseEver);
|
|
|
if (!Begin("Dear ImGui Debug Log", p_open) || GetCurrentWindow()->BeginCount > 1)
|
|
|
{
|
|
@@ -22732,7 +22740,7 @@ static int StackToolFormatLevelInfo(ImGuiIDStackTool* tool, int n, bool format_f
|
|
|
void ImGui::ShowIDStackToolWindow(bool* p_open)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
- if ((g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSize) == 0)
|
|
|
+ if ((g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasSize) == 0)
|
|
|
SetNextWindowSize(ImVec2(0.0f, GetFontSize() * 8.0f), ImGuiCond_FirstUseEver);
|
|
|
if (!Begin("Dear ImGui ID Stack Tool", p_open) || GetCurrentWindow()->BeginCount > 1)
|
|
|
{
|