+ //! Tell the view that this ChatLine has cached data
+ /** ChatLines cache some layout data that should be cleared as soon as it's no
+ * longer visible. A ChatLine caching data registers itself with this method to
+ * tell the view about it. The view will call ChatLine::clearCache() when
+ * appropriate.
+ * \param line The ChatLine having cached data
+ */
+ void setHasCache(ChatLine* line, bool hasCache = true);
+
+public slots:
+ inline virtual void clear() {}
+ void zoomIn();
+ void zoomOut();
+ void zoomOriginal();
+
+ void setMarkerLineVisible(bool visible = true);
+ void setMarkerLine(MsgId msgId);
+ void jumpToMarkerLine(bool requestBacklog);
+
+protected:
+ bool event(QEvent* event) override;
+ void resizeEvent(QResizeEvent* event) override;
+ void scrollContentsBy(int dx, int dy) override;
+
+protected slots:
+ virtual void verticalScrollbarChanged(int);
+
+private slots:
+ void lastLineChanged(QGraphicsItem* chatLine, qreal offset);
+ void adjustSceneRect();
+ void checkChatLineCaches();
+ void mouseMoveWhileSelecting(const QPointF& scenePos);
+ void scrollTimerTimeout();
+ void invalidateFilter();
+ void markerLineSet(BufferId buffer, MsgId msg);
+
+private:
+ void init(MessageFilter* filter);
+
+ AbstractBufferContainer* _bufferContainer;
+ ChatScene* _scene;
+ int _lastScrollbarPos;
+ qreal _currentScaleFactor;
+ QTimer _scrollTimer;
+ int _scrollOffset;
+ bool _invalidateFilter;
+ QSet<ChatLine*> _linesWithCache;
+ bool _firstTouchUpdateHappened = false;