mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Added flag for selectables to handle double clicks.
This commit is contained in:
parent
62fe0b59bf
commit
a908c109c0
@ -5222,7 +5222,11 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool
|
|||||||
SetHoveredID(id);
|
SetHoveredID(id);
|
||||||
if (!(flags & ImGuiButtonFlags_NoKeyModifiers) || (!g.IO.KeyCtrl && !g.IO.KeyShift && !g.IO.KeyAlt))
|
if (!(flags & ImGuiButtonFlags_NoKeyModifiers) || (!g.IO.KeyCtrl && !g.IO.KeyShift && !g.IO.KeyAlt))
|
||||||
{
|
{
|
||||||
if (g.IO.MouseClicked[0])
|
if (g.IO.MouseDoubleClicked[0] && (flags & ImGuiButtonFlags_PressedOnDoubleClick))
|
||||||
|
{
|
||||||
|
pressed = true;
|
||||||
|
}
|
||||||
|
else if (g.IO.MouseClicked[0])
|
||||||
{
|
{
|
||||||
if (flags & ImGuiButtonFlags_PressedOnClick)
|
if (flags & ImGuiButtonFlags_PressedOnClick)
|
||||||
{
|
{
|
||||||
@ -8135,6 +8139,7 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl
|
|||||||
if (flags & ImGuiSelectableFlags_Menu) button_flags |= ImGuiButtonFlags_PressedOnClick;
|
if (flags & ImGuiSelectableFlags_Menu) button_flags |= ImGuiButtonFlags_PressedOnClick;
|
||||||
if (flags & ImGuiSelectableFlags_MenuItem) button_flags |= ImGuiButtonFlags_PressedOnClick|ImGuiButtonFlags_PressedOnRelease;
|
if (flags & ImGuiSelectableFlags_MenuItem) button_flags |= ImGuiButtonFlags_PressedOnClick|ImGuiButtonFlags_PressedOnRelease;
|
||||||
if (flags & ImGuiSelectableFlags_Disabled) button_flags |= ImGuiButtonFlags_Disabled;
|
if (flags & ImGuiSelectableFlags_Disabled) button_flags |= ImGuiButtonFlags_Disabled;
|
||||||
|
if (flags & ImGuiSelectableFlags_HandleDoubleClick) button_flags |= ImGuiButtonFlags_PressedOnDoubleClick;
|
||||||
bool hovered, held;
|
bool hovered, held;
|
||||||
bool pressed = ButtonBehavior(bb_with_spacing, id, &hovered, &held, button_flags);
|
bool pressed = ButtonBehavior(bb_with_spacing, id, &hovered, &held, button_flags);
|
||||||
if (flags & ImGuiSelectableFlags_Disabled)
|
if (flags & ImGuiSelectableFlags_Disabled)
|
||||||
|
3
imgui.h
3
imgui.h
@ -504,7 +504,8 @@ enum ImGuiSelectableFlags_
|
|||||||
{
|
{
|
||||||
// Default: 0
|
// Default: 0
|
||||||
ImGuiSelectableFlags_DontClosePopups = 1 << 0, // Clicking this don't close parent popup window
|
ImGuiSelectableFlags_DontClosePopups = 1 << 0, // Clicking this don't close parent popup window
|
||||||
ImGuiSelectableFlags_SpanAllColumns = 1 << 1 // Selectable frame can span all columns (text will still fit in current column)
|
ImGuiSelectableFlags_SpanAllColumns = 1 << 1, // Selectable frame can span all columns (text will still fit in current column)
|
||||||
|
ImGuiSelectableFlags_HandleDoubleClick = 1 << 2 // Generate press events on double clicks too
|
||||||
};
|
};
|
||||||
|
|
||||||
// User fill ImGuiIO.KeyMap[] array with indices into the ImGuiIO.KeysDown[512] array
|
// User fill ImGuiIO.KeyMap[] array with indices into the ImGuiIO.KeysDown[512] array
|
||||||
|
@ -392,11 +392,16 @@ void ImGui::ShowTestWindow(bool* p_opened)
|
|||||||
{
|
{
|
||||||
if (ImGui::TreeNode("Basic"))
|
if (ImGui::TreeNode("Basic"))
|
||||||
{
|
{
|
||||||
static bool selected[3] = { false, true, false };
|
static bool selected[4] = { false, true, false, false };
|
||||||
ImGui::Selectable("1. I am selectable", &selected[0]);
|
ImGui::Selectable("1. I am selectable", &selected[0]);
|
||||||
ImGui::Selectable("2. I am selectable", &selected[1]);
|
ImGui::Selectable("2. I am selectable", &selected[1]);
|
||||||
ImGui::Text("3. I am not selectable");
|
ImGui::Text("3. I am not selectable");
|
||||||
ImGui::Selectable("4. I am selectable", &selected[2]);
|
ImGui::Selectable("4. I am selectable", &selected[2]);
|
||||||
|
if (ImGui::Selectable("5. I am double clickable", selected[3], ImGuiSelectableFlags_HandleDoubleClick))
|
||||||
|
{
|
||||||
|
if (ImGui::IsMouseDoubleClicked(0))
|
||||||
|
selected[3] = !selected[3];
|
||||||
|
}
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
if (ImGui::TreeNode("Rendering more text into the same block"))
|
if (ImGui::TreeNode("Rendering more text into the same block"))
|
||||||
|
@ -159,7 +159,8 @@ enum ImGuiButtonFlags_
|
|||||||
ImGuiButtonFlags_DontClosePopups = 1 << 4,
|
ImGuiButtonFlags_DontClosePopups = 1 << 4,
|
||||||
ImGuiButtonFlags_Disabled = 1 << 5,
|
ImGuiButtonFlags_Disabled = 1 << 5,
|
||||||
ImGuiButtonFlags_AlignTextBaseLine = 1 << 6,
|
ImGuiButtonFlags_AlignTextBaseLine = 1 << 6,
|
||||||
ImGuiButtonFlags_NoKeyModifiers = 1 << 7
|
ImGuiButtonFlags_NoKeyModifiers = 1 << 7,
|
||||||
|
ImGuiButtonFlags_PressedOnDoubleClick = 1 << 8
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ImGuiTreeNodeFlags_
|
enum ImGuiTreeNodeFlags_
|
||||||
@ -176,10 +177,10 @@ enum ImGuiSliderFlags_
|
|||||||
enum ImGuiSelectableFlagsPrivate_
|
enum ImGuiSelectableFlagsPrivate_
|
||||||
{
|
{
|
||||||
// NB: need to be in sync with last value of ImGuiSelectableFlags_
|
// NB: need to be in sync with last value of ImGuiSelectableFlags_
|
||||||
ImGuiSelectableFlags_Menu = 1 << 2,
|
ImGuiSelectableFlags_Menu = 1 << 3,
|
||||||
ImGuiSelectableFlags_MenuItem = 1 << 3,
|
ImGuiSelectableFlags_MenuItem = 1 << 4,
|
||||||
ImGuiSelectableFlags_Disabled = 1 << 4,
|
ImGuiSelectableFlags_Disabled = 1 << 5,
|
||||||
ImGuiSelectableFlags_DrawFillAvailWidth = 1 << 5
|
ImGuiSelectableFlags_DrawFillAvailWidth = 1 << 6
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME: this is in development, not exposed/functional as a generic feature yet.
|
// FIXME: this is in development, not exposed/functional as a generic feature yet.
|
||||||
|
Loading…
Reference in New Issue
Block a user