MCPcopy Create free account
hub / github.com/Raais/ImStudio / NavUpdateCreateMoveRequest

Method NavUpdateCreateMoveRequest

src/third-party/imgui/imgui.cpp:10241–10347  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10239}
10240
10241void ImGui::NavUpdateCreateMoveRequest()
10242{
10243 ImGuiContext& g = *GImGui;
10244 ImGuiIO& io = g.IO;
10245 ImGuiWindow* window = g.NavWindow;
10246
10247 if (g.NavMoveForwardToNextFrame && window != NULL)
10248 {
10249 // Forwarding previous request (which has been modified, e.g. wrap around menus rewrite the requests with a starting rectangle at the other side of the window)
10250 // (preserve most state, which were already set by the NavMoveRequestForward() function)
10251 IM_ASSERT(g.NavMoveDir != ImGuiDir_None && g.NavMoveClipDir != ImGuiDir_None);
10252 IM_ASSERT(g.NavMoveFlags & ImGuiNavMoveFlags_Forwarded);
10253 IMGUI_DEBUG_LOG_NAV("[nav] NavMoveRequestForward %d\n", g.NavMoveDir);
10254 }
10255 else
10256 {
10257 // Initiate directional inputs request
10258 g.NavMoveDir = ImGuiDir_None;
10259 g.NavMoveFlags = ImGuiNavMoveFlags_None;
10260 g.NavMoveScrollFlags = ImGuiScrollFlags_None;
10261 if (window && !g.NavWindowingTarget && !(window->Flags & ImGuiWindowFlags_NoNavInputs))
10262 {
10263 const ImGuiInputReadMode read_mode = ImGuiInputReadMode_Repeat;
10264 if (!IsActiveIdUsingNavDir(ImGuiDir_Left) && (IsNavInputTest(ImGuiNavInput_DpadLeft, read_mode) || IsNavInputTest(ImGuiNavInput_KeyLeft_, read_mode))) { g.NavMoveDir = ImGuiDir_Left; }
10265 if (!IsActiveIdUsingNavDir(ImGuiDir_Right) && (IsNavInputTest(ImGuiNavInput_DpadRight, read_mode) || IsNavInputTest(ImGuiNavInput_KeyRight_, read_mode))) { g.NavMoveDir = ImGuiDir_Right; }
10266 if (!IsActiveIdUsingNavDir(ImGuiDir_Up) && (IsNavInputTest(ImGuiNavInput_DpadUp, read_mode) || IsNavInputTest(ImGuiNavInput_KeyUp_, read_mode))) { g.NavMoveDir = ImGuiDir_Up; }
10267 if (!IsActiveIdUsingNavDir(ImGuiDir_Down) && (IsNavInputTest(ImGuiNavInput_DpadDown, read_mode) || IsNavInputTest(ImGuiNavInput_KeyDown_, read_mode))) { g.NavMoveDir = ImGuiDir_Down; }
10268 }
10269 g.NavMoveClipDir = g.NavMoveDir;
10270 g.NavScoringNoClipRect = ImRect(+FLT_MAX, +FLT_MAX, -FLT_MAX, -FLT_MAX);
10271 }
10272
10273 // Update PageUp/PageDown/Home/End scroll
10274 // FIXME-NAV: Consider enabling those keys even without the master ImGuiConfigFlags_NavEnableKeyboard flag?
10275 const bool nav_keyboard_active = (io.ConfigFlags & ImGuiConfigFlags_NavEnableKeyboard) != 0;
10276 float scoring_rect_offset_y = 0.0f;
10277 if (window && g.NavMoveDir == ImGuiDir_None && nav_keyboard_active)
10278 scoring_rect_offset_y = NavUpdatePageUpPageDown();
10279 if (scoring_rect_offset_y != 0.0f)
10280 {
10281 g.NavScoringNoClipRect = window->InnerRect;
10282 g.NavScoringNoClipRect.TranslateY(scoring_rect_offset_y);
10283 }
10284
10285 // [DEBUG] Always send a request
10286#if IMGUI_DEBUG_NAV_SCORING
10287 if (io.KeyCtrl && IsKeyPressed(ImGuiKey_C))
10288 g.NavMoveDirForDebug = (ImGuiDir)((g.NavMoveDirForDebug + 1) & 3);
10289 if (io.KeyCtrl && g.NavMoveDir == ImGuiDir_None)
10290 {
10291 g.NavMoveDir = g.NavMoveDirForDebug;
10292 g.NavMoveFlags |= ImGuiNavMoveFlags_DebugNoResult;
10293 }
10294#endif
10295
10296 // Submit
10297 g.NavMoveForwardToNextFrame = false;
10298 if (g.NavMoveDir != ImGuiDir_None)

Callers

nothing calls this directly

Calls 9

IsActiveIdUsingNavDirFunction · 0.85
IsNavInputTestFunction · 0.85
WindowRectAbsToRelFunction · 0.85
ImVec2Function · 0.85
ImMinFunction · 0.85
WindowRectRelToAbsFunction · 0.85
ContainsMethod · 0.80
AddMethod · 0.80
ImRectFunction · 0.70

Tested by

no test coverage detected