MCPcopy Create free account
hub / github.com/Wemino/MarkerPatch / NavUpdateCreateWrappingRequest

Method NavUpdateCreateWrappingRequest

include/imgui/imgui.cpp:14459–14520  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14457}
14458
14459static void ImGui::NavUpdateCreateWrappingRequest()
14460{
14461 ImGuiContext& g = *GImGui;
14462 ImGuiWindow* window = g.NavWindow;
14463
14464 bool do_forward = false;
14465 ImRect bb_rel = window->NavRectRel[g.NavLayer];
14466 ImGuiDir clip_dir = g.NavMoveDir;
14467
14468 const ImGuiNavMoveFlags move_flags = g.NavMoveFlags;
14469 //const ImGuiAxis move_axis = (g.NavMoveDir == ImGuiDir_Up || g.NavMoveDir == ImGuiDir_Down) ? ImGuiAxis_Y : ImGuiAxis_X;
14470
14471 // Menu layer does not maintain scrolling / content size (#9178)
14472 ImVec2 wrap_size = (g.NavLayer == ImGuiNavLayer_Menu) ? window->Size : window->ContentSize + window->WindowPadding;
14473
14474 if (g.NavMoveDir == ImGuiDir_Left && (move_flags & (ImGuiNavMoveFlags_WrapX | ImGuiNavMoveFlags_LoopX)))
14475 {
14476 bb_rel.Min.x = bb_rel.Max.x = wrap_size.x;
14477 if (move_flags & ImGuiNavMoveFlags_WrapX)
14478 {
14479 bb_rel.TranslateY(-bb_rel.GetHeight()); // Previous row
14480 clip_dir = ImGuiDir_Up;
14481 }
14482 do_forward = true;
14483 }
14484 if (g.NavMoveDir == ImGuiDir_Right && (move_flags & (ImGuiNavMoveFlags_WrapX | ImGuiNavMoveFlags_LoopX)))
14485 {
14486 bb_rel.Min.x = bb_rel.Max.x = -window->WindowPadding.x;
14487 if (move_flags & ImGuiNavMoveFlags_WrapX)
14488 {
14489 bb_rel.TranslateY(+bb_rel.GetHeight()); // Next row
14490 clip_dir = ImGuiDir_Down;
14491 }
14492 do_forward = true;
14493 }
14494 if (g.NavMoveDir == ImGuiDir_Up && (move_flags & (ImGuiNavMoveFlags_WrapY | ImGuiNavMoveFlags_LoopY)))
14495 {
14496 bb_rel.Min.y = bb_rel.Max.y = wrap_size.y;
14497 if (move_flags & ImGuiNavMoveFlags_WrapY)
14498 {
14499 bb_rel.TranslateX(-bb_rel.GetWidth()); // Previous column
14500 clip_dir = ImGuiDir_Left;
14501 }
14502 do_forward = true;
14503 }
14504 if (g.NavMoveDir == ImGuiDir_Down && (move_flags & (ImGuiNavMoveFlags_WrapY | ImGuiNavMoveFlags_LoopY)))
14505 {
14506 bb_rel.Min.y = bb_rel.Max.y = -window->WindowPadding.y;
14507 if (move_flags & ImGuiNavMoveFlags_WrapY)
14508 {
14509 bb_rel.TranslateX(+bb_rel.GetWidth()); // Next column
14510 clip_dir = ImGuiDir_Right;
14511 }
14512 do_forward = true;
14513 }
14514 if (!do_forward)
14515 return;
14516 window->NavRectRel[g.NavLayer] = bb_rel;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected