| 14367 | } |
| 14368 | |
| 14369 | static void ImGui::NavUpdateCreateWrappingRequest() |
| 14370 | { |
| 14371 | ImGuiContext& g = *GImGui; |
| 14372 | ImGuiWindow* window = g.NavWindow; |
| 14373 | |
| 14374 | bool do_forward = false; |
| 14375 | ImRect bb_rel = window->NavRectRel[g.NavLayer]; |
| 14376 | ImGuiDir clip_dir = g.NavMoveDir; |
| 14377 | |
| 14378 | const ImGuiNavMoveFlags move_flags = g.NavMoveFlags; |
| 14379 | //const ImGuiAxis move_axis = (g.NavMoveDir == ImGuiDir_Up || g.NavMoveDir == ImGuiDir_Down) ? ImGuiAxis_Y : ImGuiAxis_X; |
| 14380 | |
| 14381 | // Menu layer does not maintain scrolling / content size (#9178) |
| 14382 | ImVec2 wrap_size = (g.NavLayer == ImGuiNavLayer_Menu) ? window->Size : window->ContentSize + window->WindowPadding; |
| 14383 | |
| 14384 | if (g.NavMoveDir == ImGuiDir_Left && (move_flags & (ImGuiNavMoveFlags_WrapX | ImGuiNavMoveFlags_LoopX))) |
| 14385 | { |
| 14386 | bb_rel.Min.x = bb_rel.Max.x = wrap_size.x; |
| 14387 | if (move_flags & ImGuiNavMoveFlags_WrapX) |
| 14388 | { |
| 14389 | bb_rel.TranslateY(-bb_rel.GetHeight()); // Previous row |
| 14390 | clip_dir = ImGuiDir_Up; |
| 14391 | } |
| 14392 | do_forward = true; |
| 14393 | } |
| 14394 | if (g.NavMoveDir == ImGuiDir_Right && (move_flags & (ImGuiNavMoveFlags_WrapX | ImGuiNavMoveFlags_LoopX))) |
| 14395 | { |
| 14396 | bb_rel.Min.x = bb_rel.Max.x = -window->WindowPadding.x; |
| 14397 | if (move_flags & ImGuiNavMoveFlags_WrapX) |
| 14398 | { |
| 14399 | bb_rel.TranslateY(+bb_rel.GetHeight()); // Next row |
| 14400 | clip_dir = ImGuiDir_Down; |
| 14401 | } |
| 14402 | do_forward = true; |
| 14403 | } |
| 14404 | if (g.NavMoveDir == ImGuiDir_Up && (move_flags & (ImGuiNavMoveFlags_WrapY | ImGuiNavMoveFlags_LoopY))) |
| 14405 | { |
| 14406 | bb_rel.Min.y = bb_rel.Max.y = wrap_size.y; |
| 14407 | if (move_flags & ImGuiNavMoveFlags_WrapY) |
| 14408 | { |
| 14409 | bb_rel.TranslateX(-bb_rel.GetWidth()); // Previous column |
| 14410 | clip_dir = ImGuiDir_Left; |
| 14411 | } |
| 14412 | do_forward = true; |
| 14413 | } |
| 14414 | if (g.NavMoveDir == ImGuiDir_Down && (move_flags & (ImGuiNavMoveFlags_WrapY | ImGuiNavMoveFlags_LoopY))) |
| 14415 | { |
| 14416 | bb_rel.Min.y = bb_rel.Max.y = -window->WindowPadding.y; |
| 14417 | if (move_flags & ImGuiNavMoveFlags_WrapY) |
| 14418 | { |
| 14419 | bb_rel.TranslateX(+bb_rel.GetWidth()); // Next column |
| 14420 | clip_dir = ImGuiDir_Right; |
| 14421 | } |
| 14422 | do_forward = true; |
| 14423 | } |
| 14424 | if (!do_forward) |
| 14425 | return; |
| 14426 | window->NavRectRel[g.NavLayer] = bb_rel; |
nothing calls this directly
no outgoing calls
no test coverage detected