diff --git a/src/kpagedialog.cpp b/src/kpagedialog.cpp --- a/src/kpagedialog.cpp +++ b/src/kpagedialog.cpp @@ -26,14 +26,14 @@ #include "kpagedialog_p.h" #include +#include KPageDialog::KPageDialog(QWidget *parent, Qt::WindowFlags flags) : QDialog(parent, flags), d_ptr(new KPageDialogPrivate(this)) { Q_D(KPageDialog); d->mPageWidget = new KPageWidget(this); - d->mPageWidget->layout()->setContentsMargins(0, 0, 0, 0); d->mButtonBox = new QDialogButtonBox(this); d->mButtonBox->setObjectName(QStringLiteral("buttonbox")); @@ -81,12 +81,22 @@ void KPageDialog::setFaceType(FaceType faceType) { - d_func()->mPageWidget->setFaceType(static_cast(faceType)); + KPageWidget *pageWidget = d_func()->mPageWidget; + pageWidget->setFaceType(static_cast(faceType)); - if (faceType == Tabbed) { - layout()->setContentsMargins(6, 6, 6, 6); - } else { + // Use zero margins for dialogs with the sidebar style so that the sidebar + // can be flush with the window edge; margins for the content are added + // automatically + if (faceType == KPageWidget::Auto || faceType == KPageWidget::List){ layout()->setContentsMargins(0, 0, 0, 0); + } else { + const QStyle *style = pageWidget->style(); + layout()->setContentsMargins( + style->pixelMetric(QStyle::PM_LayoutLeftMargin), + style->pixelMetric(QStyle::PM_LayoutTopMargin), + style->pixelMetric(QStyle::PM_LayoutRightMargin), + style->pixelMetric(QStyle::PM_LayoutBottomMargin) + ); } } diff --git a/src/kpageview.cpp b/src/kpageview.cpp --- a/src/kpageview.cpp +++ b/src/kpageview.cpp @@ -320,7 +320,6 @@ { Q_Q(KPageView); layout = new QGridLayout(q); - layout->setContentsMargins(0, 0, 0, 0); stack = new KPageStackedWidget(q); titleWidget = new KTitleWidget(q); QPixmap emptyPixmap(22, 22); diff --git a/src/kpagewidget.cpp b/src/kpagewidget.cpp --- a/src/kpagewidget.cpp +++ b/src/kpagewidget.cpp @@ -81,11 +81,6 @@ KPageWidgetItem *KPageWidget::addPage(QWidget *widget, const QString &name) { - // force layout margin to zero so that it aligns well with title widget - if (widget->layout()) { - widget->layout()->setContentsMargins(0, 0, 0, 0); - } - return d_func()->model()->addPage(widget, name); }