diff --git a/application/MainWindow.cpp b/application/MainWindow.cpp index bec57c0d..015c7544 100644 --- a/application/MainWindow.cpp +++ b/application/MainWindow.cpp @@ -661,6 +661,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow // Create the instance list widget { view = new GroupView(ui->centralWidget); + view->setTextElideMode(Qt::TextElideMode::ElideRight); view->setSelectionMode(QAbstractItemView::SingleSelection); // FIXME: leaks ListViewDelegate diff --git a/application/groupview/InstanceDelegate.cpp b/application/groupview/InstanceDelegate.cpp index 9774e5e9..00b6308c 100644 --- a/application/groupview/InstanceDelegate.cpp +++ b/application/groupview/InstanceDelegate.cpp @@ -34,7 +34,6 @@ static void viewItemTextLayout(QTextLayout &textLayout, int lineWidth, qreal &he height = 0; widthUsed = 0; textLayout.beginLayout(); - QString str = textLayout.text(); while (true) { QTextLine line = textLayout.createLine(); @@ -190,11 +189,13 @@ void ListViewDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti QStyle *style = opt.widget ? opt.widget->style() : QApplication::style(); + // FIXME: Things go really weird with long instance names // const int iconSize = style->pixelMetric(QStyle::PM_IconViewIconSize); const int iconSize = 48; QRect iconbox = opt.rect; - const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, opt.widget) + 1; + const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, nullptr, opt.widget) + 1; QRect textRect = opt.rect; + textRect.setWidth(qMin(textRect.width(), iconbox.width())); QRect textHighlightRect = textRect; // clip the decoration on top, remove width padding textRect.adjust(textMargin, iconSize + textMargin + 5, -textMargin, 0); @@ -299,7 +300,7 @@ void ListViewDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti const int lineCount = textLayout.lineCount(); const QRect layoutRect = QStyle::alignedRect( - opt.direction, opt.displayAlignment, QSize(textRect.width(), int(height)), textRect); + opt.direction, opt.displayAlignment, QSize(textRect.width(), int(height)), textRect); const QPointF position = layoutRect.topLeft(); for (int i = 0; i < lineCount; ++i) {