two patches for search and replace

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3177 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2001-12-10 12:50:09 +00:00
parent 68f7839db2
commit b78b32b554
5 changed files with 38 additions and 43 deletions

View File

@ -1,3 +1,7 @@
2001-12-06 John Levon <moz@compsoc.man.ac.uk>
* lyxfind.C: place the cursor correctly on failed search
2001-12-09 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr> 2001-12-09 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr>
* text.C (getLengthMarkerHeight): for small heights, the arrows * text.C (getLengthMarkerHeight): for small heights, the arrows

View File

@ -1,3 +1,8 @@
2001-12-08 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
* forms/form_preferences.fd: use the same name for font sizes
than the character dialog.
2001-11-26 Jürgen Spitzmüller <j.spitzmueller@gmx.de> 2001-11-26 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
* forms/form_search.fd: Added label text to search buttons * forms/form_search.fd: Added label text to search buttons

View File

@ -149,10 +149,10 @@ FD_form_screen_fonts * FormPreferences::build_screen_fonts()
fdui->input_tiny = obj = fl_add_input(FL_FLOAT_INPUT, 370, 20, 70, 30, _("tiny")); fdui->input_tiny = obj = fl_add_input(FL_FLOAT_INPUT, 370, 20, 70, 30, _("tiny"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE); fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, 0); fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, 0);
fdui->input_script = obj = fl_add_input(FL_FLOAT_INPUT, 370, 50, 70, 30, _("script")); fdui->input_script = obj = fl_add_input(FL_FLOAT_INPUT, 370, 50, 70, 30, _("smallest"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE); fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, 0); fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, 0);
fdui->input_footnote = obj = fl_add_input(FL_FLOAT_INPUT, 370, 80, 70, 30, _("footnote")); fdui->input_footnote = obj = fl_add_input(FL_FLOAT_INPUT, 370, 80, 70, 30, _("smaller"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE); fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, 0); fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, 0);
fdui->input_small = obj = fl_add_input(FL_FLOAT_INPUT, 370, 110, 70, 30, _("small")); fdui->input_small = obj = fl_add_input(FL_FLOAT_INPUT, 370, 110, 70, 30, _("small"));

View File

@ -386,7 +386,7 @@ alignment: FL_ALIGN_LEFT
style: FL_NORMAL_STYLE style: FL_NORMAL_STYLE
size: FL_NORMAL_SIZE size: FL_NORMAL_SIZE
lcol: FL_BLACK lcol: FL_BLACK
label: script label: smallest
shortcut: shortcut:
resize: FL_RESIZE_ALL resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity gravity: FL_NoGravity FL_NoGravity
@ -404,7 +404,7 @@ alignment: FL_ALIGN_LEFT
style: FL_NORMAL_STYLE style: FL_NORMAL_STYLE
size: FL_NORMAL_SIZE size: FL_NORMAL_SIZE
lcol: FL_BLACK lcol: FL_BLACK
label: footnote label: smaller
shortcut: shortcut:
resize: FL_RESIZE_ALL resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity gravity: FL_NoGravity FL_NoGravity

View File

@ -12,6 +12,7 @@
#include "support/lstrings.h" #include "support/lstrings.h"
#include "BufferView.h" #include "BufferView.h"
#include "buffer.h" #include "buffer.h"
#include "debug.h"
#include "gettext.h" #include "gettext.h"
using lyx::pos_type; using lyx::pos_type;
@ -223,6 +224,8 @@ SearchResult SearchForward(BufferView * bv, LyXText * text, string const & str,
{ {
Paragraph * par = text->cursor.par(); Paragraph * par = text->cursor.par();
pos_type pos = text->cursor.pos(); pos_type pos = text->cursor.pos();
Paragraph * prev_par = par;
pos_type prev_pos;
UpdatableInset * inset; UpdatableInset * inset;
while (par && !IsStringInText(par, pos, str, cs, mw)) { while (par && !IsStringInText(par, pos, str, cs, mw)) {
@ -237,41 +240,27 @@ SearchResult SearchForward(BufferView * bv, LyXText * text, string const & str,
return SR_FOUND_NOUPDATE; return SR_FOUND_NOUPDATE;
text = bv->getLyXText(); text = bv->getLyXText();
} }
if (pos < par->size() - 1)
++pos; ++pos;
else {
pos = 0; if (pos >= par->size()) {
prev_par = par;
// consider 0-sized empty pars
prev_pos = std::min(pos, par->size());
par = par->next(); par = par->next();
pos = 0;
} }
} }
if (par) { if (par) {
text->setCursor(bv, par, pos); text->setCursor(bv, par, pos);
return SR_FOUND; return SR_FOUND;
#if 0 } else {
} else if (text->inset_owner) { // make sure we end up at the end of the text,
// test if we're inside an inset if yes unlock the inset // not the start point of the last search
// and recall us with the outside LyXText! text->setCursor(bv, prev_par, prev_pos);
bv->unlockInset((UpdatableInset *)text->inset_owner);
if (!bv->theLockingInset()) {
text = bv->getLyXText();
par = text->cursor.par();
pos = text->cursor.pos();
if (pos < par->size() - 1)
++pos;
else {
pos = 0;
par = par->next();
}
if (!par)
return SR_NOT_FOUND;
text->setCursor(bv, par, pos);
return SearchForward(bv, text, str, cs, mw);
} else {
return SR_NOT_FOUND;
}
#endif
} else
return SR_NOT_FOUND; return SR_NOT_FOUND;
}
} }
@ -284,11 +273,15 @@ SearchResult SearchBackward(BufferView * bv, LyXText * text,
{ {
Paragraph * par = text->cursor.par(); Paragraph * par = text->cursor.par();
pos_type pos = text->cursor.pos(); pos_type pos = text->cursor.pos();
Paragraph * prev_par = par;
pos_type prev_pos = pos;
do { do {
if (pos > 0) if (pos > 0)
--pos; --pos;
else { else {
prev_pos = pos;
prev_par = par;
// We skip empty paragraphs (Asger) // We skip empty paragraphs (Asger)
do { do {
par = par->previous(); par = par->previous();
@ -313,17 +306,10 @@ SearchResult SearchBackward(BufferView * bv, LyXText * text,
if (par) { if (par) {
text->setCursor(bv, par, pos); text->setCursor(bv, par, pos);
return SR_FOUND; return SR_FOUND;
} else {
// go to the last part of the unsuccessful search
text->setCursor(bv, prev_par, prev_pos);
return SR_NOT_FOUND;
} }
#if 0
else if (text->inset_owner) {
// test if we're inside an inset if yes unlock the inset
// and recall us with the outside LyXText!
bv->unlockInset((UpdatableInset *)text->inset_owner);
if (!bv->theLockingInset()) {
return SearchBackward(bv, bv->getLyXText(), str, cs, mw);
}
}
#endif
return SR_NOT_FOUND;
} }