mirror of
https://github.com/Drezil/imgui.git
synced 2024-12-19 06:26:35 +00:00
Various tweaks and fixes as suggested by PVS Studio (thanks PVS Studio!)
This commit is contained in:
parent
2f9bae140b
commit
32c4e01267
@ -5595,7 +5595,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|||||||
// in order for their pos/size to be matching their undocking state.)
|
// in order for their pos/size to be matching their undocking state.)
|
||||||
if (!(flags & ImGuiWindowFlags_NoTitleBar) && !window->DockIsActive)
|
if (!(flags & ImGuiWindowFlags_NoTitleBar) && !window->DockIsActive)
|
||||||
{
|
{
|
||||||
ImU32 title_bar_col = GetColorU32(window->Collapsed ? ImGuiCol_TitleBgCollapsed : title_bar_is_highlight ? ImGuiCol_TitleBgActive : ImGuiCol_TitleBg);
|
ImU32 title_bar_col = GetColorU32(title_bar_is_highlight ? ImGuiCol_TitleBgActive : ImGuiCol_TitleBg);
|
||||||
window->DrawList->AddRectFilled(title_bar_rect.Min, title_bar_rect.Max, title_bar_col, window_rounding, ImDrawCornerFlags_Top);
|
window->DrawList->AddRectFilled(title_bar_rect.Min, title_bar_rect.Max, title_bar_col, window_rounding, ImDrawCornerFlags_Top);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8840,6 +8840,7 @@ static void ImGui::NavUpdate()
|
|||||||
NavUpdateWindowing();
|
NavUpdateWindowing();
|
||||||
|
|
||||||
// Set output flags for user application
|
// Set output flags for user application
|
||||||
|
// FIXME: g.NavInitRequest is always false at this point, investigate the intent of operation done here.
|
||||||
g.IO.NavActive = (nav_keyboard_active || nav_gamepad_active) && g.NavWindow && !(g.NavWindow->Flags & ImGuiWindowFlags_NoNavInputs);
|
g.IO.NavActive = (nav_keyboard_active || nav_gamepad_active) && g.NavWindow && !(g.NavWindow->Flags & ImGuiWindowFlags_NoNavInputs);
|
||||||
g.IO.NavVisible = (g.IO.NavActive && g.NavId != 0 && !g.NavDisableHighlight) || (g.NavWindowingTarget != NULL) || g.NavInitRequest;
|
g.IO.NavVisible = (g.IO.NavActive && g.NavId != 0 && !g.NavDisableHighlight) || (g.NavWindowingTarget != NULL) || g.NavInitRequest;
|
||||||
|
|
||||||
@ -9075,7 +9076,7 @@ static float ImGui::NavUpdatePageUpPageDown(int allowed_dir_flags)
|
|||||||
ImGuiWindow* window = g.NavWindow;
|
ImGuiWindow* window = g.NavWindow;
|
||||||
bool page_up_held = IsKeyDown(g.IO.KeyMap[ImGuiKey_PageUp]) && (allowed_dir_flags & (1 << ImGuiDir_Up));
|
bool page_up_held = IsKeyDown(g.IO.KeyMap[ImGuiKey_PageUp]) && (allowed_dir_flags & (1 << ImGuiDir_Up));
|
||||||
bool page_down_held = IsKeyDown(g.IO.KeyMap[ImGuiKey_PageDown]) && (allowed_dir_flags & (1 << ImGuiDir_Down));
|
bool page_down_held = IsKeyDown(g.IO.KeyMap[ImGuiKey_PageDown]) && (allowed_dir_flags & (1 << ImGuiDir_Down));
|
||||||
if ((page_up_held && !page_down_held) || (page_down_held && !page_up_held))
|
if (page_up_held != page_down_held) // If either (not both) are pressed
|
||||||
{
|
{
|
||||||
if (window->DC.NavLayerActiveMask == 0x00 && window->DC.NavHasScroll)
|
if (window->DC.NavLayerActiveMask == 0x00 && window->DC.NavHasScroll)
|
||||||
{
|
{
|
||||||
@ -9761,7 +9762,7 @@ bool ImGui::BeginDragDropSource(ImGuiDragDropFlags flags)
|
|||||||
// Target can request the Source to not display its tooltip (we use a dedicated flag to make this request explicit)
|
// Target can request the Source to not display its tooltip (we use a dedicated flag to make this request explicit)
|
||||||
// We unfortunately can't just modify the source flags and skip the call to BeginTooltip, as caller may be emitting contents.
|
// We unfortunately can't just modify the source flags and skip the call to BeginTooltip, as caller may be emitting contents.
|
||||||
BeginTooltip();
|
BeginTooltip();
|
||||||
if (g.DragDropActive && g.DragDropAcceptIdPrev && (g.DragDropAcceptFlags & ImGuiDragDropFlags_AcceptNoPreviewTooltip))
|
if (g.DragDropAcceptIdPrev && (g.DragDropAcceptFlags & ImGuiDragDropFlags_AcceptNoPreviewTooltip))
|
||||||
{
|
{
|
||||||
ImGuiWindow* tooltip_window = g.CurrentWindow;
|
ImGuiWindow* tooltip_window = g.CurrentWindow;
|
||||||
tooltip_window->SkipItems = true;
|
tooltip_window->SkipItems = true;
|
||||||
|
@ -924,17 +924,18 @@ static void ShowDemoWindowWidgets()
|
|||||||
}
|
}
|
||||||
if (ImGui::TreeNode("Grid"))
|
if (ImGui::TreeNode("Grid"))
|
||||||
{
|
{
|
||||||
static bool selected[16] = { true, false, false, false, false, true, false, false, false, false, true, false, false, false, false, true };
|
static bool selected[4*4] = { true, false, false, false, false, true, false, false, false, false, true, false, false, false, false, true };
|
||||||
for (int i = 0; i < 16; i++)
|
for (int i = 0; i < 4*4; i++)
|
||||||
{
|
{
|
||||||
ImGui::PushID(i);
|
ImGui::PushID(i);
|
||||||
if (ImGui::Selectable("Sailor", &selected[i], 0, ImVec2(50,50)))
|
if (ImGui::Selectable("Sailor", &selected[i], 0, ImVec2(50,50)))
|
||||||
{
|
{
|
||||||
int x = i % 4, y = i / 4;
|
int x = i % 4;
|
||||||
if (x > 0) selected[i - 1] ^= 1;
|
int y = i / 4;
|
||||||
if (x < 3) selected[i + 1] ^= 1;
|
if (x > 0) { selected[i - 1] ^= 1; }
|
||||||
if (y > 0) selected[i - 4] ^= 1;
|
if (x < 3) { selected[i + 1] ^= 1; }
|
||||||
if (y < 3) selected[i + 4] ^= 1;
|
if (y > 0) { selected[i - 4] ^= 1; }
|
||||||
|
if (y < 3) { selected[i + 4] ^= 1; }
|
||||||
}
|
}
|
||||||
if ((i % 4) < 3) ImGui::SameLine();
|
if ((i % 4) < 3) ImGui::SameLine();
|
||||||
ImGui::PopID();
|
ImGui::PopID();
|
||||||
@ -1000,7 +1001,7 @@ static void ShowDemoWindowWidgets()
|
|||||||
static float values[90] = { 0 };
|
static float values[90] = { 0 };
|
||||||
static int values_offset = 0;
|
static int values_offset = 0;
|
||||||
static double refresh_time = 0.0;
|
static double refresh_time = 0.0;
|
||||||
if (!animate || refresh_time == 0.0f)
|
if (!animate || refresh_time == 0.0)
|
||||||
refresh_time = ImGui::GetTime();
|
refresh_time = ImGui::GetTime();
|
||||||
while (refresh_time < ImGui::GetTime()) // Create dummy data at fixed 60 hz rate for the demo
|
while (refresh_time < ImGui::GetTime()) // Create dummy data at fixed 60 hz rate for the demo
|
||||||
{
|
{
|
||||||
@ -2032,9 +2033,9 @@ static void ShowDemoWindowLayout()
|
|||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
ImGui::PopStyleVar(2);
|
ImGui::PopStyleVar(2);
|
||||||
float scroll_x_delta = 0.0f;
|
float scroll_x_delta = 0.0f;
|
||||||
ImGui::SmallButton("<<"); if (ImGui::IsItemActive()) scroll_x_delta = -ImGui::GetIO().DeltaTime * 1000.0f; ImGui::SameLine();
|
ImGui::SmallButton("<<"); if (ImGui::IsItemActive()) { scroll_x_delta = -ImGui::GetIO().DeltaTime * 1000.0f; } ImGui::SameLine();
|
||||||
ImGui::Text("Scroll from code"); ImGui::SameLine();
|
ImGui::Text("Scroll from code"); ImGui::SameLine();
|
||||||
ImGui::SmallButton(">>"); if (ImGui::IsItemActive()) scroll_x_delta = +ImGui::GetIO().DeltaTime * 1000.0f; ImGui::SameLine();
|
ImGui::SmallButton(">>"); if (ImGui::IsItemActive()) { scroll_x_delta = +ImGui::GetIO().DeltaTime * 1000.0f; } ImGui::SameLine();
|
||||||
ImGui::Text("%.0f/%.0f", scroll_x, scroll_max_x);
|
ImGui::Text("%.0f/%.0f", scroll_x, scroll_max_x);
|
||||||
if (scroll_x_delta != 0.0f)
|
if (scroll_x_delta != 0.0f)
|
||||||
{
|
{
|
||||||
@ -2562,9 +2563,9 @@ static void ShowDemoWindowMisc()
|
|||||||
// Use >= 0 parameter to SetKeyboardFocusHere() to focus an upcoming item
|
// Use >= 0 parameter to SetKeyboardFocusHere() to focus an upcoming item
|
||||||
static float f3[3] = { 0.0f, 0.0f, 0.0f };
|
static float f3[3] = { 0.0f, 0.0f, 0.0f };
|
||||||
int focus_ahead = -1;
|
int focus_ahead = -1;
|
||||||
if (ImGui::Button("Focus on X")) focus_ahead = 0; ImGui::SameLine();
|
if (ImGui::Button("Focus on X")) { focus_ahead = 0; } ImGui::SameLine();
|
||||||
if (ImGui::Button("Focus on Y")) focus_ahead = 1; ImGui::SameLine();
|
if (ImGui::Button("Focus on Y")) { focus_ahead = 1; } ImGui::SameLine();
|
||||||
if (ImGui::Button("Focus on Z")) focus_ahead = 2;
|
if (ImGui::Button("Focus on Z")) { focus_ahead = 2; }
|
||||||
if (focus_ahead != -1) ImGui::SetKeyboardFocusHere(focus_ahead);
|
if (focus_ahead != -1) ImGui::SetKeyboardFocusHere(focus_ahead);
|
||||||
ImGui::SliderFloat3("Float3", &f3[0], 0.0f, 1.0f);
|
ImGui::SliderFloat3("Float3", &f3[0], 0.0f, 1.0f);
|
||||||
|
|
||||||
@ -3812,7 +3813,7 @@ static void ShowExampleAppConstrainedResize(bool* p_open)
|
|||||||
if (type == 3) ImGui::SetNextWindowSizeConstraints(ImVec2(400, -1), ImVec2(500, -1)); // Width 400-500
|
if (type == 3) ImGui::SetNextWindowSizeConstraints(ImVec2(400, -1), ImVec2(500, -1)); // Width 400-500
|
||||||
if (type == 4) ImGui::SetNextWindowSizeConstraints(ImVec2(-1, 400), ImVec2(-1, 500)); // Height 400-500
|
if (type == 4) ImGui::SetNextWindowSizeConstraints(ImVec2(-1, 400), ImVec2(-1, 500)); // Height 400-500
|
||||||
if (type == 5) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0), ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Square); // Always Square
|
if (type == 5) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0), ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Square); // Always Square
|
||||||
if (type == 6) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0), ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Step, (void*)100);// Fixed Step
|
if (type == 6) ImGui::SetNextWindowSizeConstraints(ImVec2(0, 0), ImVec2(FLT_MAX, FLT_MAX), CustomConstraints::Step, (void*)(intptr_t)100); // Fixed Step
|
||||||
|
|
||||||
ImGuiWindowFlags flags = auto_resize ? ImGuiWindowFlags_AlwaysAutoResize : 0;
|
ImGuiWindowFlags flags = auto_resize ? ImGuiWindowFlags_AlwaysAutoResize : 0;
|
||||||
if (ImGui::Begin("Example: Constrained Resize", p_open, flags))
|
if (ImGui::Begin("Example: Constrained Resize", p_open, flags))
|
||||||
@ -3853,6 +3854,7 @@ static void ShowExampleAppSimpleOverlay(bool* p_open)
|
|||||||
// FIXME-VIEWPORT-ABS: Select a default viewport
|
// FIXME-VIEWPORT-ABS: Select a default viewport
|
||||||
const float DISTANCE = 10.0f;
|
const float DISTANCE = 10.0f;
|
||||||
static int corner = 0;
|
static int corner = 0;
|
||||||
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
if (corner != -1)
|
if (corner != -1)
|
||||||
{
|
{
|
||||||
ImGuiViewport* viewport = ImGui::GetMainViewport();
|
ImGuiViewport* viewport = ImGui::GetMainViewport();
|
||||||
@ -3867,7 +3869,7 @@ static void ShowExampleAppSimpleOverlay(bool* p_open)
|
|||||||
ImGui::Text("Simple overlay\n" "in the corner of the screen.\n" "(right-click to change position)");
|
ImGui::Text("Simple overlay\n" "in the corner of the screen.\n" "(right-click to change position)");
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
if (ImGui::IsMousePosValid())
|
if (ImGui::IsMousePosValid())
|
||||||
ImGui::Text("Mouse Position: (%.1f,%.1f)", ImGui::GetIO().MousePos.x, ImGui::GetIO().MousePos.y);
|
ImGui::Text("Mouse Position: (%.1f,%.1f)", io.MousePos.x, io.MousePos.y);
|
||||||
else
|
else
|
||||||
ImGui::Text("Mouse Position: <invalid>");
|
ImGui::Text("Mouse Position: <invalid>");
|
||||||
if (ImGui::BeginPopupContextWindow())
|
if (ImGui::BeginPopupContextWindow())
|
||||||
|
@ -1524,7 +1524,7 @@ void ImFontAtlas::GetTexDataAsRGBA32(unsigned char** out_pixels, int* out_wid
|
|||||||
GetTexDataAsAlpha8(&pixels, NULL, NULL);
|
GetTexDataAsAlpha8(&pixels, NULL, NULL);
|
||||||
if (pixels)
|
if (pixels)
|
||||||
{
|
{
|
||||||
TexPixelsRGBA32 = (unsigned int*)ImGui::MemAlloc((size_t)(TexWidth * TexHeight * 4));
|
TexPixelsRGBA32 = (unsigned int*)ImGui::MemAlloc((size_t)TexWidth * (size_t)TexHeight * 4);
|
||||||
const unsigned char* src = pixels;
|
const unsigned char* src = pixels;
|
||||||
unsigned int* dst = TexPixelsRGBA32;
|
unsigned int* dst = TexPixelsRGBA32;
|
||||||
for (int n = TexWidth * TexHeight; n > 0; n--)
|
for (int n = TexWidth * TexHeight; n > 0; n--)
|
||||||
@ -3026,13 +3026,14 @@ void ImGui::RenderRectFilledRangeH(ImDrawList* draw_list, const ImRect& rect, Im
|
|||||||
const float inv_rounding = 1.0f / rounding;
|
const float inv_rounding = 1.0f / rounding;
|
||||||
const float arc0_b = ImAcos01(1.0f - (p0.x - rect.Min.x) * inv_rounding);
|
const float arc0_b = ImAcos01(1.0f - (p0.x - rect.Min.x) * inv_rounding);
|
||||||
const float arc0_e = ImAcos01(1.0f - (p1.x - rect.Min.x) * inv_rounding);
|
const float arc0_e = ImAcos01(1.0f - (p1.x - rect.Min.x) * inv_rounding);
|
||||||
|
const float half_pi = IM_PI * 0.5f; // We will == compare to this because we know this is the exact value ImAcos01 can return.
|
||||||
const float x0 = ImMax(p0.x, rect.Min.x + rounding);
|
const float x0 = ImMax(p0.x, rect.Min.x + rounding);
|
||||||
if (arc0_b == arc0_e)
|
if (arc0_b == arc0_e)
|
||||||
{
|
{
|
||||||
draw_list->PathLineTo(ImVec2(x0, p1.y));
|
draw_list->PathLineTo(ImVec2(x0, p1.y));
|
||||||
draw_list->PathLineTo(ImVec2(x0, p0.y));
|
draw_list->PathLineTo(ImVec2(x0, p0.y));
|
||||||
}
|
}
|
||||||
else if (arc0_b == 0.0f && arc0_e == IM_PI*0.5f)
|
else if (arc0_b == 0.0f && arc0_e == half_pi)
|
||||||
{
|
{
|
||||||
draw_list->PathArcToFast(ImVec2(x0, p1.y - rounding), rounding, 3, 6); // BL
|
draw_list->PathArcToFast(ImVec2(x0, p1.y - rounding), rounding, 3, 6); // BL
|
||||||
draw_list->PathArcToFast(ImVec2(x0, p0.y + rounding), rounding, 6, 9); // TR
|
draw_list->PathArcToFast(ImVec2(x0, p0.y + rounding), rounding, 6, 9); // TR
|
||||||
@ -3052,7 +3053,7 @@ void ImGui::RenderRectFilledRangeH(ImDrawList* draw_list, const ImRect& rect, Im
|
|||||||
draw_list->PathLineTo(ImVec2(x1, p0.y));
|
draw_list->PathLineTo(ImVec2(x1, p0.y));
|
||||||
draw_list->PathLineTo(ImVec2(x1, p1.y));
|
draw_list->PathLineTo(ImVec2(x1, p1.y));
|
||||||
}
|
}
|
||||||
else if (arc1_b == 0.0f && arc1_e == IM_PI*0.5f)
|
else if (arc1_b == 0.0f && arc1_e == half_pi)
|
||||||
{
|
{
|
||||||
draw_list->PathArcToFast(ImVec2(x1, p0.y + rounding), rounding, 9, 12); // TR
|
draw_list->PathArcToFast(ImVec2(x1, p0.y + rounding), rounding, 9, 12); // TR
|
||||||
draw_list->PathArcToFast(ImVec2(x1, p1.y - rounding), rounding, 0, 3); // BR
|
draw_list->PathArcToFast(ImVec2(x1, p1.y - rounding), rounding, 0, 3); // BR
|
||||||
|
@ -673,7 +673,7 @@ bool ImGui::CloseButton(ImGuiID id, const ImVec2& pos, float radius)
|
|||||||
// Render
|
// Render
|
||||||
ImVec2 center = bb.GetCenter();
|
ImVec2 center = bb.GetCenter();
|
||||||
if (hovered)
|
if (hovered)
|
||||||
window->DrawList->AddCircleFilled(center, ImMax(2.0f, radius), GetColorU32((held && hovered) ? ImGuiCol_ButtonActive : ImGuiCol_ButtonHovered), 9);
|
window->DrawList->AddCircleFilled(center, ImMax(2.0f, radius), GetColorU32(held ? ImGuiCol_ButtonActive : ImGuiCol_ButtonHovered), 9);
|
||||||
|
|
||||||
float cross_extent = (radius * 0.7071f) - 1.0f;
|
float cross_extent = (radius * 0.7071f) - 1.0f;
|
||||||
ImU32 cross_col = GetColorU32(ImGuiCol_Text);
|
ImU32 cross_col = GetColorU32(ImGuiCol_Text);
|
||||||
@ -1697,7 +1697,7 @@ static float GetMinimumStepAtDecimalPrecision(int decimal_precision)
|
|||||||
static const float min_steps[10] = { 1.0f, 0.1f, 0.01f, 0.001f, 0.0001f, 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, 0.000000001f };
|
static const float min_steps[10] = { 1.0f, 0.1f, 0.01f, 0.001f, 0.0001f, 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, 0.000000001f };
|
||||||
if (decimal_precision < 0)
|
if (decimal_precision < 0)
|
||||||
return FLT_MIN;
|
return FLT_MIN;
|
||||||
return (decimal_precision >= 0 && decimal_precision < 10) ? min_steps[decimal_precision] : ImPow(10.0f, (float)-decimal_precision);
|
return (decimal_precision < IM_ARRAYSIZE(min_steps)) ? min_steps[decimal_precision] : ImPow(10.0f, (float)-decimal_precision);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename TYPE>
|
template<typename TYPE>
|
||||||
@ -3929,9 +3929,14 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
|
|||||||
if (n + 1 == components)
|
if (n + 1 == components)
|
||||||
PushItemWidth(w_item_last);
|
PushItemWidth(w_item_last);
|
||||||
if (flags & ImGuiColorEditFlags_Float)
|
if (flags & ImGuiColorEditFlags_Float)
|
||||||
value_changed = value_changed_as_float = value_changed | DragFloat(ids[n], &f[n], 1.0f/255.0f, 0.0f, hdr ? 0.0f : 1.0f, fmt_table_float[fmt_idx][n]);
|
{
|
||||||
|
value_changed |= DragFloat(ids[n], &f[n], 1.0f/255.0f, 0.0f, hdr ? 0.0f : 1.0f, fmt_table_float[fmt_idx][n]);
|
||||||
|
value_changed_as_float |= value_changed;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
value_changed |= DragInt(ids[n], &i[n], 1.0f, 0, hdr ? 0 : 255, fmt_table_int[fmt_idx][n]);
|
value_changed |= DragInt(ids[n], &i[n], 1.0f, 0, hdr ? 0 : 255, fmt_table_int[fmt_idx][n]);
|
||||||
|
}
|
||||||
if (!(flags & ImGuiColorEditFlags_NoOptions))
|
if (!(flags & ImGuiColorEditFlags_NoOptions))
|
||||||
OpenPopupOnItemClick("context");
|
OpenPopupOnItemClick("context");
|
||||||
}
|
}
|
||||||
@ -4034,7 +4039,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
|
|||||||
{
|
{
|
||||||
if (const ImGuiPayload* payload = AcceptDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_3F))
|
if (const ImGuiPayload* payload = AcceptDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_3F))
|
||||||
{
|
{
|
||||||
memcpy((float*)col, payload->Data, sizeof(float) * 3);
|
memcpy((float*)col, payload->Data, sizeof(float) * 3); // Preserve alpha if any
|
||||||
value_changed = true;
|
value_changed = true;
|
||||||
}
|
}
|
||||||
if (const ImGuiPayload* payload = AcceptDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_4F))
|
if (const ImGuiPayload* payload = AcceptDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_4F))
|
||||||
@ -4616,7 +4621,7 @@ void ImGui::ColorPickerOptionsPopup(const float* ref_col, ImGuiColorEditFlags fl
|
|||||||
g.ColorEditOptions = (g.ColorEditOptions & ~ImGuiColorEditFlags__PickerMask) | (picker_flags & ImGuiColorEditFlags__PickerMask);
|
g.ColorEditOptions = (g.ColorEditOptions & ~ImGuiColorEditFlags__PickerMask) | (picker_flags & ImGuiColorEditFlags__PickerMask);
|
||||||
SetCursorScreenPos(backup_pos);
|
SetCursorScreenPos(backup_pos);
|
||||||
ImVec4 dummy_ref_col;
|
ImVec4 dummy_ref_col;
|
||||||
memcpy(&dummy_ref_col.x, ref_col, sizeof(float) * (picker_flags & ImGuiColorEditFlags_NoAlpha ? 3 : 4));
|
memcpy(&dummy_ref_col, ref_col, sizeof(float) * ((picker_flags & ImGuiColorEditFlags_NoAlpha) ? 3 : 4));
|
||||||
ColorPicker4("##dummypicker", &dummy_ref_col.x, picker_flags);
|
ColorPicker4("##dummypicker", &dummy_ref_col.x, picker_flags);
|
||||||
PopID();
|
PopID();
|
||||||
}
|
}
|
||||||
@ -5019,7 +5024,7 @@ bool ImGui::CollapsingHeader(const char* label, bool* p_open, ImGuiTreeNodeFlags
|
|||||||
ImGuiItemHoveredDataBackup last_item_backup;
|
ImGuiItemHoveredDataBackup last_item_backup;
|
||||||
float button_radius = g.FontSize * 0.5f;
|
float button_radius = g.FontSize * 0.5f;
|
||||||
ImVec2 button_center = ImVec2(ImMin(window->DC.LastItemRect.Max.x, window->ClipRect.Max.x) - g.Style.FramePadding.x - button_radius, window->DC.LastItemRect.GetCenter().y);
|
ImVec2 button_center = ImVec2(ImMin(window->DC.LastItemRect.Max.x, window->ClipRect.Max.x) - g.Style.FramePadding.x - button_radius, window->DC.LastItemRect.GetCenter().y);
|
||||||
if (CloseButton(window->GetID((void*)(intptr_t)(id+1)), button_center, button_radius))
|
if (CloseButton(window->GetID((void*)((intptr_t)id+1)), button_center, button_radius))
|
||||||
*p_open = false;
|
*p_open = false;
|
||||||
last_item_backup.Restore();
|
last_item_backup.Restore();
|
||||||
}
|
}
|
||||||
@ -5842,6 +5847,7 @@ ImGuiTabBar::ImGuiTabBar()
|
|||||||
ID = 0;
|
ID = 0;
|
||||||
SelectedTabId = NextSelectedTabId = VisibleTabId = 0;
|
SelectedTabId = NextSelectedTabId = VisibleTabId = 0;
|
||||||
CurrFrameVisible = PrevFrameVisible = -1;
|
CurrFrameVisible = PrevFrameVisible = -1;
|
||||||
|
ContentsHeight = 0.0f;
|
||||||
OffsetMax = OffsetNextTab = 0.0f;
|
OffsetMax = OffsetNextTab = 0.0f;
|
||||||
ScrollingAnim = ScrollingTarget = 0.0f;
|
ScrollingAnim = ScrollingTarget = 0.0f;
|
||||||
Flags = ImGuiTabBarFlags_None;
|
Flags = ImGuiTabBarFlags_None;
|
||||||
@ -6576,7 +6582,7 @@ bool ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open,
|
|||||||
flags |= ImGuiTabItemFlags_NoCloseWithMiddleMouseButton;
|
flags |= ImGuiTabItemFlags_NoCloseWithMiddleMouseButton;
|
||||||
|
|
||||||
// Render tab label, process close button
|
// Render tab label, process close button
|
||||||
const ImGuiID close_button_id = p_open ? window->GetID((void*)(intptr_t)(id + 1)) : 0;
|
const ImGuiID close_button_id = p_open ? window->GetID((void*)((intptr_t)id + 1)) : 0;
|
||||||
bool just_closed = TabItemLabelAndCloseButton(display_draw_list, bb, flags, label, id, close_button_id);
|
bool just_closed = TabItemLabelAndCloseButton(display_draw_list, bb, flags, label, id, close_button_id);
|
||||||
if (just_closed)
|
if (just_closed)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user