Always fills the window with responsive size

This commit is contained in:
Edward Li 2022-10-20 18:30:04 +08:00 committed by flyinghead
parent 1dcf302665
commit 2b36953fdc
1 changed files with 9 additions and 6 deletions

View File

@ -2349,7 +2349,7 @@ static bool getGameImage(const GameBoxart *art, ImTextureID& textureId, bool all
return false; return false;
} }
static bool gameImageButton(ImTextureID textureId, const std::string& tooltip) static bool gameImageButton(ImTextureID textureId, const std::string& tooltip, ImVec2 size)
{ {
float ar = imguiDriver->getAspectRatio(textureId); float ar = imguiDriver->getAspectRatio(textureId);
ImVec2 uv0 { 0.f, 0.f }; ImVec2 uv0 { 0.f, 0.f };
@ -2365,7 +2365,7 @@ static bool gameImageButton(ImTextureID textureId, const std::string& tooltip)
uv0.x = -(ar - 1) / 2; uv0.x = -(ar - 1) / 2;
uv1.x = 1 + (ar - 1) / 2; uv1.x = 1 + (ar - 1) / 2;
} }
bool pressed = ImGui::ImageButton(textureId, ScaledVec2(200, 200) - ImGui::GetStyle().FramePadding * 2, uv0, uv1); bool pressed = ImGui::ImageButton(textureId, size - ImGui::GetStyle().FramePadding * 2, uv0, uv1);
gameTooltip(tooltip); gameTooltip(tooltip);
return pressed; return pressed;
@ -2412,6 +2412,9 @@ static void gui_display_content()
ImGui::BeginChild(ImGui::GetID("library"), ImVec2(0, 0), true, ImGuiWindowFlags_DragScrolling); ImGui::BeginChild(ImGui::GetID("library"), ImVec2(0, 0), true, ImGuiWindowFlags_DragScrolling);
{ {
const int itemsPerLine = std::max<int>(ImGui::GetContentRegionMax().x / (200 * settings.display.uiScale + ImGui::GetStyle().ItemSpacing.x), 1); const int itemsPerLine = std::max<int>(ImGui::GetContentRegionMax().x / (200 * settings.display.uiScale + ImGui::GetStyle().ItemSpacing.x), 1);
const int responsiveBoxSize = ImGui::GetContentRegionMax().x / itemsPerLine - ImGui::GetStyle().FramePadding.x * 2;
const ImVec2 responsiveBoxVec2 = ImVec2(responsiveBoxSize, responsiveBoxSize);
if (config::BoxartDisplayMode) if (config::BoxartDisplayMode)
ImGui::PushStyleVar(ImGuiStyleVar_SelectableTextAlign, ImVec2(0.5f, 0.5f)); ImGui::PushStyleVar(ImGuiStyleVar_SelectableTextAlign, ImVec2(0.5f, 0.5f));
else else
@ -2434,9 +2437,9 @@ static void gui_display_content()
loadedImages++; loadedImages++;
} }
if (textureId != ImTextureID()) if (textureId != ImTextureID())
pressed = gameImageButton(textureId, "Dreamcast BIOS"); pressed = gameImageButton(textureId, "Dreamcast BIOS", responsiveBoxVec2);
else else
pressed = ImGui::Button("Dreamcast BIOS", ScaledVec2(200, 200)); pressed = ImGui::Button("Dreamcast BIOS", responsiveBoxVec2);
} }
else else
{ {
@ -2484,10 +2487,10 @@ static void gui_display_content()
loadedImages++; loadedImages++;
} }
if (textureId != ImTextureID()) if (textureId != ImTextureID())
pressed = gameImageButton(textureId, game.name); pressed = gameImageButton(textureId, game.name, responsiveBoxVec2);
else else
{ {
pressed = ImGui::Button(gameName.c_str(), ScaledVec2(200, 200)); pressed = ImGui::Button(gameName.c_str(), responsiveBoxVec2);
gameTooltip(game.name); gameTooltip(game.name);
} }
} }