virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
- virtual QTextLayout::FormatRange selectionFormat() const;
+ void paintBackground(QPainter *);
+ QVector<QTextLayout::FormatRange> selectionFormats() const;
virtual inline QVector<QTextLayout::FormatRange> additionalFormats() const { return QVector<QTextLayout::FormatRange>(); }
inline qint16 selectionStart() const { return _selectionStart; }
virtual QVector<QTextLayout::FormatRange> additionalFormats() const;
virtual inline void initLayout(QTextLayout *layout) const {
- initLayoutHelper(layout, QTextOption::WrapAnywhere);
+ initLayoutHelper(layout, QTextOption::WrapAtWordBoundaryOrAnywhere);
doLayout(layout);
}
- virtual void doLayout(QTextLayout *layout) const;
private:
struct Clickable;
class ActionProxy;
- class WrapColumnFinder;
ContentsChatItemPrivate *_data;
ContentsChatItemPrivate *privateData() const;
ContentsChatItemPrivate(const QList<ContentsChatItem::Clickable> &c, ContentsChatItem *parent) : contentsItem(parent), clickables(c) {}
};
-class ContentsChatItem::WrapColumnFinder {
-public:
- WrapColumnFinder(const ChatItem *parent);
- ~WrapColumnFinder();
-
- qint16 nextWrapColumn();
-
-private:
- const ChatItem *item;
- QTextLayout layout;
- QTextLine line;
- ChatLineModel::WrapList wrapList;
- qint16 wordidx;
- qint16 lineCount;
- qreal choppedTrailing;
-};
-
//! Acts as a proxy for Action signals targetted at a ContentsChatItem
/** Since a ChatItem is not a QObject, hence cannot receive signals, we use a static ActionProxy
* as a receiver instead. This avoids having to handle ChatItem actions (e.g. context menu entries)