#include "frontends/NullPainter.h"
#include "frontends/Painter.h"
#include "frontends/Selection.h"
+#include "frontends/Clipboard.h"
#include "support/convert.h"
#include "support/debug.h"
*/
frontend::GuiBufferViewDelegate * gui_;
- /// cache search string for simple search
- docstring search_request_cache_;
-
///
map<string, Inset *> edited_insets_;
}
+docstring const & BufferView::searchRequestCache() const
+{
+ return theClipboard().getFindBuffer();
+}
+
+
+void BufferView::setSearchRequestCache(docstring const & text)
+{
+ bool casesensitive;
+ bool matchword;
+ bool forward;
+ bool wrap;
+ bool instant;
+ bool onlysel;
+ docstring const search = string2find(text, casesensitive, matchword,
+ forward, wrap, instant, onlysel);
+ theClipboard().setFindBuffer(search);
+}
+
+
bool BufferView::needsFitCursor() const
{
if (cursorStatus(d->cursor_) == CUR_INSIDE) {
CursorSlice const & cs = dit.innerTextSlice();
int offset = coordOffset(dit).y_;
int ypos = pm.position() + offset;
- Row const & row = pm.getRow(cs.pos(), dit.boundary());
- Dimension row_dim = row.dim();
- // FIXME: the will not be necessary anymore if Row has both a
- // dim() which is its full dimension and a contentsDim() which
- // is the dimension of the text only.
- if (&row == &pm.rows().front())
- row_dim.asc = pm.ascent();
- if (&row == &pm.rows().back())
- row_dim.des = pm.descent();
+ Dimension const & row_dim =
+ pm.getRow(cs.pos(), dit.boundary()).dim();
int scrolled = 0;
if (recenter)
scrolled = scroll(ypos - height_/2);
docstring searched_string;
if (!cmd.argument().empty()) {
- d->search_request_cache_ = cmd.argument();
+ setSearchRequestCache(cmd.argument());
searched_string = cmd.argument();
} else {
- searched_string = d->search_request_cache_;
+ searched_string = searchRequestCache();
}
if (searched_string.empty())
break;
- bool casesensitive;
- bool matchword;
- bool forward;
- docstring const search = string2find(searched_string, casesensitive, matchword, forward);
docstring const data =
- find2string(search, casesensitive, matchword, act == LFUN_WORD_FIND_FORWARD);
+ find2string(searched_string, false, false,
+ act == LFUN_WORD_FIND_FORWARD, false, false, false);
bool found = lyxfind(this, FuncRequest(LFUN_WORD_FIND, data));
if (found)
dr.screenUpdate(Update::Force | Update::FitCursor);
case LFUN_WORD_FIND: {
docstring arg = cmd.argument();
- if (arg.empty() && !d->search_request_cache_.empty())
- arg = d->search_request_cache_;
+ if (arg.empty())
+ arg = searchRequestCache();
if (arg.empty()) {
lyx::dispatch(FuncRequest(LFUN_DIALOG_SHOW, "findreplace"));
break;
else
dr.setMessage(_("Search string not found!"));
- d->search_request_cache_ = arg;
+ setSearchRequestCache(arg);
break;
}
case LFUN_SEARCH_STRING_SET: {
docstring pattern = cmd.argument();
if (!pattern.empty()) {
- d->search_request_cache_ = pattern;
+ setSearchRequestCache(pattern);
break;
}
if (cur.selection())
cur.selection(false);
cur.pos() = spos;
}
- d->search_request_cache_ = pattern;
+ setSearchRequestCache(pattern);
break;
}