diff --git a/src/core/fullscreenui.cpp b/src/core/fullscreenui.cpp index 9d3331ef5..1fde2962a 100644 --- a/src/core/fullscreenui.cpp +++ b/src/core/fullscreenui.cpp @@ -2300,7 +2300,8 @@ bool FullscreenUI::OpenLoadStateSelectorForGameResume(const GameList::Entry* ent void FullscreenUI::DrawResumeStateSelector() { - if (!BeginFixedPopupDialog(LayoutScale(30.0f), LayoutScale(40.0f), ImVec2(LayoutScale(850.0f), 0.0f))) + if (!BeginFixedPopupDialog(LayoutScale(30.0f), LayoutScale(40.0f), ImVec2(LayoutScale(850.0f), 0.0f), + LayoutScale(0.0, 300.0f))) { ClearSaveStateEntryList(); return; @@ -2400,7 +2401,7 @@ void FullscreenUI::CopyTextToClipboard(std::string title, std::string_view text) void FullscreenUI::DrawAboutWindow() { if (!BeginFixedPopupDialog(LayoutScale(LAYOUT_LARGE_POPUP_PADDING), LayoutScale(LAYOUT_LARGE_POPUP_ROUNDING), - LayoutScale(1100.0f, 0.0f))) + LayoutScale(1100.0f, 0.0f), LayoutScale(0.0, 400.0f))) { return; } diff --git a/src/core/fullscreenui_settings.cpp b/src/core/fullscreenui_settings.cpp index e7f952234..acd9893f8 100644 --- a/src/core/fullscreenui_settings.cpp +++ b/src/core/fullscreenui_settings.cpp @@ -870,7 +870,7 @@ void FullscreenUI::DrawIntRangeSetting(SettingsInterface* bsi, std::string_view if (!IsFixedPopupDialogOpen(sstr) || !BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), - LayoutScale(600.0f, 0.0f))) + LayoutScale(600.0f, 0.0f), LayoutScale(0.0, 250.0f))) { return; } @@ -944,7 +944,7 @@ void FullscreenUI::DrawFloatRangeSetting(SettingsInterface* bsi, std::string_vie if (!IsFixedPopupDialogOpen(sstr) || !BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), - LayoutScale(600.0f, 0.0f))) + LayoutScale(600.0f, 0.0f), LayoutScale(0.0, 250.0f))) { return; } @@ -1029,7 +1029,7 @@ void FullscreenUI::DrawFloatSpinBoxSetting(SettingsInterface* bsi, std::string_v if (!IsFixedPopupDialogOpen(sstr) || !BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), - LayoutScale(650.0f, 0.0f))) + LayoutScale(650.0f, 0.0f), LayoutScale(0.0, 250.0f))) { return; } @@ -1177,7 +1177,7 @@ bool FullscreenUI::DrawIntRectSetting(SettingsInterface* bsi, std::string_view t if (!IsFixedPopupDialogOpen(sstr) || !BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), - ImVec2(LayoutScale(500.0f), 0.0f))) + ImVec2(LayoutScale(500.0f), 0.0f), LayoutScale(0.0, 250.0f))) { return false; } @@ -1304,7 +1304,7 @@ void FullscreenUI::DrawIntSpinBoxSetting(SettingsInterface* bsi, std::string_vie if (!IsFixedPopupDialogOpen(sstr) || !BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), - LayoutScale(650.0f, 0.0f))) + LayoutScale(650.0f, 0.0f), LayoutScale(0.0, 250.0f))) { return; } @@ -3018,7 +3018,7 @@ void FullscreenUI::DrawGameListSettingsPage() void FullscreenUI::DrawCoverDownloaderWindow() { if (!BeginFixedPopupDialog(LayoutScale(LAYOUT_LARGE_POPUP_PADDING), LayoutScale(LAYOUT_LARGE_POPUP_ROUNDING), - LayoutScale(1000.0f, 0.0f))) + LayoutScale(1000.0f, 0.0f), LayoutScale(0.0, 400.0f))) { return; } @@ -3424,7 +3424,7 @@ void FullscreenUI::DrawSpeedSelectorSetting(SettingsInterface* bsi, std::string_ if (!IsFixedPopupDialogOpen(value_text) || !BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), - LayoutScale(650.0f, 0.0f))) + LayoutScale(650.0f, 0.0f), LayoutScale(0.0, 250.0f))) { return; } @@ -5794,7 +5794,7 @@ void FullscreenUI::DrawAchievementsLoginWindow() static constexpr const char* LOGIN_PROGRESS_NAME = "AchievementsLogin"; if (!BeginFixedPopupDialog(LayoutScale(LAYOUT_LARGE_POPUP_PADDING), LayoutScale(LAYOUT_LARGE_POPUP_ROUNDING), - LayoutScale(600.0f, 0.0f))) + LayoutScale(600.0f, 0.0f), LayoutScale(0.0f, 250.0f))) { // NOTE: Deliberately memset()'ed because it's credentials. std::memset(s_settings_locals.achievements_login_username, 0, @@ -5847,7 +5847,8 @@ void FullscreenUI::DrawAchievementsLoginWindow() const float item_width = LayoutScale(550.0f); const ImGuiInputTextFlags extra_username_flags = - (ResetFocusHere() ? ImGuiInputTextFlags_AlwaysActivate : 0) | (is_logging_in ? ImGuiInputTextFlags_ReadOnly : 0); + ((ImGui::IsWindowAppearing() && ResetFocusHere()) ? ImGuiInputTextFlags_AlwaysActivate : 0) | + (is_logging_in ? ImGuiInputTextFlags_ReadOnly : 0); ImGui::SetCursorPosX((ImGui::GetWindowWidth() - item_width) * 0.5f); InputTextWithIcon("##username", ICON_FA_ID_CARD, FSUI_CSTR("User Name"), @@ -6179,7 +6180,7 @@ void FullscreenUI::DrawPatchesOrCheatsSettingsPage(bool cheats) if (IsFixedPopupDialogOpen(title) && BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), - LayoutScale(600.0f, 0.0f))) + LayoutScale(600.0f, 0.0f), LayoutScale(0.0, 250.0f))) { bool range_value_changed = false; diff --git a/src/core/fullscreenui_widgets.cpp b/src/core/fullscreenui_widgets.cpp index 8894848c3..1ff9d59b1 100644 --- a/src/core/fullscreenui_widgets.cpp +++ b/src/core/fullscreenui_widgets.cpp @@ -1971,8 +1971,12 @@ void FullscreenUI::CloseFixedPopupDialogImmediately() bool FullscreenUI::BeginFixedPopupDialog(float scaled_window_padding /* = LayoutScale(20.0f) */, float scaled_window_rounding /* = LayoutScale(20.0f) */, - const ImVec2& scaled_window_size /* = ImVec2(0.0f, 0.0f) */) + const ImVec2& scaled_window_size /* = ImVec2() */, + const ImVec2& min_window_size /* = ImVec2() */) { + if (min_window_size.x > 0.0f || min_window_size.y > 0.0f) + ImGui::SetNextWindowSizeConstraints(min_window_size, ImVec2(FLT_MAX, FLT_MAX)); + if (!s_state.fixed_popup_dialog.Begin(scaled_window_padding, scaled_window_rounding, scaled_window_size)) { s_state.fixed_popup_dialog.ClearState(); diff --git a/src/core/fullscreenui_widgets.h b/src/core/fullscreenui_widgets.h index add29be70..56ea770af 100644 --- a/src/core/fullscreenui_widgets.h +++ b/src/core/fullscreenui_widgets.h @@ -335,7 +335,7 @@ void CloseFixedPopupDialog(); void CloseFixedPopupDialogImmediately(); bool BeginFixedPopupDialog(float scaled_window_padding = LayoutScale(20.0f), float scaled_window_rounding = LayoutScale(20.0f), - const ImVec2& scaled_window_size = ImVec2(0.0f, 0.0f)); + const ImVec2& scaled_window_size = ImVec2(), const ImVec2& min_window_size = ImVec2()); void EndFixedPopupDialog(); void RenderOverlays();