Add accessor to check if a filter accepts a given BufferId
[quassel.git] / src / qtui / chatscene.h
index 66026c1..fa44102 100644 (file)
@@ -26,7 +26,7 @@
 #include <QSet>
 
 #include "columnhandleitem.h"
-
+#include "messagefilter.h"
 
 class AbstractUiMsg;
 class ChatItem;
@@ -47,6 +47,7 @@ public:
   int sectionByScenePos(int x);
   inline int sectionByScenePos(const QPoint &pos) { return sectionByScenePos(pos.x()); }
   inline bool isSingleBufferScene() const { return _singleBufferScene; }
+  inline bool containsBuffer(const BufferId &id) const;
   inline ChatLine *chatLine(int row) { return (row < _lines.count()) ? _lines[row] : 0; }
 
   inline ColumnHandleItem *firstColumnHandle() const { return firstColHandle; }
@@ -88,6 +89,11 @@ private:
   QList<ChatLine *> _lines;
   bool _singleBufferScene;
 
+  // calls to QChatScene::sceneRect() are very expensive. As we manage the scenerect ourselves
+  // we store the size in a member variable.
+  QRectF _sceneRect;
+  void updateSceneRect(const QRectF &rect);
+
   ColumnHandleItem *firstColHandle, *secondColHandle;
   qreal firstColHandlePos, secondColHandlePos;
 
@@ -101,4 +107,8 @@ private:
   int _lastBacklogSize;
 };
 
+bool ChatScene::containsBuffer(const BufferId &id) const {
+  return qobject_cast<MessageFilter*>(model()) ? qobject_cast<MessageFilter*>(model())->containsBuffer(id) : false;
+}
+
 #endif