diff --git a/rpcs3/rpcs3qt/update_manager.cpp b/rpcs3/rpcs3qt/update_manager.cpp index 98809931da..5bba4497d6 100644 --- a/rpcs3/rpcs3qt/update_manager.cpp +++ b/rpcs3/rpcs3qt/update_manager.cpp @@ -386,23 +386,37 @@ void update_manager::update(bool auto_accept) // Build HTML changelog with clickable PR links when available QString changelog_html; + QString changelog_html_6; // First 6 entries for height cap + int changelog_count = 0; for (const changelog_data& entry : m_update_info.changelog) { const QString version_str = entry.version.isEmpty() ? tr("N/A") : entry.version; const QString title_str = entry.title.isEmpty() ? tr("N/A") : entry.title; - if (!changelog_html.isEmpty()) - changelog_html += QStringLiteral("
"); + QString entry_html; if (entry.pr > 0) { - changelog_html += tr("  • %0: %1 (#%2)").arg(version_str, title_str, QString::number(entry.pr)); + entry_html = tr("  • %0: %1 (#%2)").arg(version_str, title_str, QString::number(entry.pr)); } else { - changelog_html += tr("  • %0: %1").arg(version_str, title_str); + entry_html = tr("  • %0: %1").arg(version_str, title_str); } + + if (!changelog_html.isEmpty()) + changelog_html += QStringLiteral("
"); + changelog_html += entry_html; + + if (changelog_count < 6) + { + if (!changelog_html_6.isEmpty()) + changelog_html_6 += QStringLiteral("
"); + changelog_html_6 += entry_html; + } + + changelog_count++; } QMessageBox mb(QMessageBox::Icon::Question, tr("Update Available"), update_message, QMessageBox::Yes | QMessageBox::No, m_downloader->get_progress_dialog() ? m_downloader->get_progress_dialog() : m_parent); @@ -429,12 +443,23 @@ void update_manager::update(bool auto_accept) changelog_browser->setFrameShape(QFrame::NoFrame); changelog_browser->setLineWrapMode(QTextBrowser::NoWrap); changelog_browser->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - changelog_browser->setFixedWidth(500); changelog_browser->setHtml(QStringLiteral("

%0

%1").arg(tr("Changelog:"), changelog_html)); - // Use natural content height, cap at 200px to keep the dialog reasonable - const int doc_height = static_cast(changelog_browser->document()->size().height()); - changelog_browser->setFixedHeight(doc_height > 200 ? 200 : doc_height); + // Natural height for ≤6 entries, capped at 6-entry height for more + int browser_height; + + if (changelog_count > 6) + { + changelog_browser->setHtml(QStringLiteral("

%0

%1").arg(tr("Changelog:"), changelog_html_6)); + browser_height = static_cast(changelog_browser->document()->size().height()); + changelog_browser->setHtml(QStringLiteral("

%0

%1").arg(tr("Changelog:"), changelog_html)); + } + else + { + browser_height = static_cast(changelog_browser->document()->size().height()); + } + + changelog_browser->setFixedHeight(browser_height); changelog_browser->setVisible(false); const QString show_text = tr("Show Changelog");