fix(UI): Resolve Weird Horizontal UI Issue

The QScrollArea containing the top navigation buttons was slightly too tall for horizontal UI positioning, causing an unwanted vertical scrollbar to appear. This has been fixed by calculating the exact required height for the buttons and enforcing it on the scroll area, while also setting the vertical scrollbar policy to ScrollBarAlwaysOff.

Signed-off-by: Collecting <collecting@noreply.localhost>
This commit is contained in:
Collecting
2025-12-16 07:12:19 +00:00
parent 5eed2b221b
commit 180606a166

View File

@@ -263,7 +263,26 @@ void ConfigureDialog::SetUIPositioning(const QString& positioning) {
button->setStyleSheet(QStringLiteral("text-align: left center; padding-left: 15px;")); button->setStyleSheet(QStringLiteral("text-align: left center; padding-left: 15px;"));
} }
h_layout->addStretch(1); h_layout->addStretch(1);
if (!tab_buttons.empty()) {
const int button_height = tab_buttons[0]->sizeHint().height();
const int margins = h_layout->contentsMargins().top() + h_layout->contentsMargins().bottom();
// The scroll area frame adds a few pixels, this accounts for it.
const int fixed_height = button_height + margins + 4;
ui->horizontalNavScrollArea->setMaximumHeight(fixed_height);
ui->horizontalNavScrollArea->setMinimumHeight(fixed_height);
ui->horizontalNavScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
QSizePolicy policy = ui->topButtonWidget->sizePolicy();
policy.setVerticalPolicy(QSizePolicy::Preferred);
ui->topButtonWidget->setSizePolicy(policy);
} else { // Vertical } else { // Vertical
ui->horizontalNavScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
ui->horizontalNavScrollArea->setMaximumHeight(QWIDGETSIZE_MAX);
ui->horizontalNavScrollArea->setMinimumHeight(0);
ui->horizontalNavScrollArea->hide(); ui->horizontalNavScrollArea->hide();
ui->nav_container->show(); ui->nav_container->show();
if (h_layout->count() > 0) { if (h_layout->count() > 0) {
@@ -278,6 +297,10 @@ void ConfigureDialog::SetUIPositioning(const QString& positioning) {
button->setStyleSheet(QStringLiteral("")); button->setStyleSheet(QStringLiteral(""));
} }
v_layout->addStretch(1); v_layout->addStretch(1);
QSizePolicy policy = ui->topButtonWidget->sizePolicy();
policy.setVerticalPolicy(QSizePolicy::Expanding);
ui->topButtonWidget->setSizePolicy(policy);
} }
} }