@ -3582,8 +3582,9 @@ void ImGui::StartMouseMovingWindow(ImGuiWindow* window)
FocusWindow ( window ) ;
SetActiveID ( window - > MoveId , window ) ;
g . NavDisableHighlight = true ;
g . ActiveIdNoClearOnFocusLoss = true ;
g . ActiveIdClickOffset = g . IO . MouseClickedPos [ 0 ] - window - > RootWindowDockTree - > Pos ;
g . ActiveIdNoClearOnFocusLoss = true ;
SetActiveIdUsingNavAndKeys ( ) ;
bool can_move_window = true ;
if ( ( window - > Flags & ImGuiWindowFlags_NoMove ) | | ( window - > RootWindowDockTree - > Flags & ImGuiWindowFlags_NoMove ) )
@ -3665,8 +3666,8 @@ void ImGui::UpdateMouseMovingWindowNewFrame()
// Clear the NoInput window flag set by the Viewport system
moving_window - > Viewport - > Flags & = ~ ImGuiViewportFlags_NoInputs ; // FIXME-VIEWPORT: Test engine managed to crash here because Viewport was NULL.
ClearActiveID ( ) ;
g . MovingWindow = NULL ;
ClearActiveID ( ) ;
}
}
else
@ -5213,6 +5214,16 @@ void ImGui::SetItemUsingMouseWheel()
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 ( )
{
ImGuiWindow * window = GetCurrentWindowRead ( ) ;
@ -10571,10 +10582,8 @@ bool ImGui::BeginDragDropSource(ImGuiDragDropFlags flags)
source_parent_id = window - > IDStack . back ( ) ;
source_drag_active = IsMouseDragging ( mouse_button ) ;
// Disable navigation and key inputs while dragging
g . ActiveIdUsingNavDirMask = ~ ( ImU32 ) 0 ;
g . ActiveIdUsingNavInputMask = ~ ( ImU32 ) 0 ;
g . ActiveIdUsingKeyInputMask = ~ ( ImU64 ) 0 ;
// Disable navigation and key inputs while dragging + cancel existing request if any
SetActiveIdUsingNavAndKeys ( ) ;
}
else
{
@ -16524,6 +16533,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
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 ( " ActiveIdWindow: '%s' " , g . ActiveIdWindow ? g . ActiveIdWindow - > Name : " NULL " ) ;
Text ( " ActiveIdUsing: Wheel: %d, NavDirMask: %X, NavInputMask: %X, KeyInputMask: %X " , 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 ( " DragDrop: %d, SourceId = 0x%08X, Payload \" %s \" (%d bytes) " , g . DragDropActive , g . DragDropPayload . SourceId , g . DragDropPayload . DataType , g . DragDropPayload . DataSize ) ;
Unindent ( ) ;