Remove the word boundary cache
[quassel.git] / src / qtui / chatitem.h
index c73d7c1..cc37dac 100644 (file)
@@ -83,7 +83,8 @@ protected:
   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; }
@@ -171,7 +172,7 @@ public:
   virtual inline int type() const { return Type; }
 
   inline ChatLineModel::ColumnType column() const { return ChatLineModel::ContentsColumn; }
-  inline QFontMetricsF *fontMetrics() const { return _fontMetrics; }
+  QFontMetricsF *fontMetrics() const;
 
 protected:
   virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
@@ -185,15 +186,13 @@ protected:
   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;
@@ -242,23 +241,6 @@ struct ContentsChatItemPrivate {
   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)