Queue a mouse move event
| 1503 | |
| 1504 | // Queue a mouse move event |
| 1505 | void ImGuiIO::AddMousePosEvent(float x, float y) |
| 1506 | { |
| 1507 | IM_ASSERT(Ctx != NULL); |
| 1508 | ImGuiContext& g = *Ctx; |
| 1509 | if (!AppAcceptingEvents) |
| 1510 | return; |
| 1511 | |
| 1512 | // Apply same flooring as UpdateMouseInputs() |
| 1513 | ImVec2 pos((x > -FLT_MAX) ? ImFloorSigned(x) : x, (y > -FLT_MAX) ? ImFloorSigned(y) : y); |
| 1514 | |
| 1515 | // Filter duplicate |
| 1516 | const ImGuiInputEvent* latest_event = FindLatestInputEvent(&g, ImGuiInputEventType_MousePos); |
| 1517 | const ImVec2 latest_pos = latest_event ? ImVec2(latest_event->MousePos.PosX, latest_event->MousePos.PosY) : g.IO.MousePos; |
| 1518 | if (latest_pos.x == pos.x && latest_pos.y == pos.y) |
| 1519 | return; |
| 1520 | |
| 1521 | ImGuiInputEvent e; |
| 1522 | e.Type = ImGuiInputEventType_MousePos; |
| 1523 | e.Source = ImGuiInputSource_Mouse; |
| 1524 | e.EventId = g.InputEventsNextEventId++; |
| 1525 | e.MousePos.PosX = pos.x; |
| 1526 | e.MousePos.PosY = pos.y; |
| 1527 | e.MousePos.MouseSource = g.InputEventsNextMouseSource; |
| 1528 | g.InputEventsQueue.push_back(e); |
| 1529 | } |
| 1530 | |
| 1531 | void ImGuiIO::AddMouseButtonEvent(int mouse_button, bool down) |
| 1532 | { |
no test coverage detected