]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
this we don't need anymore
[lyx.git] / src / BufferView.cpp
index 9b3ae322bb3a3eec65c958a8035c6e3506ccfa89..1957c9777fae0158f1c3c89c54310f41eb82338c 100644 (file)
@@ -214,6 +214,7 @@ struct BufferView::Private
 {
        Private(BufferView & bv): wh_(0), cursor_(bv),
                anchor_pit_(0), anchor_ypos_(0),
+               inlineCompletionUniqueChars_(0),
                last_inset_(0), gui_(0)
        {}
 
@@ -242,11 +243,11 @@ struct BufferView::Private
        vector<int> par_height_;
 
        ///
-       DocIterator inlineCompletionPos;
+       DocIterator inlineCompletionPos_;
        ///
-       docstring inlineCompletion;
+       docstring inlineCompletion_;
        ///
-       size_t inlineCompletionUniqueChars;
+       size_t inlineCompletionUniqueChars_;
 
        /// keyboard mapping object.
        Intl intl_;
@@ -263,6 +264,9 @@ struct BufferView::Private
        /** Not owned, so don't delete.
          */
        frontend::GuiBufferViewDelegate * gui_;
+
+       /// Cache for Find Next
+       FuncRequest search_request_cache_;
 };
 
 
@@ -784,7 +788,7 @@ void BufferView::showCursor(DocIterator const & dit)
 
        if (tm.contains(bot_pit)) {
                ParagraphMetrics const & pm = tm.parMetrics(bot_pit);
-               BOOST_ASSERT(!pm.rows().empty());
+               LASSERT(!pm.rows().empty(), /**/);
                // FIXME: smooth scrolling doesn't work in mathed.
                CursorSlice const & cs = dit.innerTextSlice();
                int offset = coordOffset(dit, dit.boundary()).y_;
@@ -800,8 +804,8 @@ void BufferView::showCursor(DocIterator const & dit)
        }
 
        // fix inline completion position
-       if (d->inlineCompletionPos.fixIfBroken())
-               d->inlineCompletionPos = DocIterator();
+       if (d->inlineCompletionPos_.fixIfBroken())
+               d->inlineCompletionPos_ = DocIterator();
 
        tm.redoParagraph(bot_pit);
        ParagraphMetrics const & pm = tm.parMetrics(bot_pit);
@@ -1182,12 +1186,17 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                buffer_.text().acceptOrRejectChanges(d->cursor_, Text::REJECT);
                break;
 
-       case LFUN_WORD_FIND:
-               if (find(this, cmd))
+       case LFUN_WORD_FIND: {
+               FuncRequest req = cmd;
+               if (cmd.argument().empty() && !d->search_request_cache_.argument().empty())
+                       req = d->search_request_cache_;
+               if (find(this, req))
                        showCursor();
                else
                        message(_("String not found!"));
+               d->search_request_cache_ = req;
                break;
+       }
 
        case LFUN_WORD_REPLACE: {
                bool has_deleted = false;
@@ -1240,7 +1249,7 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                InsetBibtex * inset = getInsetByCode<InsetBibtex>(tmpcur,
                                                BIBTEX_CODE);
                if (inset) {
-                       if (inset->addDatabase(to_utf8(cmd.argument())))
+                       if (inset->addDatabase(cmd.argument()))
                                buffer_.updateBibfilesCache();
                }
                break;
@@ -1252,7 +1261,7 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                InsetBibtex * inset = getInsetByCode<InsetBibtex>(tmpcur,
                                                BIBTEX_CODE);
                if (inset) {
-                       if (inset->delDatabase(to_utf8(cmd.argument())))
+                       if (inset->delDatabase(cmd.argument()))
                                buffer_.updateBibfilesCache();
                }
                break;
@@ -1594,8 +1603,8 @@ void BufferView::lfunScroll(FuncRequest const & cmd)
 {
        string const scroll_type = cmd.getArg(0);
        int const scroll_step = 
-               (scroll_type == "line")? d->scrollbarParameters_.single_step
-               : (scroll_type == "page")? d->scrollbarParameters_.page_step : 0;
+               (scroll_type == "line") ? d->scrollbarParameters_.single_step
+               : (scroll_type == "page") ? d->scrollbarParameters_.page_step : 0;
        if (scroll_step == 0)
                return;
        string const scroll_quantity = cmd.getArg(1);
@@ -1766,7 +1775,7 @@ bool BufferView::checkDepm(Cursor & cur, Cursor & old)
 
 bool BufferView::mouseSetCursor(Cursor & cur, bool select)
 {
-       BOOST_ASSERT(&cur.bv() == this);
+       LASSERT(&cur.bv() == this, /**/);
 
        if (!select)
                // this event will clear selection so we save selection for
@@ -1853,8 +1862,8 @@ bool BufferView::singleParUpdate()
        int old_height = tm.parMetrics(bottom_pit).height();
 
        // make sure inline completion pointer is ok
-       if (d->inlineCompletionPos.fixIfBroken())
-               d->inlineCompletionPos = DocIterator();
+       if (d->inlineCompletionPos_.fixIfBroken())
+               d->inlineCompletionPos_ = DocIterator();
 
        // In Single Paragraph mode, rebreak only
        // the (main text, not inset!) paragraph containing the cursor.
@@ -1893,8 +1902,8 @@ void BufferView::updateMetrics()
        TextMetrics & tm = textMetrics(&buftext);
 
        // make sure inline completion pointer is ok
-       if (d->inlineCompletionPos.fixIfBroken())
-               d->inlineCompletionPos = DocIterator();
+       if (d->inlineCompletionPos_.fixIfBroken())
+               d->inlineCompletionPos_ = DocIterator();
        
        if (d->anchor_pit_ >= npit)
                // The anchor pit must have been deleted...
@@ -1967,7 +1976,7 @@ void BufferView::updateMetrics()
 
 void BufferView::insertLyXFile(FileName const & fname)
 {
-       BOOST_ASSERT(d->cursor_.inTexted());
+       LASSERT(d->cursor_.inTexted(), /**/);
 
        // Get absolute path of file and add ".lyx"
        // to the filename if necessary
@@ -2052,7 +2061,7 @@ Point BufferView::coordOffset(DocIterator const & dit, bool boundary) const
        CursorSlice const & sl = dit[0];
        TextMetrics const & tm = textMetrics(sl.text());
        ParagraphMetrics const & pm = tm.parMetrics(sl.pit());
-       BOOST_ASSERT(!pm.rows().empty());
+       LASSERT(!pm.rows().empty(), /**/);
        y -= pm.rows()[0].ascent();
 #if 1
        // FIXME: document this mess
@@ -2266,19 +2275,19 @@ void BufferView::insertPlaintextFile(FileName const & f, bool asParagraph)
 
 docstring const & BufferView::inlineCompletion() const
 {
-       return d->inlineCompletion;
+       return d->inlineCompletion_;
 }
 
 
 size_t const & BufferView::inlineCompletionUniqueChars() const
 {
-       return d->inlineCompletionUniqueChars;
+       return d->inlineCompletionUniqueChars_;
 }
 
 
 DocIterator const & BufferView::inlineCompletionPos() const
 {
-       return d->inlineCompletionPos;
+       return d->inlineCompletionPos_;
 }
 
 
@@ -2296,16 +2305,16 @@ void BufferView::setInlineCompletion(Cursor & cur, DocIterator const & pos,
        docstring const & completion, size_t uniqueChars)
 {
        uniqueChars = min(completion.size(), uniqueChars);
-       bool changed = d->inlineCompletion != completion
-               || d->inlineCompletionUniqueChars != uniqueChars;
+       bool changed = d->inlineCompletion_ != completion
+               || d->inlineCompletionUniqueChars_ != uniqueChars;
        bool singlePar = true;
-       d->inlineCompletion = completion;
-       d->inlineCompletionUniqueChars = min(completion.size(), uniqueChars);
+       d->inlineCompletion_ = completion;
+       d->inlineCompletionUniqueChars_ = min(completion.size(), uniqueChars);
        
        //lyxerr << "setInlineCompletion pos=" << pos << " completion=" << completion << " uniqueChars=" << uniqueChars << std::endl;
        
        // at new position?
-       DocIterator const & old = d->inlineCompletionPos;
+       DocIterator const & old = d->inlineCompletionPos_;
        if (old != pos) {
                //lyxerr << "inlineCompletionPos changed" << std::endl;
                // old or pos are in another paragraph?
@@ -2314,7 +2323,7 @@ void BufferView::setInlineCompletion(Cursor & cur, DocIterator const & pos,
                        singlePar = false;
                        //lyxerr << "different paragraph" << std::endl;
                }
-               d->inlineCompletionPos = pos;
+               d->inlineCompletionPos_ = pos;
        }
        
        // set update flags