|
|
@ -2135,16 +2135,18 @@ void ImGui::NewFrame()
|
|
|
|
// Are we using inputs? Tell user so they can capture/discard the inputs away from the rest of their application.
|
|
|
|
// Are we using inputs? Tell user so they can capture/discard the inputs away from the rest of their application.
|
|
|
|
// When clicking outside of a window we assume the click is owned by the application and won't request capture.
|
|
|
|
// When clicking outside of a window we assume the click is owned by the application and won't request capture.
|
|
|
|
int mouse_earliest_button_down = -1;
|
|
|
|
int mouse_earliest_button_down = -1;
|
|
|
|
|
|
|
|
bool mouse_any_down = false;
|
|
|
|
for (int i = 0; i < IM_ARRAYSIZE(g.IO.MouseDown); i++)
|
|
|
|
for (int i = 0; i < IM_ARRAYSIZE(g.IO.MouseDown); i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (g.IO.MouseClicked[i])
|
|
|
|
if (g.IO.MouseClicked[i])
|
|
|
|
g.IO.MouseDownOwned[i] = (g.HoveredWindow != NULL);
|
|
|
|
g.IO.MouseDownOwned[i] = (g.HoveredWindow != NULL) || (!g.OpenedPopupStack.empty());
|
|
|
|
|
|
|
|
mouse_any_down |= g.IO.MouseDown[i];
|
|
|
|
if (g.IO.MouseDown[i])
|
|
|
|
if (g.IO.MouseDown[i])
|
|
|
|
if (mouse_earliest_button_down == -1 || g.IO.MouseClickedTime[mouse_earliest_button_down] > g.IO.MouseClickedTime[i])
|
|
|
|
if (mouse_earliest_button_down == -1 || g.IO.MouseClickedTime[mouse_earliest_button_down] > g.IO.MouseClickedTime[i])
|
|
|
|
mouse_earliest_button_down = i;
|
|
|
|
mouse_earliest_button_down = i;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bool mouse_owned_by_application = mouse_earliest_button_down != -1 && !g.IO.MouseDownOwned[mouse_earliest_button_down];
|
|
|
|
bool mouse_owned_by_application = mouse_earliest_button_down != -1 && !g.IO.MouseDownOwned[mouse_earliest_button_down];
|
|
|
|
g.IO.WantCaptureMouse = (!mouse_owned_by_application && g.HoveredWindow != NULL) || (g.ActiveId != 0);
|
|
|
|
g.IO.WantCaptureMouse = (!mouse_owned_by_application && g.HoveredWindow != NULL) || (!mouse_owned_by_application && mouse_any_down) || (g.ActiveId != 0) || (!g.OpenedPopupStack.empty());
|
|
|
|
g.IO.WantCaptureKeyboard = (g.ActiveId != 0);
|
|
|
|
g.IO.WantCaptureKeyboard = (g.ActiveId != 0);
|
|
|
|
g.MouseCursor = ImGuiMouseCursor_Arrow;
|
|
|
|
g.MouseCursor = ImGuiMouseCursor_Arrow;
|
|
|
|
|
|
|
|
|
|
|
|