X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView_pimpl.C;h=f5f1be2b2dadde664b78e2cc4fe440d6d73f6fd8;hb=77866d9e88cbbd1f5f580a7daf15751352792e12;hp=843b8e72416ab06154956d8dd0e19ef256074723;hpb=bd82f1d334a5dfb6945207d14e8b28a739afec85;p=lyx.git diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index 843b8e7241..f5f1be2b2d 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -115,7 +115,7 @@ void SetXtermCursor(Window win) { static Cursor cursor; static bool cursor_undefined = true; - if (cursor_undefined){ + if (cursor_undefined) { cursor = XCreateFontCursor(fl_get_display(), XC_xterm); XFlush(fl_get_display()); cursor_undefined = false; @@ -157,6 +157,8 @@ BufferView::Pimpl::Pimpl(BufferView * b, LyXView * o, .connect(slot(this, &BufferView::Pimpl::workAreaKeyPress)); workarea_.selectionRequested .connect(slot(this, &BufferView::Pimpl::selectionRequested)); + workarea_.selectionLost + .connect(slot(this, &BufferView::Pimpl::selectionLost)); cursor_timeout.timeout.connect(slot(this, &BufferView::Pimpl::cursorToggle)); @@ -646,8 +648,10 @@ void BufferView::Pimpl::workAreaButtonPress(int xpos, int ypos, selection_possible = false; owner_->updateLayoutChoice(); owner_->message(inset->editMessage()); + // IMO the inset has to be first in edit-mode and then we send the + // button press. (Jug 20020222) + inset->edit(bv_); //, xpos, ypos, button); inset->insetButtonPress(bv_, xpos, ypos, button); - inset->edit(bv_, xpos, ypos, button); return; } @@ -742,6 +746,9 @@ void BufferView::Pimpl::tripleClick(int /*x*/, int /*y*/, unsigned int button) void BufferView::Pimpl::selectionRequested() { + if (!available()) + return; + string const sel(bv_->getLyXText()->selectionAsString(bv_->buffer(), false)); if (!sel.empty()) { @@ -750,6 +757,15 @@ void BufferView::Pimpl::selectionRequested() } +void BufferView::Pimpl::selectionLost() +{ + hideCursor(); + toggleSelection(); + bv_->getLyXText()->clearSelection(); + showCursor(); +} + + void BufferView::Pimpl::enterView() { if (active() && available()) { @@ -1155,7 +1171,7 @@ void BufferView::Pimpl::cursorPrevious(LyXText * text) text->cursor.y() - text->cursor.row()->baseline() + text->cursor.row()->height() - - workarea_.height() + 1 ); + - workarea_.height() + 1); updateScrollbar(); } @@ -1227,7 +1243,7 @@ void BufferView::Pimpl::restorePosition(unsigned int i) Buffer * b = bufferlist.exists(fname) ? bufferlist.getBuffer(fname) : bufferlist.loadLyXFile(fname); // don't ask, just load it - if (b != 0 ) buffer(b); + if (b != 0) buffer(b); } Paragraph * par = buffer_->getParFromID(saved_positions[i].par_id); @@ -2958,13 +2974,13 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument) case LFUN_CITATION_INSERT: { InsetCommandParams p; - p.setFromString( argument ); + p.setFromString(argument); - InsetCitation * inset = new InsetCitation( p ); + InsetCitation * inset = new InsetCitation(p); if (!insertInset(inset)) delete inset; else - updateInset( inset, true ); + updateInset(inset, true); } break; @@ -2976,7 +2992,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument) string const db = token(argument, ' ', 0); string const bibstyle = token(argument, ' ', 1); - InsetCommandParams p( "BibTeX", db, bibstyle ); + InsetCommandParams p("BibTeX", db, bibstyle); InsetBibtex * inset = new InsetBibtex(p); if (insertInset(inset)) { @@ -3074,7 +3090,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument) case LFUN_PARENTINSERT: { lyxerr << "arg " << argument << endl; - InsetCommandParams p( "lyxparent", argument ); + InsetCommandParams p("lyxparent", argument); Inset * inset = new InsetParent(p, *buffer_); if (!insertInset(inset, "Standard")) delete inset; @@ -3414,7 +3430,7 @@ void BufferView::Pimpl::updateInset(Inset * inset, bool mark_dirty) } else if (bv_->theLockingInset()->updateInsetInInset(bv_, inset)) { if (bv_->text->updateInset(bv_, bv_->theLockingInset())) { update(); - if (mark_dirty){ + if (mark_dirty) { buffer_->markDirty(); } updateScrollbar();