eric6/Preferences/ConfigurationDialog.py

changeset 7749
285855999b4e
parent 7734
983d90b76cff
child 7765
72ea8b7452a4
--- a/eric6/Preferences/ConfigurationDialog.py	Sat Oct 03 18:11:45 2020 +0200
+++ b/eric6/Preferences/ConfigurationDialog.py	Sun Oct 04 15:25:17 2020 +0200
@@ -16,7 +16,7 @@
 from PyQt5.QtWidgets import (
     QSizePolicy, QSpacerItem, QWidget, QTreeWidget, QStackedWidget, QDialog,
     QSplitter, QScrollArea, QApplication, QDialogButtonBox, QFrame,
-    QVBoxLayout, QTreeWidgetItem, QLabel
+    QVBoxLayout, QTreeWidgetItem, QLabel, QAbstractScrollArea
 )
 
 from E5Gui.E5Application import e5App
@@ -496,7 +496,7 @@
         widget.
         """
         self.setObjectName("ConfigurationDialog")
-        self.resize(900, 650)
+        self.resize(900, 750)
         self.verticalLayout_2 = QVBoxLayout(self)
         self.verticalLayout_2.setSpacing(6)
         self.verticalLayout_2.setContentsMargins(6, 6, 6, 6)
@@ -524,7 +524,8 @@
         self.scrollArea.setFrameShape(QFrame.NoFrame)
         self.scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
         self.scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
-        self.scrollArea.setWidgetResizable(True)
+        self.scrollArea.setWidgetResizable(False)
+        self.scrollArea.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents)
         self.scrollArea.setObjectName("scrollArea")
         
         self.configStack = QStackedWidget()
@@ -723,18 +724,7 @@
                     if item.data(0, Qt.UserRole) == pageName:
                         self.configList.setCurrentItem(item)
         self.configStack.setCurrentWidget(page)
-        ssize = self.scrollArea.size()
-        if self.scrollArea.horizontalScrollBar():
-            ssize.setHeight(
-                ssize.height() -
-                self.scrollArea.horizontalScrollBar().height() - 2)
-        if self.scrollArea.verticalScrollBar():
-            ssize.setWidth(
-                ssize.width() -
-                self.scrollArea.verticalScrollBar().width() - 2)
-        psize = page.minimumSizeHint()
-        self.configStack.resize(max(ssize.width(), psize.width()),
-                                max(ssize.height(), psize.height()))
+        self.__resizeConfigStack()
         
         if page != self.emptyPage:
             page.polishPage()
@@ -751,7 +741,33 @@
                 sb.setValue(0)
         
         self.__currentConfigurationPageName = pageName
+    
+    def resizeEvent(self, evt):
+        """
+        Protected method to handle the resizing of the widget.
         
+        @param evt reference to the event object
+        @type QResizeEvent
+        """
+        self.__resizeConfigStack()
+    
+    def __resizeConfigStack(self):
+        """
+        Private method to resize the stack of configuration pages.
+        """
+        ssize = self.scrollArea.size()
+        if self.scrollArea.horizontalScrollBar():
+            ssize.setHeight(
+                ssize.height() -
+                self.scrollArea.horizontalScrollBar().height() - 2)
+        if self.scrollArea.verticalScrollBar():
+            ssize.setWidth(
+                ssize.width() -
+                self.scrollArea.verticalScrollBar().width() - 2)
+        psize = self.configStack.currentWidget().sizeHint()
+        self.configStack.resize(max(ssize.width(), psize.width()),
+                                max(ssize.height(), psize.height()))
+    
     def getConfigurationPageName(self):
         """
         Public method to get the page name of the current page.

eric ide

mercurial