#include "FindAndReplace.h"
-#include "Lexer.h"
#include "GuiApplication.h"
#include "GuiView.h"
#include "GuiWorkArea.h"
#include "qt_helpers.h"
-#include "Language.h"
#include "Buffer.h"
-#include "BufferParams.h"
#include "BufferList.h"
+#include "BufferParams.h"
#include "BufferView.h"
-#include "Text.h"
-#include "TextClass.h"
#include "Cursor.h"
#include "FuncRequest.h"
+#include "Language.h"
+#include "Lexer.h"
#include "LyX.h"
#include "lyxfind.h"
+#include "Text.h"
+#include "TextClass.h"
#include "frontends/alert.h"
#include "support/debug.h"
+#include "support/docstream.h"
#include "support/filetools.h"
#include "support/FileName.h"
#include "support/gettext.h"
replace_work_area_->setFrameStyle(QFrame::StyledPanel);
// We don't want two cursors blinking.
- find_work_area_->stopBlinkingCursor();
- replace_work_area_->stopBlinkingCursor();
+ find_work_area_->stopBlinkingCaret();
+ replace_work_area_->stopBlinkingCaret();
+ old_buffer_ = view_.documentBufferView() ?
+ &(view_.documentBufferView()->buffer()) : 0;
+
+ // align items on top
+ cbVerticalLayout->setAlignment(Qt::AlignTop);
+ pbVerticalLayout->setAlignment(Qt::AlignTop);
}
void FindAndReplaceWidget::dockLocationChanged(Qt::DockWidgetArea area)
{
- if (area == Qt::RightDockWidgetArea || area == Qt::LeftDockWidgetArea) {
- dynamicLayoutBasic_->setDirection(QBoxLayout::TopToBottom);
- dynamicLayoutAdvanced_->setDirection(QBoxLayout::TopToBottom);
- } else {
- dynamicLayoutBasic_->setDirection(QBoxLayout::LeftToRight);
- dynamicLayoutAdvanced_->setDirection(QBoxLayout::LeftToRight);
- }
+ if (area == Qt::RightDockWidgetArea || area == Qt::LeftDockWidgetArea) {
+ dynamicLayoutBasic_->setDirection(QBoxLayout::TopToBottom);
+ dynamicLayoutAdvanced_->setDirection(QBoxLayout::TopToBottom);
+ } else {
+ dynamicLayoutBasic_->setDirection(QBoxLayout::LeftToRight);
+ dynamicLayoutAdvanced_->setDirection(QBoxLayout::LeftToRight);
+ }
}
}
-static vector<string> const & allManualsFiles()
+static vector<string> const & allManualsFiles()
{
static const char * files[] = {
"Intro", "UserGuide", "Tutorial", "Additional",
**
** Return true if restarted from master-document buffer.
**/
-static bool nextDocumentBuffer(Buffer * & buf)
+static bool nextDocumentBuffer(Buffer * & buf)
{
ListOfBuffers const children = buf->allRelatives();
LYXERR(Debug::FIND, "children.size()=" << children.size());
**
** Return true if restarted from last child buffer.
**/
-static bool prevDocumentBuffer(Buffer * & buf)
+static bool prevDocumentBuffer(Buffer * & buf)
{
ListOfBuffers const children = buf->allRelatives();
LYXERR(Debug::FIND, "children.size()=" << children.size());
docstring message = opt.forward ?
bformat(_("%1$s: the end was reached while searching forward.\n"
"Continue searching from the beginning?"),
- scope) :
+ scope) :
bformat(_("%1$s: the beginning was reached while searching backward.\n"
"Continue searching from the end?"),
scope);
Buffer * buf_orig = &bv->buffer();
DocIterator cur_orig(bv->cursor());
int wrap_answer = -1;
+ opt.replace_all = replace_all;
ostringstream oss;
oss << opt;
FuncRequest cmd(LFUN_WORD_FINDADV, from_utf8(oss.str()));
}
}
+ UndoGroupHelper helper(buf);
+
do {
LYXERR(Debug::FIND, "Dispatching LFUN_WORD_FINDADV");
dispatch(cmd);
if (buf != &view_.documentBufferView()->buffer())
lyx::dispatch(FuncRequest(LFUN_BUFFER_SWITCH,
buf->absFileName()));
+
+ helper.resetBuffer(buf);
+
bv = view_.documentBufferView();
if (opt.forward) {
bv->cursor().clear();
}
bv->clearSelection();
} while (wrap_answer != 1);
+
if (buf_orig != &view_.documentBufferView()->buffer())
lyx::dispatch(FuncRequest(LFUN_BUFFER_SWITCH,
buf_orig->absFileName()));
}
-void FindAndReplaceWidget::on_findNextPB_clicked()
+void FindAndReplaceWidget::on_findNextPB_clicked()
{
findAndReplace(searchbackCB->isChecked(), false);
find_work_area_->setFocus();
}
-/** Copy selected elements from bv's BufferParams to the dest_bv's one
- ** We don't want to copy'em all, e.g., not the default master **/
+// Copy selected elements from bv's BufferParams to the dest_bv's
static void copy_params(BufferView const & bv, BufferView & dest_bv) {
Buffer const & doc_buf = bv.buffer();
BufferParams const & doc_bp = doc_buf.params();
- string const & lang = doc_bp.language->lang();
- string const & doc_class = doc_bp.documentClass().name();
Buffer & dest_buf = dest_bv.buffer();
- dest_buf.params().setLanguage(lang);
- dest_buf.params().setBaseClass(doc_class);
+ dest_buf.params().copyForAdvFR(doc_bp);
dest_bv.makeDocumentClass();
dest_bv.cursor().current_font.setLanguage(doc_bp.language);
}
setFocusProxy(widget_);
connect(this, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)),
- widget_, SLOT(dockLocationChanged(Qt::DockWidgetArea)));
+ widget_, SLOT(dockLocationChanged(Qt::DockWidgetArea)));
}
void FindAndReplaceWidget::updateGUI()
{
- bool replace_enabled = view_.documentBufferView()
- && !view_.documentBufferView()->buffer().isReadonly();
+ BufferView * bv = view_.documentBufferView();
+ if (bv) {
+ if (old_buffer_ != &bv->buffer()) {
+ copy_params(*bv, find_work_area_->bufferView());
+ copy_params(*bv, replace_work_area_->bufferView());
+ old_buffer_ = &bv->buffer();
+ }
+ } else
+ old_buffer_ = 0;
+
+ bool const replace_enabled = bv && !bv->buffer().isReadonly();
replace_work_area_->setEnabled(replace_enabled);
replacePB->setEnabled(replace_enabled);
replaceallPB->setEnabled(replace_enabled);
Dialog * createGuiSearchAdv(GuiView & lv)
{
FindAndReplace * gui = new FindAndReplace(lv, Qt::RightDockWidgetArea);
-#ifdef Q_WS_MACX
+#ifdef Q_OS_MAC
// On Mac show and floating
gui->setFloating(true);
#endif