diff options
| author | Kevin Smith <git@kismith.co.uk> | 2012-01-12 09:11:12 (GMT) |
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2012-01-12 09:11:12 (GMT) |
| commit | a23fb5087b321cddd5b2eb97d8381b3ed742a874 (patch) | |
| tree | 2a695ebb12053808ef9932b631b9b0f34538b212 /Swift | |
| parent | 0f1163c722a39783b07ca6d4027010cb310e7b36 (diff) | |
| download | swift-contrib-a23fb5087b321cddd5b2eb97d8381b3ed742a874.zip swift-contrib-a23fb5087b321cddd5b2eb97d8381b3ed742a874.tar.bz2 | |
Don't crash with multiline status message and Qt-4.8.0
It looks as if 4.8 crashes if you ask it to elide text that has newlines in it. This change changes the rendering to show all lines as one. This slightly changes roster rendering for people with multiline messages.
Resolves: #1056
Diffstat (limited to 'Swift')
| -rw-r--r-- | Swift/QtUI/Roster/DelegateCommons.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Swift/QtUI/Roster/DelegateCommons.cpp b/Swift/QtUI/Roster/DelegateCommons.cpp index 0dc8a52..a575cb0 100644 --- a/Swift/QtUI/Roster/DelegateCommons.cpp +++ b/Swift/QtUI/Roster/DelegateCommons.cpp @@ -1,52 +1,52 @@ /* * Copyright (c) 2010 Kevin Smith * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #include "DelegateCommons.h" #include <QtScaledAvatarCache.h> #include <QFileInfo> namespace Swift { void DelegateCommons::drawElidedText(QPainter* painter, const QRect& region, const QString& text, int flags) { QString adjustedText(painter->fontMetrics().elidedText(text, Qt::ElideRight, region.width(), Qt::TextShowMnemonic)); - painter->drawText(region, flags, adjustedText); + painter->drawText(region, flags, adjustedText.simplified()); } void DelegateCommons::paintContact(QPainter* painter, const QStyleOptionViewItem& option, const QColor& nameColor, const QString& avatarPath, const QIcon& presenceIcon, const QString& name, const QString& statusText, int unreadCount, bool compact) const { painter->save(); QRect fullRegion(option.rect); if ( option.state & QStyle::State_Selected ) { painter->fillRect(fullRegion, option.palette.highlight()); painter->setPen(option.palette.highlightedText().color()); } else { painter->setPen(QPen(nameColor)); } QRect presenceIconRegion(QPoint(farLeftMargin, fullRegion.top()), QSize(presenceIconWidth, fullRegion.height() - verticalMargin)); int calculatedAvatarSize = presenceIconRegion.height(); //This overlaps the presenceIcon, so must be painted first QRect avatarRegion(QPoint(presenceIconRegion.right() - presenceIconWidth / 2, presenceIconRegion.top()), QSize(calculatedAvatarSize, calculatedAvatarSize)); QPixmap avatarPixmap; if (!compact && !avatarPath.isEmpty()) { QString scaledAvatarPath = QtScaledAvatarCache(avatarRegion.height()).getScaledAvatarPath(avatarPath); if (QFileInfo(scaledAvatarPath).exists()) { avatarPixmap.load(scaledAvatarPath); } } if (!compact && avatarPixmap.isNull()) { avatarPixmap = QPixmap(":/icons/avatar.png").scaled(avatarRegion.height(), avatarRegion.width(), Qt::KeepAspectRatio, Qt::SmoothTransformation); } if (!compact) { painter->drawPixmap(avatarRegion.topLeft() + QPoint(((avatarRegion.width() - avatarPixmap.width()) / 2), (avatarRegion.height() - avatarPixmap.height()) / 2), avatarPixmap); } //Paint the presence icon over the top of the avatar presenceIcon.paint(painter, presenceIconRegion, Qt::AlignBottom | Qt::AlignHCenter); |
Swift