Test our newly acquired shortcut capabilities by finally allowing Ctrl+F to trigger...
[quassel.git] / src / qtui / chatscene.cpp
index f9f7b17..c3a07b1 100644 (file)
@@ -32,6 +32,7 @@
 #include "columnhandleitem.h"
 #include "messagefilter.h"
 #include "qtui.h"
+#include "qtuistyle.h"
 #include "chatviewsettings.h"
 
 const qreal minContentsWidth = 200;
@@ -41,6 +42,7 @@ ChatScene::ChatScene(QAbstractItemModel *model, const QString &idString, qreal w
     _idString(idString),
     _model(model),
     _singleBufferScene(false),
+    _sceneRect(0, 0, width, 0),
     _selectingItem(0),
     _selectionStart(-1),
     _isSelecting(false),
@@ -88,8 +90,8 @@ ChatScene::~ChatScene() {
 void ChatScene::rowsInserted(const QModelIndex &index, int start, int end) {
   Q_UNUSED(index);
   qreal h = 0;
-  qreal y = sceneRect().y();
-  qreal width = sceneRect().width();
+  qreal y = _sceneRect.y();
+  qreal width = _sceneRect.width();
   bool atTop = true;
   bool atBottom = false;
   bool moveTop = false;
@@ -151,12 +153,12 @@ void ChatScene::rowsInserted(const QModelIndex &index, int start, int end) {
       line->setPos(0, line->pos().y() + offset);
     }
   }
-  
+
   // update sceneRect
   if(atTop || moveTop) {
-    setSceneRect(sceneRect().adjusted(0, h, 0, 0));
+    updateSceneRect(_sceneRect.adjusted(0, h, 0, 0));
   } else {
-    setSceneRect(sceneRect().adjusted(0, 0, 0, h));
+    updateSceneRect(_sceneRect.adjusted(0, 0, 0, h));
     emit sceneHeightChanged(h);
   }
 
@@ -222,20 +224,19 @@ void ChatScene::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int e
 
   // update sceneRect
   if(atTop || moveTop) {
-    setSceneRect(sceneRect().adjusted(0, h, 0, 0));
+    updateSceneRect(_sceneRect.adjusted(0, h, 0, 0));
   } else {
-    setSceneRect(sceneRect().adjusted(0, 0, 0, -h));
+    updateSceneRect(_sceneRect.adjusted(0, 0, 0, -h));
   }
-
 }
 
 void ChatScene::setWidth(qreal width, bool forceReposition) {
-  if(width == sceneRect().width() && !forceReposition)
+  if(width == _sceneRect.width() && !forceReposition)
     return;
 
   // clock_t startT = clock();
-  qreal oldHeight = sceneRect().height();
-  qreal y = sceneRect().y();
+  qreal oldHeight = _sceneRect.height();
+  qreal y = _sceneRect.y();
   qreal linePos = y;
 
   foreach(ChatLine *line, _lines) {
@@ -245,7 +246,7 @@ void ChatScene::setWidth(qreal width, bool forceReposition) {
 
   qreal height = linePos - y;
 
-  setSceneRect(QRectF(0, y, width, height));
+  updateSceneRect(QRectF(0, y, width, height));
   setHandleXLimits();
 
   qreal dh = height - oldHeight;
@@ -434,3 +435,8 @@ int ChatScene::sectionByScenePos(int x) {
 
   return ChatLineModel::ContentsColumn;
 }
+
+void ChatScene::updateSceneRect(const QRectF &rect) {
+  _sceneRect = rect;
+  setSceneRect(rect);
+}