mirror of
https://github.com/ocornut/imgui.git
synced 2025-01-18 17:24:09 +01:00
Button() closes active popup (#126) unsure about that
This commit is contained in:
parent
e6ac9e88aa
commit
f26de46350
15
imgui.cpp
15
imgui.cpp
@ -966,7 +966,8 @@ enum ImGuiButtonFlags_
|
|||||||
ImGuiButtonFlags_Repeat = (1 << 0),
|
ImGuiButtonFlags_Repeat = (1 << 0),
|
||||||
ImGuiButtonFlags_PressedOnClick = (1 << 1),
|
ImGuiButtonFlags_PressedOnClick = (1 << 1),
|
||||||
ImGuiButtonFlags_FlattenChilds = (1 << 2),
|
ImGuiButtonFlags_FlattenChilds = (1 << 2),
|
||||||
ImGuiButtonFlags_Disabled = (1 << 3)
|
ImGuiButtonFlags_DontClosePopups = (1 << 3),
|
||||||
|
ImGuiButtonFlags_Disabled = (1 << 4)
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ImGuiSelectableFlags_
|
enum ImGuiSelectableFlags_
|
||||||
@ -4891,6 +4892,10 @@ static bool ButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFlags
|
|||||||
const ImVec2 off = ImVec2(ImMax(0.0f, size.x - label_size.x) * 0.5f, ImMax(0.0f, size.y - label_size.y) * 0.5f); // Center (only applies if we explicitly gave a size bigger than the text size, which isn't the common path)
|
const ImVec2 off = ImVec2(ImMax(0.0f, size.x - label_size.x) * 0.5f, ImMax(0.0f, size.y - label_size.y) * 0.5f); // Center (only applies if we explicitly gave a size bigger than the text size, which isn't the common path)
|
||||||
RenderTextClipped(bb.Min + off, label, NULL, &label_size, bb.Max); // Render clip (only applies if we explicitly gave a size smaller than the text size, which isn't common)
|
RenderTextClipped(bb.Min + off, label, NULL, &label_size, bb.Max); // Render clip (only applies if we explicitly gave a size smaller than the text size, which isn't common)
|
||||||
|
|
||||||
|
// Automatically close popups
|
||||||
|
if (pressed && !(flags & ImGuiButtonFlags_DontClosePopups) && (window->Flags & ImGuiWindowFlags_Popup))
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
|
||||||
return pressed;
|
return pressed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6611,13 +6616,13 @@ bool ImGui::InputFloat(const char* label, float *v, float step, float step_fast,
|
|||||||
{
|
{
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
ImGui::SameLine(0, (int)style.ItemInnerSpacing.x);
|
ImGui::SameLine(0, (int)style.ItemInnerSpacing.x);
|
||||||
if (ImGui::Button("-", button_sz, true))
|
if (ButtonEx("-", button_sz, ImGuiButtonFlags_Repeat | ImGuiButtonFlags_DontClosePopups))
|
||||||
{
|
{
|
||||||
*v -= g.IO.KeyCtrl && step_fast > 0.0f ? step_fast : step;
|
*v -= g.IO.KeyCtrl && step_fast > 0.0f ? step_fast : step;
|
||||||
value_changed = true;
|
value_changed = true;
|
||||||
}
|
}
|
||||||
ImGui::SameLine(0, (int)style.ItemInnerSpacing.x);
|
ImGui::SameLine(0, (int)style.ItemInnerSpacing.x);
|
||||||
if (ImGui::Button("+", button_sz, true))
|
if (ButtonEx("+", button_sz, ImGuiButtonFlags_Repeat | ImGuiButtonFlags_DontClosePopups))
|
||||||
{
|
{
|
||||||
*v += g.IO.KeyCtrl && step_fast > 0.0f ? step_fast : step;
|
*v += g.IO.KeyCtrl && step_fast > 0.0f ? step_fast : step;
|
||||||
value_changed = true;
|
value_changed = true;
|
||||||
@ -7834,7 +7839,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], bool alpha)
|
|||||||
{
|
{
|
||||||
ImGui::SameLine(0, (int)style.ItemInnerSpacing.x);
|
ImGui::SameLine(0, (int)style.ItemInnerSpacing.x);
|
||||||
const char* button_titles[3] = { "RGB", "HSV", "HEX" };
|
const char* button_titles[3] = { "RGB", "HSV", "HEX" };
|
||||||
if (ImGui::Button(button_titles[edit_mode]))
|
if (ButtonEx(button_titles[edit_mode], ImVec2(0,0), ImGuiButtonFlags_DontClosePopups))
|
||||||
g.ColorEditModeStorage.SetInt(id, (edit_mode + 1) % 3); // Don't set local copy of 'edit_mode' right away!
|
g.ColorEditModeStorage.SetInt(id, (edit_mode + 1) % 3); // Don't set local copy of 'edit_mode' right away!
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
}
|
}
|
||||||
@ -11432,6 +11437,8 @@ static void ShowExampleMenuFile()
|
|||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
static float f = 0.5f;
|
static float f = 0.5f;
|
||||||
ImGui::SliderFloat("Value", &f, 0.0f, 1.0f);
|
ImGui::SliderFloat("Value", &f, 0.0f, 1.0f);
|
||||||
|
ImGui::InputFloat("Input", &f, 0.1f);
|
||||||
|
ImGui::Button("Button");
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginMenu("Colors"))
|
if (ImGui::BeginMenu("Colors"))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user