owner_->message(_("Formatting document..."));
if (bv_->text) {
- par = bv_->text->cursor.par();
+ par = &*bv_->text->cursor.par();
pos = bv_->text->cursor.pos();
- selstartpar = bv_->text->selection.start.par();
+ selstartpar = &*bv_->text->selection.start.par();
selstartpos = bv_->text->selection.start.pos();
- selendpar = bv_->text->selection.end.par();
+ selendpar = &*bv_->text->selection.end.par();
selendpos = bv_->text->selection.end.pos();
selection = bv_->text->selection.set();
mark_set = bv_->text->selection.mark();
switchKeyMap();
owner_->busy(false);
+ // reset the "Formatting..." message
+ owner_->clearMessage();
+
updateScrollbar();
return 0;
if (!buffer_)
return;
+ screen().hideCursor();
+
screen().draw(bv_->text, bv_, value);
if (!lyxrc.cursor_follows_scrollbar)
key_modifier::state state)
{
bv_->owner()->getLyXFunc().processKeySym(key, state);
+
+ /* This is perhaps a bit of a hack. When we move
+ * around, or type, it's nice to be able to see
+ * the cursor immediately after the keypress. So
+ * we reset the toggle timeout and force the visibility
+ * of the cursor. Note we cannot do this inside
+ * dispatch() itself, because that's called recursively.
+ */
+ if (available()) {
+ cursor_timeout.restart();
+ screen().showCursor(*bv_);
+ }
}
void BufferView::Pimpl::selectionLost()
{
if (available()) {
- hideCursor();
+ screen().hideCursor();
toggleSelection();
bv_->getLyXText()->clearSelection();
- showCursor();
bv_->text->xsel_cache.set(false);
}
}
return;
}
- if (!bv_->theLockingInset()) {
- screen().cursorToggle(bv_);
- } else {
- bv_->theLockingInset()->toggleInsetCursor(bv_);
- }
+ screen().toggleCursor(*bv_);
cursor_timeout.restart();
}
if (b != 0) buffer(b);
}
- Paragraph * par = buffer_->getParFromID(saved_positions[i].par_id);
+ Paragraph * par = &*buffer_->getParFromID(saved_positions[i].par_id);
if (!par)
return;
}
-void BufferView::Pimpl::showCursor()
-{
- if (bv_->theLockingInset())
- bv_->theLockingInset()->showInsetCursor(bv_);
- else
- screen().showCursor(bv_->text, bv_);
-}
-
-
-void BufferView::Pimpl::hideCursor()
-{
- if (!bv_->theLockingInset())
- screen().hideCursor();
-}
-
-
void BufferView::Pimpl::toggleSelection(bool b)
{
if (bv_->theLockingInset())
buf->undostack.clear();
} else {
update(BufferView::SELECT);
- bv_->text->setCursor(&(*buf->paragraphs.begin()), 0);
+ bv_->text->setCursor(buf->paragraphs.begin(), 0);
#warning changes FIXME
//moveCursorUpdate(false);
if (!available())
return false;
+ screen().hideCursor();
+
bool const res = dispatch(ev_in);
+ // see workAreaKeyPress
+ cursor_timeout.restart();
+ screen().showCursor(*bv_);
+
+ // FIXME: we should skip these when selecting
bv_->owner()->updateLayoutChoice();
+ bv_->owner()->updateToolbar();
bv_->fitCursor();
+ // slight hack: this is only called currently when
+ // we clicked somewhere, so we force through the display
+ // of the new status here.
+ bv_->owner()->clearMessage();
+
return res;
}
// a tabular-inset
break;
- case LFUN_LAYOUT_COPY:
- bv_->copyEnvironment();
- break;
-
- case LFUN_LAYOUT_PASTE:
- bv_->pasteEnvironment();
- switchKeyMap();
- break;
-
case LFUN_FILE_INSERT:
MenuInsertLyXFile(ev.argument);
break;
break;
case LFUN_LAYOUT_PARAGRAPH: {
- Paragraph const * par = bv_->getLyXText()->cursor.par();
+ Paragraph const * par = &*bv_->getLyXText()->cursor.par();
if (!par)
break;
}
case LFUN_PARAGRAPH_UPDATE: {
- Paragraph const * par = bv_->getLyXText()->cursor.par();
+ Paragraph const * par = &*bv_->getLyXText()->cursor.par();
if (!par)
break;
case LFUN_ACCEPT_ALL_CHANGES: {
update(BufferView::SELECT);
- bv_->text->setCursor(&(*bv_->buffer()->paragraphs.begin()), 0);
+ bv_->text->setCursor(bv_->buffer()->paragraphs.begin(), 0);
#warning FIXME changes
//moveCursorUpdate(false);
case LFUN_REJECT_ALL_CHANGES: {
update(BufferView::SELECT);
- bv_->text->setCursor(&(*bv_->buffer()->paragraphs.begin()), 0);
+ bv_->text->setCursor(bv_->buffer()->paragraphs.begin(), 0);
#warning FIXME changes
//moveCursorUpdate(false);
Inset * tl_inset = inset;
while (tl_inset->owner())
tl_inset = tl_inset->owner();
- hideCursor();
if (tl_inset == inset) {
update(BufferView::UPDATE);
if (bv_->text->updateInset(inset)) {