@ -3526,8 +3526,9 @@ void ImGui::StartMouseMovingWindow(ImGuiWindow* window)
FocusWindow ( window ) ;
FocusWindow ( window ) ;
SetActiveID ( window - > MoveId , window ) ;
SetActiveID ( window - > MoveId , window ) ;
g . NavDisableHighlight = true ;
g . NavDisableHighlight = true ;
g . ActiveIdClickOffset = g . IO . MouseClickedPos [ 0 ] - window - > RootWindow - > Pos ;
g . ActiveIdNoClearOnFocusLoss = true ;
g . ActiveIdNoClearOnFocusLoss = true ;
g. ActiveIdClickOffset = g . IO . MousePos - window - > RootWindow - > Pos ;
SetActiveIdUsingNavAndKeys( ) ;
bool can_move_window = true ;
bool can_move_window = true ;
if ( ( window - > Flags & ImGuiWindowFlags_NoMove ) | | ( window - > RootWindow - > Flags & ImGuiWindowFlags_NoMove ) )
if ( ( window - > Flags & ImGuiWindowFlags_NoMove ) | | ( window - > RootWindow - > Flags & ImGuiWindowFlags_NoMove ) )
@ -3563,8 +3564,8 @@ void ImGui::UpdateMouseMovingWindowNewFrame()
}
}
else
else
{
{
ClearActiveID ( ) ;
g . MovingWindow = NULL ;
g . MovingWindow = NULL ;
ClearActiveID ( ) ;
}
}
}
}
else
else
@ -4155,7 +4156,7 @@ void ImGui::Initialize(ImGuiContext* context)
g . Viewports . push_back ( viewport ) ;
g . Viewports . push_back ( viewport ) ;
# ifdef IMGUI_HAS_DOCK
# ifdef IMGUI_HAS_DOCK
# endif // #ifdef IMGUI_HAS_DOCK
# endif
g . Initialized = true ;
g . Initialized = true ;
}
}
@ -4951,6 +4952,16 @@ void ImGui::SetItemUsingMouseWheel()
g . ActiveIdUsingMouseWheel = true ;
g . ActiveIdUsingMouseWheel = true ;
}
}
void ImGui : : SetActiveIdUsingNavAndKeys ( )
{
ImGuiContext & g = * GImGui ;
IM_ASSERT ( g . ActiveId ! = 0 ) ;
g . ActiveIdUsingNavDirMask = ~ ( ImU32 ) 0 ;
g . ActiveIdUsingNavInputMask = ~ ( ImU32 ) 0 ;
g . ActiveIdUsingKeyInputMask = ~ ( ImU64 ) 0 ;
NavMoveRequestCancel ( ) ;
}
ImVec2 ImGui : : GetItemRectMin ( )
ImVec2 ImGui : : GetItemRectMin ( )
{
{
ImGuiWindow * window = GetCurrentWindowRead ( ) ;
ImGuiWindow * window = GetCurrentWindowRead ( ) ;
@ -9608,7 +9619,7 @@ static void ImGui::NavUpdateWindowing()
if ( start_windowing_with_gamepad | | start_windowing_with_keyboard )
if ( start_windowing_with_gamepad | | start_windowing_with_keyboard )
if ( ImGuiWindow * window = g . NavWindow ? g . NavWindow : FindWindowNavFocusable ( g . WindowsFocusOrder . Size - 1 , - INT_MAX , - 1 ) )
if ( ImGuiWindow * window = g . NavWindow ? g . NavWindow : FindWindowNavFocusable ( g . WindowsFocusOrder . Size - 1 , - INT_MAX , - 1 ) )
{
{
g . NavWindowingTarget = g . NavWindowingTargetAnim = window - > RootWindow ; // FIXME-DOCK: Will need to use RootWindowDockStop
g . NavWindowingTarget = g . NavWindowingTargetAnim = window - > RootWindow ;
g . NavWindowingTimer = g . NavWindowingHighlightAlpha = 0.0f ;
g . NavWindowingTimer = g . NavWindowingHighlightAlpha = 0.0f ;
g . NavWindowingToggleLayer = start_windowing_with_keyboard ? false : true ;
g . NavWindowingToggleLayer = start_windowing_with_keyboard ? false : true ;
g . NavInputSource = start_windowing_with_keyboard ? ImGuiInputSource_Keyboard : ImGuiInputSource_Gamepad ;
g . NavInputSource = start_windowing_with_keyboard ? ImGuiInputSource_Keyboard : ImGuiInputSource_Gamepad ;
@ -9863,10 +9874,8 @@ bool ImGui::BeginDragDropSource(ImGuiDragDropFlags flags)
source_parent_id = window - > IDStack . back ( ) ;
source_parent_id = window - > IDStack . back ( ) ;
source_drag_active = IsMouseDragging ( mouse_button ) ;
source_drag_active = IsMouseDragging ( mouse_button ) ;
// Disable navigation and key inputs while dragging
// Disable navigation and key inputs while dragging + cancel existing request if any
g . ActiveIdUsingNavDirMask = ~ ( ImU32 ) 0 ;
SetActiveIdUsingNavAndKeys ( ) ;
g . ActiveIdUsingNavInputMask = ~ ( ImU32 ) 0 ;
g . ActiveIdUsingKeyInputMask = ~ ( ImU64 ) 0 ;
}
}
else
else
{
{
@ -10628,8 +10637,9 @@ static void WindowSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandl
window - > SettingsOffset = g . SettingsWindows . offset_from_ptr ( settings ) ;
window - > SettingsOffset = g . SettingsWindows . offset_from_ptr ( settings ) ;
}
}
IM_ASSERT ( settings - > ID = = window - > ID ) ;
IM_ASSERT ( settings - > ID = = window - > ID ) ;
settings - > Pos = ImVec2ih ( ( short ) window - > Pos . x , ( short ) window - > Pos . y ) ;
settings - > Pos = ImVec2ih ( window - > Pos ) ;
settings - > Size = ImVec2ih ( ( short ) window - > SizeFull . x , ( short ) window - > SizeFull . y ) ;
settings - > Size = ImVec2ih ( window - > SizeFull ) ;
settings - > Collapsed = window - > Collapsed ;
settings - > Collapsed = window - > Collapsed ;
}
}
@ -11233,6 +11243,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
Indent ( ) ;
Indent ( ) ;
Text ( " ActiveId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d, Source: %s " , g . ActiveId , g . ActiveIdPreviousFrame , g . ActiveIdTimer , g . ActiveIdAllowOverlap , input_source_names [ g . ActiveIdSource ] ) ;
Text ( " ActiveId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d, Source: %s " , g . ActiveId , g . ActiveIdPreviousFrame , g . ActiveIdTimer , g . ActiveIdAllowOverlap , input_source_names [ g . ActiveIdSource ] ) ;
Text ( " ActiveIdWindow: '%s' " , g . ActiveIdWindow ? g . ActiveIdWindow - > Name : " NULL " ) ;
Text ( " ActiveIdWindow: '%s' " , g . ActiveIdWindow ? g . ActiveIdWindow - > Name : " NULL " ) ;
Text ( " ActiveIdUsing: Wheel: %d, NavDirMask: %X, NavInputMask: %X, KeyInputMask: %llX " , g . ActiveIdUsingMouseWheel , g . ActiveIdUsingNavDirMask , g . ActiveIdUsingNavInputMask , g . ActiveIdUsingKeyInputMask ) ;
Text ( " HoveredId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d " , g . HoveredId , g . HoveredIdPreviousFrame , g . HoveredIdTimer , g . HoveredIdAllowOverlap ) ; // Data is "in-flight" so depending on when the Metrics window is called we may see current frame information or not
Text ( " HoveredId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d " , g . HoveredId , g . HoveredIdPreviousFrame , g . HoveredIdTimer , g . HoveredIdAllowOverlap ) ; // Data is "in-flight" so depending on when the Metrics window is called we may see current frame information or not
Text ( " DragDrop: %d, SourceId = 0x%08X, Payload \" %s \" (%d bytes) " , g . DragDropActive , g . DragDropPayload . SourceId , g . DragDropPayload . DataType , g . DragDropPayload . DataSize ) ;
Text ( " DragDrop: %d, SourceId = 0x%08X, Payload \" %s \" (%d bytes) " , g . DragDropActive , g . DragDropPayload . SourceId , g . DragDropPayload . DataType , g . DragDropPayload . DataSize ) ;
Unindent ( ) ;
Unindent ( ) ;
@ -11585,7 +11596,14 @@ void ImGui::DebugNodeTabBar(ImGuiTabBar* tab_bar, const char* label)
const char * buf_end = buf + IM_ARRAYSIZE ( buf ) ;
const char * buf_end = buf + IM_ARRAYSIZE ( buf ) ;
const bool is_active = ( tab_bar - > PrevFrameVisible > = GetFrameCount ( ) - 2 ) ;
const bool is_active = ( tab_bar - > PrevFrameVisible > = GetFrameCount ( ) - 2 ) ;
p + = ImFormatString ( p , buf_end - p , " %s 0x%08X (%d tabs)%s " , label , tab_bar - > ID , tab_bar - > Tabs . Size , is_active ? " " : " *Inactive* " ) ;
p + = ImFormatString ( p , buf_end - p , " %s 0x%08X (%d tabs)%s " , label , tab_bar - > ID , tab_bar - > Tabs . Size , is_active ? " " : " *Inactive* " ) ;
IM_UNUSED ( p ) ;
p + = ImFormatString ( p , buf_end - p , " { " ) ;
for ( int tab_n = 0 ; tab_n < ImMin ( tab_bar - > Tabs . Size , 3 ) ; tab_n + + )
{
ImGuiTabItem * tab = & tab_bar - > Tabs [ tab_n ] ;
p + = ImFormatString ( p , buf_end - p , " %s'%s' " ,
tab_n > 0 ? " , " : " " , ( tab - > NameOffset ! = - 1 ) ? tab_bar - > GetTabName ( tab ) : " ??? " ) ;
}
p + = ImFormatString ( p , buf_end - p , ( tab_bar - > Tabs . Size > 3 ) ? " ... } " : " } " ) ;
if ( ! is_active ) { PushStyleColor ( ImGuiCol_Text , GetStyleColorVec4 ( ImGuiCol_TextDisabled ) ) ; }
if ( ! is_active ) { PushStyleColor ( ImGuiCol_Text , GetStyleColorVec4 ( ImGuiCol_TextDisabled ) ) ; }
bool open = TreeNode ( label , " %s " , buf ) ;
bool open = TreeNode ( label , " %s " , buf ) ;
if ( ! is_active ) { PopStyleColor ( ) ; }
if ( ! is_active ) { PopStyleColor ( ) ; }
@ -11605,7 +11623,7 @@ void ImGui::DebugNodeTabBar(ImGuiTabBar* tab_bar, const char* label)
if ( SmallButton ( " < " ) ) { TabBarQueueReorder ( tab_bar , tab , - 1 ) ; } SameLine ( 0 , 2 ) ;
if ( SmallButton ( " < " ) ) { TabBarQueueReorder ( tab_bar , tab , - 1 ) ; } SameLine ( 0 , 2 ) ;
if ( SmallButton ( " > " ) ) { TabBarQueueReorder ( tab_bar , tab , + 1 ) ; } SameLine ( ) ;
if ( SmallButton ( " > " ) ) { TabBarQueueReorder ( tab_bar , tab , + 1 ) ; } SameLine ( ) ;
Text ( " %02d%c Tab 0x%08X '%s' Offset: %.1f, Width: %.1f/%.1f " ,
Text ( " %02d%c Tab 0x%08X '%s' Offset: %.1f, Width: %.1f/%.1f " ,
tab_n , ( tab - > ID = = tab_bar - > SelectedTabId ) ? ' * ' : ' ' , tab - > ID , ( tab - > NameOffset ! = - 1 ) ? tab_bar - > GetTabName ( tab ) : " ", tab - > Offset , tab - > Width , tab - > ContentWidth ) ;
tab_n , ( tab - > ID = = tab_bar - > SelectedTabId ) ? ' * ' : ' ' , tab - > ID , ( tab - > NameOffset ! = - 1 ) ? tab_bar - > GetTabName ( tab ) : " ??? ", tab - > Offset , tab - > Width , tab - > ContentWidth ) ;
PopID ( ) ;
PopID ( ) ;
}
}
TreePop ( ) ;
TreePop ( ) ;