From cdecaa5a80a9a6970915524101dae4c37895e797 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Wed, 12 Jun 2013 19:12:35 +0200 Subject: [PATCH] SettingsDialog: Update size of category view on showing/hiding scrollbar On a german locale the category view has a horizontal scrollbar. This is because the initial sizeHint is calculated while the vertical scrollbar is not visible. This patch ensures that the sizeHint is updated if the scrollbar is shown. Change-Id: Ic97c0c3650f765dbf6d8f84f2c168630c65ee89f Reviewed-by: Eike Ziller --- src/plugins/coreplugin/dialogs/settingsdialog.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index eca479ee400..97f37e0d966 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -248,6 +248,7 @@ public: { setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); setItemDelegate(new CategoryListViewDelegate(this)); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); } virtual QSize sizeHint() const @@ -257,6 +258,16 @@ public: width += verticalScrollBar()->width(); return QSize(width, 100); } + + // QListView installs a event filter on its scrollbars + virtual bool eventFilter(QObject *obj, QEvent *event) + { + if (obj == verticalScrollBar() + && (event->type() == QEvent::Show + || event->type() == QEvent::Hide)) + updateGeometry(); + return QListView::eventFilter(obj, event); + } }; // ----------- SettingsDialog