the new chatwidget now highlights the first new message since your last visit (curren...
[quassel.git] / src / qtui / chatscene.cpp
index a6578fa..8bf8add 100644 (file)
@@ -23,7 +23,6 @@
 #include <QGraphicsSceneMouseEvent>
 #include <QPersistentModelIndex>
 
-#include "buffer.h"
 #include "chatitem.h"
 #include "chatline.h"
 #include "chatlinemodelitem.h"
@@ -31,6 +30,7 @@
 #include "client.h"
 #include "clientbacklogmanager.h"
 #include "columnhandleitem.h"
+#include "messagefilter.h"
 #include "qtui.h"
 #include "qtuisettings.h"
 
@@ -38,14 +38,21 @@ const qreal minContentsWidth = 200;
 
 ChatScene::ChatScene(QAbstractItemModel *model, const QString &idString, QObject *parent)
   : QGraphicsScene(parent),
-  _idString(idString),
-  _model(model)
+    _idString(idString),
+    _width(0),
+    _height(0),
+    _model(model),
+    _singleBufferScene(false),
+    _selectingItem(0),
+    _lastItem(0),
+    _selectionStart(-1),
+    _isSelecting(false),
+    _fetchingBacklog(false)
 {
-  _width = 0;
-  _selectingItem = 0;
-  _isSelecting = false;
-  _selectionStart = -1;
-  _fetchingBacklog = false;
+  MessageFilter *filter = qobject_cast<MessageFilter*>(model);
+  if(filter) {
+    _singleBufferScene = filter->isSingleBufferFilter();
+  }
 
   connect(this, SIGNAL(sceneRectChanged(const QRectF &)), this, SLOT(rectChanged(const QRectF &)));
 
@@ -305,3 +312,12 @@ void ChatScene::requestBacklogIfNeeded() {
     _lastBacklogSize = model()->rowCount();
   }
 }
+
+int ChatScene::sectionByScenePos(int x) {
+  if(x < firstColHandlePos)
+    return ChatLineModel::TimestampColumn;
+  if(x < secondColHandlePos)
+    return ChatLineModel::SenderColumn;
+
+  return ChatLineModel::ContentsColumn;
+}