Author: jghali
Date: Fri Jun  4 21:33:05 2021
New Revision: 24658

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=24658
Log:
Refactor ScTreeWidgetDelegate::paint() to exit early when possible

Modified:
    trunk/Scribus/scribus/ui/sctreewidget.cpp

Modified: trunk/Scribus/scribus/ui/sctreewidget.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24658&path=/trunk/Scribus/scribus/ui/sctreewidget.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/sctreewidget.cpp   (original)
+++ trunk/Scribus/scribus/ui/sctreewidget.cpp   Fri Jun  4 21:33:05 2021
@@ -38,52 +38,54 @@
 {
        const QAbstractItemModel *model = index.model();
        Q_ASSERT(model);
-       if (!model->parent(index).isValid())
-       {
-               // this is a top-level item.
-               QStyleOptionButton buttonOption;
-               buttonOption.state = option.state;
+
+       if (model->parent(index).isValid())
+       {
+               QItemDelegate::paint(painter, option, index);
+               return;
+       }
+
+       // This is a top-level item.
+       QStyleOptionButton buttonOption;
+       buttonOption.state = option.state;
 #if defined(Q_OS_MAC) || defined(Q_OS_WIN)
-               buttonOption.state |= QStyle::State_Raised;
+       buttonOption.state |= QStyle::State_Raised;
 #endif
-               buttonOption.state &= ~QStyle::State_HasFocus;
-               buttonOption.rect = option.rect;
-               buttonOption.palette = option.palette;
-               m_view->style()->drawControl(QStyle::CE_PushButton, 
&buttonOption, painter, m_view);
-
-               // Draw arrow
-               static const int i = 9; // ### hardcoded in qcommonstyle.cpp
-               QRect r = option.rect;
-               QPalette::ColorGroup arrowColorGroup = (option.state & 
QStyle::State_Enabled) ? QPalette::Active : QPalette::Disabled;
-               QColor arrowColor = option.palette.color(arrowColorGroup, 
QPalette::ButtonText);
-               painter->save();
-               painter->setBrush(arrowColor);
-               painter->setPen(Qt::NoPen);
-               QRect rect = QRect(r.left() + 6, r.top() + 6, r.height() - 12, 
r.height() - 12);
-               QPolygon pa(3);
-               if (m_view->isExpanded(index))
-               {
-                       pa.setPoint(0, rect.left(), rect.top());
-                       pa.setPoint(1, rect.right(), rect.top());
-                       pa.setPoint(2, rect.center().x(), rect.bottom());
-               }
-               else
-               {
-                       pa.setPoint(0, rect.left(), rect.top());
-                       pa.setPoint(1, rect.left(), rect.bottom());
-                       pa.setPoint(2, rect.right(), rect.center().y());
-               }
-               painter->setRenderHint(QPainter::Antialiasing, true);
-               painter->drawPolygon(pa);
-               painter->restore();
-
-               // Draw text
-               QRect textrect = QRect(r.left() + i * 2, r.top(), r.width() - 
((5 * i) / 2), r.height());
-               QString text = option.fontMetrics.elidedText(model->data(index, 
Qt::DisplayRole).toString(), Qt::ElideMiddle, textrect.width(), 
Qt::TextShowMnemonic);
-               m_view->style()->drawItemText(painter, textrect, 
Qt::AlignCenter | Qt::TextShowMnemonic, option.palette, (option.state & 
QStyle::State_Enabled), text, QPalette::Text);
-       }
-       else
-               QItemDelegate::paint(painter, option, index);
+       buttonOption.state &= ~QStyle::State_HasFocus;
+       buttonOption.rect = option.rect;
+       buttonOption.palette = option.palette;
+       m_view->style()->drawControl(QStyle::CE_PushButton, &buttonOption, 
painter, m_view);
+
+       // Draw arrow
+       static const int i = 9; // ### hardcoded in qcommonstyle.cpp
+       QRect r = option.rect;
+       QPalette::ColorGroup arrowColorGroup = (option.state & 
QStyle::State_Enabled) ? QPalette::Active : QPalette::Disabled;
+       QColor arrowColor = option.palette.color(arrowColorGroup, 
QPalette::ButtonText);
+       painter->save();
+       painter->setBrush(arrowColor);
+       painter->setPen(Qt::NoPen);
+       QRect rect = QRect(r.left() + 6, r.top() + 6, r.height() - 12, 
r.height() - 12);
+       QPolygon pa(3);
+       if (m_view->isExpanded(index))
+       {
+               pa.setPoint(0, rect.left(), rect.top());
+               pa.setPoint(1, rect.right(), rect.top());
+               pa.setPoint(2, rect.center().x(), rect.bottom());
+       }
+       else
+       {
+               pa.setPoint(0, rect.left(), rect.top());
+               pa.setPoint(1, rect.left(), rect.bottom());
+               pa.setPoint(2, rect.right(), rect.center().y());
+       }
+       painter->setRenderHint(QPainter::Antialiasing, true);
+       painter->drawPolygon(pa);
+       painter->restore();
+
+       // Draw text
+       QRect textrect = QRect(r.left() + i * 2, r.top(), r.width() - ((5 * i) 
/ 2), r.height());
+       QString text = option.fontMetrics.elidedText(model->data(index, 
Qt::DisplayRole).toString(), Qt::ElideMiddle, textrect.width(), 
Qt::TextShowMnemonic);
+       m_view->style()->drawItemText(painter, textrect, Qt::AlignCenter | 
Qt::TextShowMnemonic, option.palette, (option.state & QStyle::State_Enabled), 
text, QPalette::Text);
 }
 
 QSize ScTreeWidgetDelegate::sizeHint(const QStyleOptionViewItem &opt, const 
QModelIndex &index) const


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to