@ -396,6 +396,7 @@ void ImGui::ShowDemoWindow(bool* p_open)
const char * listbox_items [ ] = { " Apple " , " Banana " , " Cherry " , " Kiwi " , " Mango " , " Orange " , " Pineapple " , " Strawberry " , " Watermelon " } ;
static int listbox_item_current = 1 ;
ImGui : : ListBox ( " listbox \n (single select) " , & listbox_item_current , listbox_items , IM_ARRAYSIZE ( listbox_items ) , 4 ) ;
ImGui : : Text ( " Hovered %d, Active %d, Deactivated %d " , ImGui : : IsItemHovered ( ) , ImGui : : IsItemActive ( ) , ImGui : : IsItemDeactivated ( ) ) ;
//static int listbox_item_current2 = 2;
//ImGui::PushItemWidth(-1);
@ -1172,6 +1173,89 @@ void ImGui::ShowDemoWindow(bool* p_open)
ImGui : : PopStyleVar ( ) ;
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNode ( " Active, Focused, Hovered & Focused Tests " ) )
{
// Testing IsItemHovered() and other functions with their various flags. Note that the flags can be combined.
// (because BulletText is an item itself and that would affect the output of IsItemHovered() we pass all state in a single call to simplify the code).
static int item_type = 1 ;
static float col4f [ 4 ] = { 1.0f , 0.5 , 0.0f , 1.0f } ;
ImGui : : RadioButton ( " Text " , & item_type , 0 ) ; ImGui : : SameLine ( ) ;
ImGui : : RadioButton ( " Button " , & item_type , 1 ) ; ImGui : : SameLine ( ) ;
ImGui : : RadioButton ( " Multi-Component " , & item_type , 2 ) ;
bool return_value = false ;
if ( item_type = = 0 )
ImGui : : Text ( " ITEM: Text " ) ;
if ( item_type = = 1 )
return_value = ImGui : : Button ( " ITEM: Button " ) ;
if ( item_type = = 2 )
return_value = ImGui : : ColorEdit4 ( " ITEM: ColorEdit4 " , col4f ) ;
ImGui : : BulletText (
" Return value = %d \n "
" IsItemFocused() = %d \n "
" IsItemHovered() = %d \n "
" IsItemHovered(_AllowWhenBlockedByPopup) = %d \n "
" IsItemHovered(_AllowWhenBlockedByActiveItem) = %d \n "
" IsItemHovered(_AllowWhenOverlapped) = %d \n "
" IsItemHovered(_RectOnly) = %d \n "
" IsItemActive() = %d \n "
" IsItemDeactivated() = %d \n "
" IsItemVisible() = %d \n " ,
return_value ,
ImGui : : IsItemFocused ( ) ,
ImGui : : IsItemHovered ( ) ,
ImGui : : IsItemHovered ( ImGuiHoveredFlags_AllowWhenBlockedByPopup ) ,
ImGui : : IsItemHovered ( ImGuiHoveredFlags_AllowWhenBlockedByActiveItem ) ,
ImGui : : IsItemHovered ( ImGuiHoveredFlags_AllowWhenOverlapped ) ,
ImGui : : IsItemHovered ( ImGuiHoveredFlags_RectOnly ) ,
ImGui : : IsItemActive ( ) ,
ImGui : : IsItemDeactivated ( ) ,
ImGui : : IsItemVisible ( )
) ;
static bool embed_all_inside_a_child_window = false ;
ImGui : : Checkbox ( " Embed everything inside a child window (for additional testing) " , & embed_all_inside_a_child_window ) ;
if ( embed_all_inside_a_child_window )
ImGui : : BeginChild ( " outer_child " , ImVec2 ( 0 , ImGui : : GetFontSize ( ) * 20 ) , true ) ;
// Testing IsWindowFocused() function with its various flags. Note that the flags can be combined.
ImGui : : BulletText (
" IsWindowFocused() = %d \n "
" IsWindowFocused(_ChildWindows) = %d \n "
" IsWindowFocused(_ChildWindows|_RootWindow) = %d \n "
" IsWindowFocused(_RootWindow) = %d \n "
" IsWindowFocused(_AnyWindow) = %d \n " ,
ImGui : : IsWindowFocused ( ) ,
ImGui : : IsWindowFocused ( ImGuiFocusedFlags_ChildWindows ) ,
ImGui : : IsWindowFocused ( ImGuiFocusedFlags_ChildWindows | ImGuiFocusedFlags_RootWindow ) ,
ImGui : : IsWindowFocused ( ImGuiFocusedFlags_RootWindow ) ,
ImGui : : IsWindowFocused ( ImGuiFocusedFlags_AnyWindow ) ) ;
// Testing IsWindowHovered() function with its various flags. Note that the flags can be combined.
ImGui : : BulletText (
" IsWindowHovered() = %d \n "
" IsWindowHovered(_AllowWhenBlockedByPopup) = %d \n "
" IsWindowHovered(_AllowWhenBlockedByActiveItem) = %d \n "
" IsWindowHovered(_ChildWindows) = %d \n "
" IsWindowHovered(_ChildWindows|_RootWindow) = %d \n "
" IsWindowHovered(_RootWindow) = %d \n "
" IsWindowHovered(_AnyWindow) = %d \n " ,
ImGui : : IsWindowHovered ( ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_AllowWhenBlockedByPopup ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_AllowWhenBlockedByActiveItem ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_ChildWindows ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_ChildWindows | ImGuiHoveredFlags_RootWindow ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_RootWindow ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_AnyWindow ) ) ;
ImGui : : BeginChild ( " child " , ImVec2 ( 0 , 50 ) , true ) ;
ImGui : : Text ( " This is another child window for testing with the _ChildWindows flag. " ) ;
ImGui : : EndChild ( ) ;
if ( embed_all_inside_a_child_window )
EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
}
if ( ImGui : : CollapsingHeader ( " Layout " ) )
@ -2028,73 +2112,6 @@ void ImGui::ShowDemoWindow(bool* p_open)
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNode ( " Active, Focused & Hovered Test " ) )
{
static bool embed_all_inside_a_child_window = false ;
ImGui : : Checkbox ( " Embed everything inside a child window (for additional testing) " , & embed_all_inside_a_child_window ) ;
if ( embed_all_inside_a_child_window )
ImGui : : BeginChild ( " embeddingchild " , ImVec2 ( 0 , ImGui : : GetFontSize ( ) * 25 ) , true ) ;
// Testing IsWindowFocused() function with its various flags (note that the flags can be combined)
ImGui : : BulletText (
" IsWindowFocused() = %d \n "
" IsWindowFocused(_ChildWindows) = %d \n "
" IsWindowFocused(_ChildWindows|_RootWindow) = %d \n "
" IsWindowFocused(_RootWindow) = %d \n "
" IsWindowFocused(_AnyWindow) = %d \n " ,
ImGui : : IsWindowFocused ( ) ,
ImGui : : IsWindowFocused ( ImGuiFocusedFlags_ChildWindows ) ,
ImGui : : IsWindowFocused ( ImGuiFocusedFlags_ChildWindows | ImGuiFocusedFlags_RootWindow ) ,
ImGui : : IsWindowFocused ( ImGuiFocusedFlags_RootWindow ) ,
ImGui : : IsWindowFocused ( ImGuiFocusedFlags_AnyWindow ) ) ;
// Testing IsWindowHovered() function with its various flags (note that the flags can be combined)
ImGui : : BulletText (
" IsWindowHovered() = %d \n "
" IsWindowHovered(_AllowWhenBlockedByPopup) = %d \n "
" IsWindowHovered(_AllowWhenBlockedByActiveItem) = %d \n "
" IsWindowHovered(_ChildWindows) = %d \n "
" IsWindowHovered(_ChildWindows|_RootWindow) = %d \n "
" IsWindowHovered(_RootWindow) = %d \n "
" IsWindowHovered(_AnyWindow) = %d \n " ,
ImGui : : IsWindowHovered ( ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_AllowWhenBlockedByPopup ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_AllowWhenBlockedByActiveItem ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_ChildWindows ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_ChildWindows | ImGuiHoveredFlags_RootWindow ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_RootWindow ) ,
ImGui : : IsWindowHovered ( ImGuiHoveredFlags_AnyWindow ) ) ;
// Testing IsItemHovered() function (because BulletText is an item itself and that would affect the output of IsItemHovered, we pass all lines in a single items to shorten the code)
ImGui : : Button ( " ITEM " ) ;
ImGui : : BulletText (
" IsItemFocused() = %d \n "
" IsItemHovered() = %d \n "
" IsItemHovered(_AllowWhenBlockedByPopup) = %d \n "
" IsItemHovered(_AllowWhenBlockedByActiveItem) = %d \n "
" IsItemHovered(_AllowWhenOverlapped) = %d \n "
" IsItemHovered(_RectOnly) = %d \n "
" IsItemActive() = %d \n "
" IsItemDeactivated() = %d \n " ,
ImGui : : IsItemFocused ( ) ,
ImGui : : IsItemHovered ( ) ,
ImGui : : IsItemHovered ( ImGuiHoveredFlags_AllowWhenBlockedByPopup ) ,
ImGui : : IsItemHovered ( ImGuiHoveredFlags_AllowWhenBlockedByActiveItem ) ,
ImGui : : IsItemHovered ( ImGuiHoveredFlags_AllowWhenOverlapped ) ,
ImGui : : IsItemHovered ( ImGuiHoveredFlags_RectOnly ) ,
ImGui : : IsItemActive ( ) ,
ImGui : : IsItemDeactivated ( ) ) ;
ImGui : : BeginChild ( " child " , ImVec2 ( 0 , 50 ) , true ) ;
ImGui : : Text ( " This is another child window for testing IsWindowHovered() flags. " ) ;
ImGui : : EndChild ( ) ;
if ( embed_all_inside_a_child_window )
EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNode ( " Dragging " ) )
{
ImGui : : TextWrapped ( " You can use ImGui::GetMouseDragDelta(0) to query for the dragged amount on any widget. " ) ;