Index: plugins/projectmanagerview/projectmanagerview.cpp
===================================================================
--- plugins/projectmanagerview/projectmanagerview.cpp
+++ plugins/projectmanagerview/projectmanagerview.cpp
@@ -140,6 +140,7 @@
// Need to set this to get horizontal scrollbar. Also needs to be done after
// the setModel call
m_ui->projectTreeView->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
+ m_ui->projectTreeView->header()->setStretchLastSection(false);
}
bool ProjectManagerView::eventFilter(QObject* obj, QEvent* event)
Index: plugins/projectmanagerview/projectmanagerview.ui
===================================================================
--- plugins/projectmanagerview/projectmanagerview.ui
+++ plugins/projectmanagerview/projectmanagerview.ui
@@ -17,7 +17,16 @@
Project Manager
-
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
0
-
@@ -38,6 +47,12 @@
Project Overview
+
+ QAbstractScrollArea::AdjustToContents
+
+
+ Qt::ElideNone
+
false
Index: plugins/projectmanagerview/projectmodelitemdelegate.cpp
===================================================================
--- plugins/projectmanagerview/projectmodelitemdelegate.cpp
+++ plugins/projectmanagerview/projectmodelitemdelegate.cpp
@@ -113,7 +113,7 @@
void ProjectModelItemDelegate::drawBranchName(QPainter* painter, const QStyleOptionViewItem& option,
const QRect& rect, const QString& branchName) const
{
- QString text = option.fontMetrics.elidedText(branchName, Qt::ElideRight, rect.width());
+ QString text = option.fontMetrics.elidedText(branchName, Qt::ElideNone, rect.width());
bool selected = option.state & QStyle::State_Selected;
QPalette::ColorGroup colorGroup = selected ? QPalette::Active : QPalette::Disabled;
@@ -156,5 +156,5 @@
}
QFontMetrics fm(painter->fontMetrics());
- painter->drawText(rect, fm.elidedText(text, Qt::ElideRight, rect.width()));
+ painter->drawText(rect, fm.elidedText(text, Qt::ElideNone, rect.width()));
}
Index: plugins/projectmanagerview/projecttreeview.h
===================================================================
--- plugins/projectmanagerview/projecttreeview.h
+++ plugins/projectmanagerview/projecttreeview.h
@@ -69,7 +69,9 @@
protected:
void keyPressEvent(QKeyEvent *event) override;
+ void resizeEvent(QResizeEvent *event) override;
void dropEvent(QDropEvent* event) override;
+ bool eventFilter(QObject*, QEvent*) override;
void drawBranches(QPainter* painter, const QRect& rect, const QModelIndex& index) const override;
private:
@@ -81,6 +83,7 @@
QPointer m_previousSelection;
QPointer m_tooltip;
QPersistentModelIndex m_idx;
+ bool m_isCocoa;
};
#endif // KDEVPLATFORM_PLUGIN_PROJECTTREEVIEW_H
Index: plugins/projectmanagerview/projecttreeview.cpp
===================================================================
--- plugins/projectmanagerview/projecttreeview.cpp
+++ plugins/projectmanagerview/projecttreeview.cpp
@@ -29,6 +29,7 @@
#include
#include
#include
+#include
#include
#include
@@ -114,6 +115,9 @@
ProjectTreeView::ProjectTreeView( QWidget *parent )
: QTreeView( parent ), m_previousSelection ( nullptr )
+#ifdef Q_OS_MACOS
+ , m_isCocoa(QGuiApplication::platformName() == QStringLiteral("cocoa"))
+#endif
{
header()->hide();
@@ -130,6 +134,8 @@
setAutoExpandDelay(300);
setItemDelegate(new ProjectModelItemDelegate(this));
+ setTextElideMode(Qt::ElideNone);
+
connect( this, &ProjectTreeView::customContextMenuRequested, this, &ProjectTreeView::popupContextMenu );
connect( this, &ProjectTreeView::activated, this, &ProjectTreeView::slotActivated );
@@ -139,6 +145,10 @@
this, &ProjectTreeView::restoreState );
connect( ICore::self()->projectController(), &IProjectController::projectClosed,
this, &ProjectTreeView::projectClosed );
+
+ // install the event filter that will filter out the horizontal component
+ // from scrolling in response to QWheelEvents (i.e. touch input)
+ viewport()->installEventFilter(this);
}
ProjectTreeView::~ProjectTreeView()
@@ -511,6 +521,43 @@
QTreeView::keyPressEvent(event);
}
+void ProjectTreeView::resizeEvent(QResizeEvent* event)
+{
+ header()->setMinimumSectionSize(viewport()->width());
+ QTreeView::resizeEvent(event);
+}
+
+bool ProjectTreeView::eventFilter(QObject* object, QEvent* event)
+{
+ switch (event->type()) {
+ case QEvent::Wheel: {
+ QWheelEvent *e = static_cast(event);
+ if ((e->pixelDelta().x() !=0 || e->angleDelta().x()!= 0
+ || e->orientation() == Qt::Orientation::Horizontal)
+#ifdef Q_OS_MACOS
+ // Cocoa: allow horizontal scrolling controlled by a physical mouse wheel
+ && (!m_isCocoa || e->source() != Qt::MouseEventNotSynthesized)
+#endif
+ ){
+ QPoint pixelDelta(e->pixelDelta()), angleDelta(e->angleDelta());
+ pixelDelta.setX(0);
+ angleDelta.setX(0);
+ // discard the original event
+ e->ignore();
+ if (!pixelDelta.isNull() || !angleDelta.isNull()) {
+ QWheelEvent filtered(e->posF(), e->globalPosF(), pixelDelta, angleDelta,
+ e->delta(), Qt::Orientation::Vertical, e->buttons(),
+ e->modifiers(), e->phase(), Qt::MouseEventSynthesizedByApplication, e->inverted());
+ QCoreApplication::sendEvent(object, &filtered);
+ }
+ return true;
+ }
+ break;
+ }
+ }
+ return QTreeView::eventFilter(object, event);
+}
+
void ProjectTreeView::drawBranches(QPainter* painter, const QRect& rect, const QModelIndex& index) const
{
if (WidgetColorizer::colorizeByProject()) {