Make page container hug edges of dialog <3

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
TheKodeToad
2025-11-23 16:25:33 +00:00
parent 40d1dccb9b
commit 2b949d5fdd
9 changed files with 28 additions and 11 deletions

View File

@@ -76,7 +76,7 @@ InstanceWindow::InstanceWindow(InstancePtr instance, QWidget* parent) : QMainWin
{
auto horizontalLayout = new QHBoxLayout(this);
horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
horizontalLayout->setContentsMargins(6, -1, 6, -1);
horizontalLayout->setContentsMargins(0, 0, 6, 6);
auto btnHelp = new QPushButton(this);
btnHelp->setText(tr("Help"));

View File

@@ -92,11 +92,13 @@ InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr<PackProfile> profile, c
: QDialog(parent), profile(std::move(profile)), container(new PageContainer(this, QString(), this)), buttons(new QDialogButtonBox(this))
{
auto layout = new QVBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0);
container->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
layout->addWidget(container);
auto buttonLayout = new QHBoxLayout(this);
buttonLayout->setContentsMargins(0, 0, 6, 6);
auto refreshButton = new QPushButton(tr("&Refresh"), this);
connect(refreshButton, &QPushButton::clicked, this, [this] { pageCast(container->selectedPage())->loadList(); });
@@ -110,7 +112,7 @@ InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr<PackProfile> profile, c
connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject);
buttonLayout->addWidget(buttons);
layout->addLayout(buttonLayout);
container->addButtons(buttonLayout);
setWindowTitle(dialogTitle());
setWindowModality(Qt::WindowModal);
@@ -167,4 +169,4 @@ void InstallLoaderDialog::done(int result)
QDialog::done(result);
}
#include "InstallLoaderDialog.moc"
#include "InstallLoaderDialog.moc"

View File

@@ -95,6 +95,7 @@ NewInstanceDialog::NewInstanceDialog(const QString& initialGroup,
m_buttons = new QDialogButtonBox(QDialogButtonBox::Help | QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
m_container = new PageContainer(this, {}, this);
m_container->useSidebarStyle(false);
m_container->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Expanding);
m_container->layout()->setContentsMargins(0, 0, 0, 0);
ui->verticalLayout->insertWidget(2, m_container);

View File

@@ -61,6 +61,8 @@ ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent, const std::share
setWindowIcon(QIcon::fromTheme("new"));
m_buttons.setContentsMargins(0, 0, 6, 6);
// Bonk Qt over its stupid head and make sure it understands which button is the default one...
// See: https://stackoverflow.com/questions/24556831/qbuttonbox-set-default-button
auto OkButton = m_buttons.button(QDialogButtonBox::Ok);
@@ -114,6 +116,8 @@ void ResourceDownloadDialog::reject()
// won't work with subclasses if we put it in this ctor.
void ResourceDownloadDialog::initializeContainer()
{
layout()->setContentsMargins(0, 0, 0, 0);
m_container = new PageContainer(this, {}, this);
m_container->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Expanding);
m_container->layout()->setContentsMargins(0, 0, 0, 0);

View File

@@ -187,11 +187,14 @@ InstallDialog::InstallDialog(const QString& uid, BaseInstance* instance, QWidget
: QDialog(parent), container(new PageContainer(this, QString(), this)), buttons(new QDialogButtonBox(this))
{
auto layout = new QVBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0);
container->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
layout->addWidget(container);
auto buttonLayout = new QHBoxLayout(this);
buttonLayout->setContentsMargins(0, 0, 6, 6);
auto refreshLayout = new QHBoxLayout(this);
auto refreshButton = new QPushButton(tr("&Refresh"), this);
@@ -217,7 +220,7 @@ InstallDialog::InstallDialog(const QString& uid, BaseInstance* instance, QWidget
connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject);
buttonLayout->addWidget(buttons);
layout->addLayout(buttonLayout);
container->addButtons(buttonLayout);
setWindowTitle(dialogTitle());
setWindowModality(Qt::WindowModal);

View File

@@ -46,7 +46,7 @@ PageDialog::PageDialog(BasePageProvider* pageProvider, QString defaultId, QWidge
buttons->button(QDialogButtonBox::Ok)->setText(tr("&OK"));
buttons->button(QDialogButtonBox::Cancel)->setText(tr("&Cancel"));
buttons->button(QDialogButtonBox::Help)->setText(tr("Help"));
buttons->setContentsMargins(6, 0, 6, 0);
buttons->setContentsMargins(0, 0, 6, 6);
m_container->addButtons(buttons);
connect(buttons->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &PageDialog::accept);

View File

@@ -77,6 +77,8 @@ class PageEntryFilterModel : public QSortFilterProxyModel {
PageContainer::PageContainer(BasePageProvider* pageProvider, QString defaultId, QWidget* parent) : QWidget(parent)
{
createUI();
useSidebarStyle(true);
m_model = new PageModel(this);
m_proxyModel = new PageEntryFilterModel(this);
int counter = 0;
@@ -179,10 +181,10 @@ void PageContainer::createUI()
m_layout = new QGridLayout;
m_layout->addLayout(headerHLayout, 0, 1, 1, 1);
m_layout->addWidget(m_pageList, 0, 0, 2, 1);
m_layout->addWidget(m_pageList, 0, 0, 3, 1);
m_layout->addLayout(m_pageStack, 1, 1, 1, 1);
m_layout->setColumnStretch(1, 4);
m_layout->setContentsMargins(0, 0, 0, 6);
m_layout->setContentsMargins(0, 0, 0, 0);
setLayout(m_layout);
}
@@ -197,12 +199,16 @@ void PageContainer::retranslate()
void PageContainer::addButtons(QWidget* buttons)
{
m_layout->addWidget(buttons, 2, 0, 1, 2);
m_layout->addWidget(buttons, 2, 1, 1, 2);
}
void PageContainer::addButtons(QLayout* buttons)
{
m_layout->addLayout(buttons, 2, 0, 1, 2);
m_layout->addLayout(buttons, 2, 1, 1, 2);
}
void PageContainer::useSidebarStyle(bool sidebar) {
m_pageList->setProperty("_kde_side_panel_view", sidebar);
}
void PageContainer::showPage(int row)

View File

@@ -61,6 +61,9 @@ class PageContainer : public QWidget, public BasePageContainer {
void addButtons(QWidget* buttons);
void addButtons(QLayout* buttons);
void useSidebarStyle(bool sidebar);
/*
* Save any unsaved state and prepare to be closed.
* @return true if everything can be saved, false if there is something that requires attention

View File

@@ -89,8 +89,6 @@ class PageView : public QListView {
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding);
setItemDelegate(new PageViewDelegate(this));
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// Adjust margins when using Breeze theme
setProperty("_kde_side_panel_view", true);
}
virtual QSize sizeHint() const