[kde-doc-english] [trojita] src/Gui: GUI: resize the header columns *initially*, but respect the user preferences later on

Jan Kundrát jkt at flaska.net
Sun May 26 23:39:49 UTC 2013


Git commit 0e1a0409c82f460115a3f99ed63c4f5cdf804492 by Jan Kundrát.
Committed on 27/05/2013 at 00:42.
Pushed by jkt into branch 'master'.

GUI: resize the header columns *initially*, but respect the user preferences later on

M  +6    -2    src/Gui/MsgListView.cpp
M  +2    -1    src/Gui/MsgListView.h
M  +1    -3    src/Gui/Window.cpp

http://commits.kde.org/trojita/0e1a0409c82f460115a3f99ed63c4f5cdf804492

diff --git a/src/Gui/MsgListView.cpp b/src/Gui/MsgListView.cpp
index dc01ecd..6d97054 100644
--- a/src/Gui/MsgListView.cpp
+++ b/src/Gui/MsgListView.cpp
@@ -37,7 +37,7 @@
 namespace Gui
 {
 
-MsgListView::MsgListView(QWidget *parent): QTreeView(parent), m_autoActivateAfterKeyNavigation(true)
+MsgListView::MsgListView(QWidget *parent): QTreeView(parent), m_autoActivateAfterKeyNavigation(true), m_autoResizeSections(true)
 {
     connect(header(), SIGNAL(geometriesChanged()), this, SLOT(slotFixSize()));
     connect(this, SIGNAL(expanded(QModelIndex)), this, SLOT(slotExpandWholeSubtree(QModelIndex)));
@@ -237,6 +237,9 @@ void MsgListView::slotFixSize()
 #else
         header()->setResizeMode(i, resizeMode);
 #endif
+        if (m_autoResizeSections) {
+            setColumnWidth(i, sizeHintForColumn(i));
+        }
     }
 }
 
@@ -314,8 +317,9 @@ void MsgListView::slotHeaderSectionVisibilityToggled(int section)
     }
 }
 
-void MsgListView::updateActions()
+void MsgListView::updateActionsAfterRestoredState()
 {
+    m_autoResizeSections = false;
     QList<QAction *> actions = header()->actions();
     for (int i = 0; i < actions.size(); ++i) {
         actions[i]->setChecked(!header()->isSectionHidden(i));
diff --git a/src/Gui/MsgListView.h b/src/Gui/MsgListView.h
index 43232ca..465bab8 100644
--- a/src/Gui/MsgListView.h
+++ b/src/Gui/MsgListView.h
@@ -49,7 +49,7 @@ public:
     virtual ~MsgListView() {}
     void setModel(QAbstractItemModel *model);
     void setAutoActivateAfterKeyNavigation(bool enabled);
-    void updateActions();
+    void updateActionsAfterRestoredState();
 protected:
     void keyPressEvent(QKeyEvent *ke);
     void keyReleaseEvent(QKeyEvent *ke);
@@ -73,6 +73,7 @@ private:
     QSignalMapper *headerFieldsMapper;
     QTimer *m_naviActivationTimer;
     bool m_autoActivateAfterKeyNavigation;
+    bool m_autoResizeSections;
 };
 
 }
diff --git a/src/Gui/Window.cpp b/src/Gui/Window.cpp
index dff99b8..7bcdef8 100644
--- a/src/Gui/Window.cpp
+++ b/src/Gui/Window.cpp
@@ -2159,7 +2159,7 @@ void MainWindow::applySizesAndState()
         stream >> item;
         msgListWidget->tree->header()->restoreState(item);
         // got to manually update the state of the actions which control the visibility state
-        msgListWidget->tree->updateActions();
+        msgListWidget->tree->updateActionsAfterRestoredState();
     }
 }
 
@@ -2169,5 +2169,3 @@ void MainWindow::resizeEvent(QResizeEvent *)
 }
 
 }
-
-



More information about the kde-doc-english mailing list