diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index fb69ac3386a0044fb9af8ca5c9db1b880a4d172d..d4dd5aae7d39c083922b6fb9af4b3d53c1aad9d7 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -189,6 +189,26 @@ static QStandardItemModel *pageModel(const QList<IOptionsPage*> &pages, return model; } +// ----------- Pages tree view + +/** + * Special version of a QTreeView that has the width of the first column as + * minimum size. + */ +class PageTree : public QTreeView +{ +public: + PageTree(QWidget *parent = 0) : QTreeView(parent) + { + setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); + } + + virtual QSize sizeHint() const + { + return QSize(sizeHintForColumn(0) + frameWidth() * 2, 100); + } +}; + // ----------- SettingsDialog // Helpers to sort by category. id @@ -215,7 +235,7 @@ SettingsDialog::SettingsDialog(QWidget *parent, const QString &categoryId, m_applied(false), m_stackedLayout(new QStackedLayout), m_filterLineEdit(new Utils::FilterLineEdit), - m_pageTree(new QTreeView), + m_pageTree(new PageTree), m_headerLabel(new QLabel) { createGui(); @@ -235,7 +255,7 @@ SettingsDialog::SettingsDialog(QWidget *parent, const QString &categoryId, // Create pages with title labels with a larger, bold font, left-aligned // with the group boxes of the page. - foreach(IOptionsPage *page, m_pages) + foreach (IOptionsPage *page, m_pages) m_stackedLayout->addWidget(page->createPage(0)); QModelIndex initialIndex; @@ -251,7 +271,6 @@ SettingsDialog::SettingsDialog(QWidget *parent, const QString &categoryId, const QModelIndex proxyIndex = m_proxyModel->mapFromSource(initialIndex); m_pageTree->selectionModel()->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect); } - m_pageTree->resizeColumnToContents(0); // The order of the slot connection matters here, the filter slot // opens the matching page after the model has filtered. @@ -425,5 +444,13 @@ void SettingsDialog::done(int val) QDialog::done(val); } +/** + * Override to make sure the settings dialog starts up as small as possible. + */ +QSize SettingsDialog::sizeHint() const +{ + return minimumSize(); +} + } } diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.h b/src/plugins/coreplugin/dialogs/settingsdialog.h index 7113b0f3b08980908fe5b0a61460ae3e66d1dd98..cfc57d5f1c4bd7ea33aea82c608112b2f527d9cb 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.h +++ b/src/plugins/coreplugin/dialogs/settingsdialog.h @@ -69,6 +69,8 @@ public: // at least once bool execDialog(); + virtual QSize sizeHint() const; + public slots: void done(int); diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.ui b/src/plugins/coreplugin/dialogs/settingsdialog.ui deleted file mode 100644 index e2508cbdf1fcd3f600ac0bf1b8d8619d9eb544e0..0000000000000000000000000000000000000000 --- a/src/plugins/coreplugin/dialogs/settingsdialog.ui +++ /dev/null @@ -1,129 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>SettingsDialog</class> - <widget class="QDialog" name="SettingsDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>697</width> - <height>476</height> - </rect> - </property> - <property name="windowTitle"> - <string>Options</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QSplitter" name="splitter"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <widget class="QWidget" name=""> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="filterLayout"> - <item> - <widget class="QLineEdit" name="filterLineEdit"/> - </item> - <item> - <widget class="QToolButton" name="filterClearButton"> - <property name="toolTip"> - <string>Clear filter</string> - </property> - <property name="text"> - <string>Clear</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QTreeView" name="pageTree"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="layoutWidget"> - <layout class="QVBoxLayout"> - <property name="spacing"> - <number>6</number> - </property> - <property name="margin"> - <number>0</number> - </property> - <item> - <widget class="QStackedWidget" name="stackedPages"> - <property name="minimumSize"> - <size> - <width>350</width> - <height>250</height> - </size> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>SettingsDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>297</x> - <y>361</y> - </hint> - <hint type="destinationlabel"> - <x>297</x> - <y>193</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>SettingsDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>297</x> - <y>361</y> - </hint> - <hint type="destinationlabel"> - <x>297</x> - <y>193</y> - </hint> - </hints> - </connection> - </connections> -</ui>