// When dragging something, always refer to the last hovered viewport.
// When dragging something, always refer to the last hovered viewport.
// - when releasing a moving window we will revert to aiming behind (at viewport_hovered)
// - when releasing a moving window we will revert to aiming behind (at viewport_hovered)
// - when we are between viewports, our dragged preview will tend to show in the last viewport _even_ if we don't have tooltips in their viewports (when lacking monitor info)
// - when we are between viewports, our dragged preview will tend to show in the last viewport _even_ if we don't have tooltips in their viewports (when lacking monitor info)
// - consider the case of holding on a menu item to browse child menus: even thou a mouse button is held, there's no active id because menu items only react on mouse release.
// - consider the case of holding on a menu item to browse child menus: even thou a mouse button is held, there's no active id because menu items only react on mouse release.
// - When moving a window we can skip the search, which also conveniently bypasses the fact that window->WindowRectClipped is lagging as this point of the frame.
// - When moving a window we can skip the search, which also conveniently bypasses the fact that window->WindowRectClipped is lagging as this point of the frame.
// - We also support the moved window toggling the NoInputs flag after moving has started in order to be able to detect windows below it, which is useful for e.g. docking mechanisms.
// - We also support the moved window toggling the NoInputs flag after moving has started in order to be able to detect windows below it, which is useful for e.g. docking mechanisms.
ImVector<ImGuiViewportP*>Viewports;// Active viewports (always 1+, and generally 1 unless multi-viewports are enabled). Each viewports hold their copy of ImDrawData.
ImVector<ImGuiViewportP*>Viewports;// Active viewports (always 1+, and generally 1 unless multi-viewports are enabled). Each viewports hold their copy of ImDrawData.
ImGuiViewportP*CurrentViewport;// We track changes of viewport (happening in Begin) so we can call Platform_OnChangedViewport()
ImGuiViewportP*CurrentViewport;// We track changes of viewport (happening in Begin) so we can call Platform_OnChangedViewport()
ImGuiViewportP*MouseRefViewport;
ImGuiViewportP*MouseViewport;
ImGuiViewportP*MouseLastHoveredViewport;// Last known viewport that was hovered by mouse (even if we are not hovering any viewport any more)
ImGuiViewportP*MouseLastHoveredViewport;// Last known viewport that was hovered by mouse (even if we are not hovering any viewport any more)
ImGuiIDPlatformLastFocusedViewport;// Record of last focused platform window/viewport, when this changes we stamp the viewport as front-most
ImGuiIDPlatformLastFocusedViewport;// Record of last focused platform window/viewport, when this changes we stamp the viewport as front-most