From 064b5f851c462671d805b5a1cebf1b69e0423bce Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 9 Mar 2014 15:04:44 +0100 Subject: [PATCH] + issue #0000953: No scroll bar on preferences dialog window --- src/Gui/DlgPreferencesImp.cpp | 26 ++++++++++++++++++++++++-- src/Gui/DlgPreferencesImp.h | 1 + 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Gui/DlgPreferencesImp.cpp b/src/Gui/DlgPreferencesImp.cpp index 6f96fc9e4..e52d6486e 100644 --- a/src/Gui/DlgPreferencesImp.cpp +++ b/src/Gui/DlgPreferencesImp.cpp @@ -28,8 +28,10 @@ # include # include # include +# include # include # include +# include #endif #include @@ -253,8 +255,9 @@ void DlgPreferencesImp::resizeEvent(QResizeEvent* ev) if (canEmbedScrollArea) { // embed the widget stack into a scroll area if the size is // bigger than the available desktop - int maxHeight = QApplication::desktop()->height(); - int maxWidth = QApplication::desktop()->width(); + QRect rect = QApplication::desktop()->availableGeometry(); + int maxHeight = rect.height(); + int maxWidth = rect.width(); if (height() > maxHeight || width() > maxWidth) { canEmbedScrollArea = false; ui->hboxLayout->removeWidget(ui->tabWidgetStack); @@ -263,11 +266,30 @@ void DlgPreferencesImp::resizeEvent(QResizeEvent* ev) scrollArea->setWidgetResizable(true); scrollArea->setWidget(ui->tabWidgetStack); ui->hboxLayout->addWidget(scrollArea); + + // if possible the minimum width should so that it doesn't show + // a horizontal scroll bar. + QScrollBar* bar = scrollArea->verticalScrollBar(); + if (bar) { + int newWidth = width() + bar->width(); + newWidth = std::min(newWidth, maxWidth); + int newHeight = std::min(height(), maxHeight-30); + QMetaObject::invokeMethod(this, "resizeWindow", + Qt::QueuedConnection, + QGenericReturnArgument(), + Q_ARG(int, newWidth), + Q_ARG(int, newHeight)); + } } } QDialog::resizeEvent(ev); } +void DlgPreferencesImp::resizeWindow(int w, int h) +{ + resize(w, h); +} + void DlgPreferencesImp::changeEvent(QEvent *e) { if (e->type() == QEvent::LanguageChange) { diff --git a/src/Gui/DlgPreferencesImp.h b/src/Gui/DlgPreferencesImp.h index 03dc17a92..878628347 100644 --- a/src/Gui/DlgPreferencesImp.h +++ b/src/Gui/DlgPreferencesImp.h @@ -126,6 +126,7 @@ protected: protected Q_SLOTS: void changeGroup(QListWidgetItem *current, QListWidgetItem *previous); void on_buttonBox_clicked(QAbstractButton*); + void resizeWindow(int w, int h); private: /** @name for internal use only */