From 4faf99eff564d68bef9e43cb293c851fc489afc3 Mon Sep 17 00:00:00 2001 From: omar Date: Wed, 25 Oct 2017 09:28:54 +0200 Subject: [PATCH] Added most basic form of Disabled flag to disable interactions (but visuals aren't altered), in imgui_internals.h, undocumented/unsupported (#211, #1012) --- imgui.cpp | 6 +++++- imgui_internal.h | 7 ++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/imgui.cpp b/imgui.cpp index 90a31c52..c77d4d7f 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -2051,6 +2051,8 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) return false; if (!IsWindowContentHoverable(window, flags)) return false; + if (window->DC.ItemFlags & ImGuiItemFlags_Disabled) + return false; return true; } @@ -2070,6 +2072,8 @@ bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id) return false; if (!IsWindowContentHoverable(window, ImGuiHoveredFlags_Default)) return false; + if (window->DC.ItemFlags & ImGuiItemFlags_Disabled) + return false; SetHoveredID(id); return true; @@ -2090,7 +2094,7 @@ bool ImGui::FocusableItemRegister(ImGuiWindow* window, ImGuiID id, bool tab_stop { ImGuiContext& g = *GImGui; - const bool allow_keyboard_focus = (window->DC.ItemFlags & ImGuiItemFlags_AllowKeyboardFocus) != 0; + const bool allow_keyboard_focus = (window->DC.ItemFlags & (ImGuiItemFlags_AllowKeyboardFocus | ImGuiItemFlags_Disabled)) == ImGuiItemFlags_AllowKeyboardFocus; window->FocusIdxAllCounter++; if (allow_keyboard_focus) window->FocusIdxTabCounter++; diff --git a/imgui_internal.h b/imgui_internal.h index 39efdb2b..24e48412 100644 --- a/imgui_internal.h +++ b/imgui_internal.h @@ -582,9 +582,10 @@ enum ImGuiItemFlags_ { ImGuiItemFlags_AllowKeyboardFocus = 1 << 0, // true ImGuiItemFlags_ButtonRepeat = 1 << 1, // false // Button() will return true multiple times based on io.KeyRepeatDelay and io.KeyRepeatRate settings. - //ImGuiItemFlags_Disabled = 1 << 2, // false // All widgets appears are disabled - //ImGuiItemFlags_AllowNavDefaultFocus = 1 << 3, // true - ImGuiItemFlags_SelectableDontClosePopup = 1 << 4, // false // MenuItem/Selectable() automatically closes current Popup window + ImGuiItemFlags_Disabled = 1 << 2, // false // FIXME-WIP: Disable interactions but doesn't affect visuals. Should be: grey out and disable interactions with widgets that affect data + view widgets (WIP) + //ImGuiItemFlags_NoNav = 1 << 3, // false + //ImGuiItemFlags_NoNavDefaultFocus = 1 << 4, // false + ImGuiItemFlags_SelectableDontClosePopup = 1 << 5, // false // MenuItem/Selectable() automatically closes current Popup window ImGuiItemFlags_Default_ = ImGuiItemFlags_AllowKeyboardFocus };