FullscreenUI: Fix initial input not activating on some popup dialogs

e.g. Achievements login. Widgets were getting clipped.
pull/3782/head
Stenzek 1 month ago
parent 8569058649
commit ec212bfd19
No known key found for this signature in database

@ -2300,7 +2300,8 @@ bool FullscreenUI::OpenLoadStateSelectorForGameResume(const GameList::Entry* ent
void FullscreenUI::DrawResumeStateSelector() 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(); ClearSaveStateEntryList();
return; return;
@ -2400,7 +2401,7 @@ void FullscreenUI::CopyTextToClipboard(std::string title, std::string_view text)
void FullscreenUI::DrawAboutWindow() void FullscreenUI::DrawAboutWindow()
{ {
if (!BeginFixedPopupDialog(LayoutScale(LAYOUT_LARGE_POPUP_PADDING), LayoutScale(LAYOUT_LARGE_POPUP_ROUNDING), 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; return;
} }

@ -870,7 +870,7 @@ void FullscreenUI::DrawIntRangeSetting(SettingsInterface* bsi, std::string_view
if (!IsFixedPopupDialogOpen(sstr) || if (!IsFixedPopupDialogOpen(sstr) ||
!BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), !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; return;
} }
@ -944,7 +944,7 @@ void FullscreenUI::DrawFloatRangeSetting(SettingsInterface* bsi, std::string_vie
if (!IsFixedPopupDialogOpen(sstr) || if (!IsFixedPopupDialogOpen(sstr) ||
!BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), !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; return;
} }
@ -1029,7 +1029,7 @@ void FullscreenUI::DrawFloatSpinBoxSetting(SettingsInterface* bsi, std::string_v
if (!IsFixedPopupDialogOpen(sstr) || if (!IsFixedPopupDialogOpen(sstr) ||
!BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), !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; return;
} }
@ -1177,7 +1177,7 @@ bool FullscreenUI::DrawIntRectSetting(SettingsInterface* bsi, std::string_view t
if (!IsFixedPopupDialogOpen(sstr) || if (!IsFixedPopupDialogOpen(sstr) ||
!BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), !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; return false;
} }
@ -1304,7 +1304,7 @@ void FullscreenUI::DrawIntSpinBoxSetting(SettingsInterface* bsi, std::string_vie
if (!IsFixedPopupDialogOpen(sstr) || if (!IsFixedPopupDialogOpen(sstr) ||
!BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), !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; return;
} }
@ -3018,7 +3018,7 @@ void FullscreenUI::DrawGameListSettingsPage()
void FullscreenUI::DrawCoverDownloaderWindow() void FullscreenUI::DrawCoverDownloaderWindow()
{ {
if (!BeginFixedPopupDialog(LayoutScale(LAYOUT_LARGE_POPUP_PADDING), LayoutScale(LAYOUT_LARGE_POPUP_ROUNDING), 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; return;
} }
@ -3424,7 +3424,7 @@ void FullscreenUI::DrawSpeedSelectorSetting(SettingsInterface* bsi, std::string_
if (!IsFixedPopupDialogOpen(value_text) || if (!IsFixedPopupDialogOpen(value_text) ||
!BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), !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; return;
} }
@ -5794,7 +5794,7 @@ void FullscreenUI::DrawAchievementsLoginWindow()
static constexpr const char* LOGIN_PROGRESS_NAME = "AchievementsLogin"; static constexpr const char* LOGIN_PROGRESS_NAME = "AchievementsLogin";
if (!BeginFixedPopupDialog(LayoutScale(LAYOUT_LARGE_POPUP_PADDING), LayoutScale(LAYOUT_LARGE_POPUP_ROUNDING), 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. // NOTE: Deliberately memset()'ed because it's credentials.
std::memset(s_settings_locals.achievements_login_username, 0, std::memset(s_settings_locals.achievements_login_username, 0,
@ -5847,7 +5847,8 @@ void FullscreenUI::DrawAchievementsLoginWindow()
const float item_width = LayoutScale(550.0f); const float item_width = LayoutScale(550.0f);
const ImGuiInputTextFlags extra_username_flags = 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); ImGui::SetCursorPosX((ImGui::GetWindowWidth() - item_width) * 0.5f);
InputTextWithIcon("##username", ICON_FA_ID_CARD, FSUI_CSTR("User Name"), InputTextWithIcon("##username", ICON_FA_ID_CARD, FSUI_CSTR("User Name"),
@ -6179,7 +6180,7 @@ void FullscreenUI::DrawPatchesOrCheatsSettingsPage(bool cheats)
if (IsFixedPopupDialogOpen(title) && if (IsFixedPopupDialogOpen(title) &&
BeginFixedPopupDialog(LayoutScale(LAYOUT_SMALL_POPUP_PADDING), LayoutScale(LAYOUT_SMALL_POPUP_PADDING), 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; bool range_value_changed = false;

@ -1971,8 +1971,12 @@ void FullscreenUI::CloseFixedPopupDialogImmediately()
bool FullscreenUI::BeginFixedPopupDialog(float scaled_window_padding /* = LayoutScale(20.0f) */, bool FullscreenUI::BeginFixedPopupDialog(float scaled_window_padding /* = LayoutScale(20.0f) */,
float scaled_window_rounding /* = 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)) if (!s_state.fixed_popup_dialog.Begin(scaled_window_padding, scaled_window_rounding, scaled_window_size))
{ {
s_state.fixed_popup_dialog.ClearState(); s_state.fixed_popup_dialog.ClearState();

@ -335,7 +335,7 @@ void CloseFixedPopupDialog();
void CloseFixedPopupDialogImmediately(); void CloseFixedPopupDialogImmediately();
bool BeginFixedPopupDialog(float scaled_window_padding = LayoutScale(20.0f), bool BeginFixedPopupDialog(float scaled_window_padding = LayoutScale(20.0f),
float scaled_window_rounding = 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 EndFixedPopupDialog();
void RenderOverlays(); void RenderOverlays();

Loading…
Cancel
Save