#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) {
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 const fw = act == LFUN_WORD_FIND_FORWARD;
docstring const data =
- find2string(searched_string, true, false, fw);
+ 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;
}
cur.setCursor(doc_iterator_begin(cur.buffer()));
cur.selHandle(false);
// Force an immediate computation of metrics because we need it below
- processUpdateFlags(Update::Force);
+ updateMetrics();
d->text_metrics_[&buffer_.text()].editXY(cur, p.x_, p.y_,
true, act == LFUN_SCREEN_UP);