- scene()->setIsFetchingBacklog(relativePos < 20);
- */
- scene()->setIsFetchingBacklog(vbar->value() == vbar->minimum());
+
+ if(relativePos < 20) {
+ scene()->requestBacklog();
+ }
+ }
+ _lastScrollbarPos = newPos;
+
+ // FIXME: Fugly workaround for the ChatView scrolling up 1px on buffer switch
+ if(vbar->maximum() - newPos <= 2)
+ vbar->setValue(vbar->maximum());
+}
+
+void ChatView::styleChanged() {
+ invalidateScene();
+ if(scene())
+ scene()->update();
+}
+
+MsgId ChatView::lastMsgId() const {
+ if(!scene())
+ return MsgId();
+
+ QAbstractItemModel *model = scene()->model();
+ if(!model || model->rowCount() == 0)
+ return MsgId();
+
+ return model->data(model->index(model->rowCount() - 1, 0), MessageModel::MsgIdRole).value<MsgId>();
+}
+
+void ChatView::addActionsToMenu(QMenu *menu, const QPointF &pos) {
+ // zoom actions
+ BufferWidget *bw = qobject_cast<BufferWidget *>(bufferContainer());
+ if(bw) {
+ bw->addActionsToMenu(menu, pos);
+ menu->addSeparator();