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

Method NavUpdateCreateWrappingRequest

include/imgui/imgui.cpp:14369–14430  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14367}
14368
14369static 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;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected