+ if (!bv_) {
+ document_->setPlainText(QString());
+ setEnabled(false);
+ return;
+ }
+
+ setEnabled(true);
+
+ QString content;
+ if (getContent(bv_, viewFullSourceCB->isChecked(), content))
+ document_->setPlainText(content);
+
+ CursorSlice beg = bv_->cursor().selectionBegin().bottom();
+ CursorSlice end = bv_->cursor().selectionEnd().bottom();
+ int const begrow = bv_->buffer().texrow().
+ getRowFromIdPos(beg.paragraph().id(), beg.pos());
+ int endrow = bv_->buffer().texrow().
+ getRowFromIdPos(end.paragraph().id(), end.pos());
+ int const nextendrow = bv_->buffer().texrow().
+ getRowFromIdPos(end.paragraph().id(), end.pos() + 1);
+ if (endrow != nextendrow)
+ endrow = nextendrow - 1;
+
+ QTextCursor c = QTextCursor(viewSourceTV->document());
+ c.movePosition(QTextCursor::NextBlock, QTextCursor::MoveAnchor, begrow);
+ c.select(QTextCursor::BlockUnderCursor);
+ c.movePosition(QTextCursor::NextBlock, QTextCursor::KeepAnchor,
+ endrow - begrow + 1);
+ viewSourceTV->setTextCursor(c);