client: Fix Core Info session widget spacing
authorShane Synan <digitalcircuit36939@gmail.com>
Wed, 9 May 2018 01:28:29 +0000 (20:28 -0500)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 6 Jun 2018 17:37:44 +0000 (19:37 +0200)
Fix spacing for Core Info session widget by keeping only one stretch
layout item and inserting before it, rather than manually adding
stretches after every client list update.

See https://doc.qt.io/qt-5/qboxlayout.html#insertWidget

src/qtui/coreinfodlg.cpp

index e5eb7f4..2f8736c 100644 (file)
@@ -59,7 +59,10 @@ void CoreInfoDlg::coreInfoChanged(const QVariantMap &coreInfo) {
         coreSessionWidget->setData(peerMap);
         if (isNew) {
             _widgets[peerId] = coreSessionWidget;
-            ui.coreSessionContainer->addWidget(coreSessionWidget);
+            // Add this to the end of the session list, but before the default layout stretch item.
+            // The layout stretch item should never be removed, so count should always be >= 1.
+            ui.coreSessionContainer->insertWidget(ui.coreSessionContainer->count() - 1,
+                                                  coreSessionWidget, 0, Qt::AlignTop);
             connect(coreSessionWidget, SIGNAL(disconnectClicked(int)), this, SLOT(disconnectClicked(int)));
         }
     }
@@ -70,7 +73,6 @@ void CoreInfoDlg::coreInfoChanged(const QVariantMap &coreInfo) {
     }
 
     ui.coreSessionScrollArea->setVisible(coreSessionSupported);
-    ui.coreSessionContainer->addStretch(1);
 }