Index: plugins/projectmanagerview/projectmanagerview.cpp =================================================================== --- plugins/projectmanagerview/projectmanagerview.cpp +++ plugins/projectmanagerview/projectmanagerview.cpp @@ -140,25 +140,34 @@ // 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) { if (obj == m_ui->projectTreeView) { - if (event->type() == QEvent::KeyRelease) { - QKeyEvent* keyEvent = static_cast(event); - if (keyEvent->key() == Qt::Key_Delete && keyEvent->modifiers() == Qt::NoModifier) { - m_plugin->removeItems(selectedItems()); - return true; - } else if (keyEvent->key() == Qt::Key_F2 && keyEvent->modifiers() == Qt::NoModifier) { - m_plugin->renameItems(selectedItems()); - return true; - } else if (keyEvent->key() == Qt::Key_C && keyEvent->modifiers() == Qt::ControlModifier) { - m_plugin->copyFromContextMenu(); - return true; - } else if (keyEvent->key() == Qt::Key_V && keyEvent->modifiers() == Qt::ControlModifier) { - m_plugin->pasteFromContextMenu(); - return true; + switch (event->type()) { + case QEvent::KeyRelease: { + QKeyEvent* keyEvent = static_cast(event); + if (keyEvent->key() == Qt:: Key_Backspace && keyEvent->modifiers() == Qt::ControlModifier) { + m_plugin->removeItems(selectedItems()); + return true; + } + break; + } + case QEvent::KeyPress: { + QKeyEvent* keyEvent = static_cast(event); + if (keyEvent->key() == Qt::Key_F2 && keyEvent->modifiers() == Qt::NoModifier) { + m_plugin->renameItems(selectedItems()); + return true; + } else if (keyEvent->key() == Qt::Key_C && keyEvent->modifiers() == Qt::ControlModifier) { + m_plugin->copyFromContextMenu(); + return true; + } else if (keyEvent->key() == Qt::Key_V && keyEvent->modifiers() == Qt::ControlModifier) { + m_plugin->pasteFromContextMenu(); + return true; + } + break; } } } 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; + void wheelEvent(QWheelEvent *event) 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 @@ -114,6 +114,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 +133,8 @@ setAutoExpandDelay(300); setItemDelegate(new ProjectModelItemDelegate(this)); + setTextElideMode(Qt::ElideNone); + connect( this, &ProjectTreeView::customContextMenuRequested, this, &ProjectTreeView::popupContextMenu ); connect( this, &ProjectTreeView::activated, this, &ProjectTreeView::slotActivated ); @@ -511,6 +516,36 @@ QTreeView::keyPressEvent(event); } +void ProjectTreeView::resizeEvent(QResizeEvent *event) +{ + header()->setMinimumSectionSize(viewport()->width()); + QTreeView::resizeEvent(event); +} + +void ProjectTreeView::wheelEvent(QWheelEvent *e) +{ + 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(this, &filtered); + } + } + QTreeView::wheelEvent(e); +} + void ProjectTreeView::drawBranches(QPainter* painter, const QRect& rect, const QModelIndex& index) const { if (WidgetColorizer::colorizeByProject()) {