From a183bb8ea1464c2ea677f83c0512d3fa6feaa63c Mon Sep 17 00:00:00 2001
From: Daniel Teske <daniel.teske@digia.com>
Date: Wed, 20 Mar 2013 15:45:38 +0100
Subject: [PATCH] Utils::TreeWidgetColumStretcher: Generalize to support all
 QHeaderViews

I need this for a QTableView.

Change-Id: I07f4c6561abc2c62ce19a21a2233c65210329ef6
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 ...lumnstretcher.cpp => headerviewstretcher.cpp} | 16 ++++++++--------
 ...etcolumnstretcher.h => headerviewstretcher.h} | 12 ++++++------
 src/libs/utils/utils-lib.pri                     |  4 ++--
 src/libs/utils/utils.qbs                         |  4 ++--
 .../coreplugin/actionmanager/commandmappings.cpp |  4 ++--
 src/plugins/fakevim/fakevimplugin.cpp            |  1 -
 src/plugins/qtsupport/qtoptionspage.cpp          |  1 -
 7 files changed, 20 insertions(+), 22 deletions(-)
 rename src/libs/utils/{treewidgetcolumnstretcher.cpp => headerviewstretcher.cpp} (84%)
 rename src/libs/utils/{treewidgetcolumnstretcher.h => headerviewstretcher.h} (85%)

diff --git a/src/libs/utils/treewidgetcolumnstretcher.cpp b/src/libs/utils/headerviewstretcher.cpp
similarity index 84%
rename from src/libs/utils/treewidgetcolumnstretcher.cpp
rename to src/libs/utils/headerviewstretcher.cpp
index d2e02c780ea..cdd3c281084 100644
--- a/src/libs/utils/treewidgetcolumnstretcher.cpp
+++ b/src/libs/utils/headerviewstretcher.cpp
@@ -27,7 +27,7 @@
 **
 ****************************************************************************/
 
-#include "treewidgetcolumnstretcher.h"
+#include "headerviewstretcher.h"
 #include <QTreeWidget>
 #include <QHideEvent>
 #include <QHeaderView>
@@ -35,24 +35,24 @@
 using namespace Utils;
 
 /*!
-    \class Utils::TreeWidgetColumnStretcher
+    \class Utils::HeaderViewStretcher
 
-    \brief The class fixes QTreeWidget to resize all columns to contents, except one
+    \brief The class fixes QHeaderView to resize all columns to contents, except one
     stretching column.
 
     As opposed to standard QTreeWidget, all columns are
     still interactively resizable.
 */
 
-TreeWidgetColumnStretcher::TreeWidgetColumnStretcher(QTreeWidget *treeWidget, int columnToStretch)
-        : QObject(treeWidget->header()), m_columnToStretch(columnToStretch)
+HeaderViewStretcher::HeaderViewStretcher(QHeaderView *headerView, int columnToStretch)
+        : QObject(headerView), m_columnToStretch(columnToStretch)
 {
-    parent()->installEventFilter(this);
+    headerView->installEventFilter(this);
     QHideEvent fake;
-    TreeWidgetColumnStretcher::eventFilter(parent(), &fake);
+    HeaderViewStretcher::eventFilter(headerView, &fake);
 }
 
-bool TreeWidgetColumnStretcher::eventFilter(QObject *obj, QEvent *ev)
+bool HeaderViewStretcher::eventFilter(QObject *obj, QEvent *ev)
 {
     if (obj == parent()) {
         if (ev->type() == QEvent::Show) {
diff --git a/src/libs/utils/treewidgetcolumnstretcher.h b/src/libs/utils/headerviewstretcher.h
similarity index 85%
rename from src/libs/utils/treewidgetcolumnstretcher.h
rename to src/libs/utils/headerviewstretcher.h
index db658c3c2fd..0435c9f9850 100644
--- a/src/libs/utils/treewidgetcolumnstretcher.h
+++ b/src/libs/utils/headerviewstretcher.h
@@ -27,27 +27,27 @@
 **
 ****************************************************************************/
 
-#ifndef TREEWIDGETCOLUMNSTRETCHER_H
-#define TREEWIDGETCOLUMNSTRETCHER_H
+#ifndef HEADERVIEWSTRETCHER_H
+#define HEADERVIEWSTRETCHER_H
 
 #include "utils_global.h"
 #include <QObject>
 
 QT_BEGIN_NAMESPACE
-class QTreeWidget;
+class QHeaderView;
 QT_END_NAMESPACE
 
 namespace Utils {
 
-class QTCREATOR_UTILS_EXPORT TreeWidgetColumnStretcher : public QObject
+class QTCREATOR_UTILS_EXPORT HeaderViewStretcher : public QObject
 {
     const int m_columnToStretch;
 public:
-    explicit TreeWidgetColumnStretcher(QTreeWidget *treeWidget, int columnToStretch);
+    explicit HeaderViewStretcher(QHeaderView *headerView, int columnToStretch);
 
     virtual bool eventFilter(QObject *obj, QEvent *ev);
 };
 
 } // namespace Utils
 
-#endif // TREEWIDGETCOLUMNSTRETCHER_H
+#endif // HEADERVIEWSTRETCHER_H
diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri
index e1c41f54334..138c65bf45e 100644
--- a/src/libs/utils/utils-lib.pri
+++ b/src/libs/utils/utils-lib.pri
@@ -45,7 +45,7 @@ SOURCES += $$PWD/environment.cpp \
     $$PWD/consoleprocess.cpp \
     $$PWD/uncommentselection.cpp \
     $$PWD/parameteraction.cpp \
-    $$PWD/treewidgetcolumnstretcher.cpp \
+    $$PWD/headerviewstretcher.cpp \
     $$PWD/checkablemessagebox.cpp \
     $$PWD/styledbar.cpp \
     $$PWD/stylehelper.cpp \
@@ -129,7 +129,7 @@ HEADERS += \
     $$PWD/textfileformat.h \
     $$PWD/uncommentselection.h \
     $$PWD/parameteraction.h \
-    $$PWD/treewidgetcolumnstretcher.h \
+    $$PWD/headerviewstretcher.h \
     $$PWD/checkablemessagebox.h \
     $$PWD/qtcassert.h \
     $$PWD/styledbar.h \
diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs
index 4c1a220c4cf..885a6caa2eb 100644
--- a/src/libs/utils/utils.qbs
+++ b/src/libs/utils/utils.qbs
@@ -161,8 +161,8 @@ QtcLibrary {
         "tcpportsgatherer.h",
         "textfileformat.cpp",
         "textfileformat.h",
-        "treewidgetcolumnstretcher.cpp",
-        "treewidgetcolumnstretcher.h",
+        "headerviewstretcher.cpp",
+        "headerviewstretcher.h",
         "uncommentselection.cpp",
         "uncommentselection.h",
         "unixutils.cpp",
diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.cpp b/src/plugins/coreplugin/actionmanager/commandmappings.cpp
index 346f004711e..5f3a5724dbd 100644
--- a/src/plugins/coreplugin/actionmanager/commandmappings.cpp
+++ b/src/plugins/coreplugin/actionmanager/commandmappings.cpp
@@ -37,7 +37,7 @@
 #include "id.h"
 
 #include <utils/hostosinfo.h>
-#include <utils/treewidgetcolumnstretcher.h>
+#include <utils/headerviewstretcher.h>
 
 #include <QKeyEvent>
 #include <QShortcut>
@@ -90,7 +90,7 @@ QWidget *CommandMappings::createPage(QWidget *parent)
     connect(m_page->targetEdit, SIGNAL(textChanged(QString)),
         this, SLOT(targetIdentifierChanged()));
 
-    new Utils::TreeWidgetColumnStretcher(m_page->commandList, 1);
+    new Utils::HeaderViewStretcher(m_page->commandList->header(), 1);
 
     commandChanged(0);
 
diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index dc9e2bf97be..eef79203a4b 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -75,7 +75,6 @@
 #include <utils/hostosinfo.h>
 #include <utils/qtcassert.h>
 #include <utils/savedaction.h>
-#include <utils/treewidgetcolumnstretcher.h>
 #include <utils/stylehelper.h>
 
 #include <cpptools/cpptoolsconstants.h>
diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp
index 9f0c76932cb..732faf8a4c7 100644
--- a/src/plugins/qtsupport/qtoptionspage.cpp
+++ b/src/plugins/qtsupport/qtoptionspage.cpp
@@ -41,7 +41,6 @@
 
 #include <coreplugin/icore.h>
 #include <coreplugin/progressmanager/progressmanager.h>
-#include <utils/treewidgetcolumnstretcher.h>
 #include <utils/qtcassert.h>
 #include <utils/buildablehelperlibrary.h>
 #include <utils/pathchooser.h>
-- 
GitLab