_model(model),
_singleBufferScene(false),
_selectingItem(0),
- _lastItem(0),
_selectionStart(-1),
_isSelecting(false),
_fetchingBacklog(false)
_lines[i]->setRow(i);
}
+ // update selection
+ if(_selectionStart >= 0) {
+ int offset = end - start + 1;
+ if(_selectionStart >= start) _selectionStart += offset;
+ if(_selectionEnd >= start) _selectionEnd += offset;
+ if(_firstSelectionRow >= start) _firstSelectionRow += offset;
+ if(_lastSelectionRow >= start) _lastSelectionRow += offset;
+ }
+
if(h > 0) {
_height += h;
for(int i = end+1; i < _lines.count(); i++) {
_lines[l]->setSelected(true, minColumn);
}
}
-
int newstart = qMin(curRow, _firstSelectionRow);
int newend = qMax(curRow, _firstSelectionRow);
-
if(newstart < _selectionStart) {
for(int l = newstart; l < _selectionStart; l++)
_lines[l]->setSelected(true, minColumn);
void ChatScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
if(_isSelecting && !event->buttons() & Qt::LeftButton) {
-# ifdef Q_WS_X11
- QApplication::clipboard()->setText(selectionToString(), QClipboard::Selection);
-# endif
-//# else
- QApplication::clipboard()->setText(selectionToString());
-//# endif
+ putToClipboard(selectionToString());
_isSelecting = false;
event->accept();
} else {
}
}
+void ChatScene::putToClipboard(const QString &selection) {
+ // TODO Configure clipboards
+# ifdef Q_WS_X11
+ QApplication::clipboard()->setText(selection, QClipboard::Selection);
+# endif
+//# else
+ QApplication::clipboard()->setText(selection);
+//# endif
+}
+
//!\brief Convert current selection to human-readable string.
QString ChatScene::selectionToString() const {
//TODO Make selection format configurable!