mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
fix bug 1892 (cursor moves when inserting index or tabular)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9984 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
3f4a165058
commit
61c245ca32
@ -1,3 +1,18 @@
|
||||
2005-05-27 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
|
||||
|
||||
Fix bug 1892:
|
||||
|
||||
* text2.C (getStringToIndex): constify cur argument.
|
||||
|
||||
* factory.C (createInset/LFUN_TABULAR_INSERT): return 0 if no
|
||||
argument has been given
|
||||
(createInset/LFUN_INDEX_INSERT): just return a new inset (do not
|
||||
try to invoke LFUN_INSET_APPLY).
|
||||
|
||||
* text3.C (dispatch/LFUN_TABULAR_INSERT): open the tabular dialog
|
||||
if no inset was created by doInsertInset
|
||||
(doInsertInset): return true if an inset has been inserted.
|
||||
|
||||
2005-05-23 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
|
||||
|
||||
* vspace.C (asGUIName): new method. A version of the space
|
||||
|
@ -56,9 +56,6 @@
|
||||
#include "mathed/math_macrotemplate.h"
|
||||
#include "mathed/math_hullinset.h"
|
||||
|
||||
#include "frontends/Dialogs.h"
|
||||
#include "frontends/LyXView.h"
|
||||
|
||||
#include "support/lstrings.h"
|
||||
|
||||
#include <boost/assert.hpp>
|
||||
@ -163,15 +160,8 @@ InsetBase * createInset(BufferView * bv, FuncRequest const & cmd)
|
||||
cmd.argument;
|
||||
icp.setContents(contents);
|
||||
|
||||
string data = InsetCommandMailer::params2string("index", icp);
|
||||
LyXView * lv = bv->owner();
|
||||
return new InsetIndex(icp);
|
||||
|
||||
if (icp.getContents().empty()) {
|
||||
lv->getDialogs().show("index", data, 0);
|
||||
} else {
|
||||
lv->dispatch(FuncRequest(LFUN_INSET_APPLY, data));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
case LFUN_TABULAR_INSERT:
|
||||
@ -183,7 +173,6 @@ InsetBase * createInset(BufferView * bv, FuncRequest const & cmd)
|
||||
if (c <= 0) c = 2;
|
||||
return new InsetTabular(*bv->buffer(), r, c);
|
||||
}
|
||||
bv->owner()->getDialogs().show("tabularcreate");
|
||||
return 0;
|
||||
|
||||
case LFUN_INSET_CAPTION: {
|
||||
|
@ -105,7 +105,7 @@ public:
|
||||
void toggleFree(LCursor & cur, LyXFont const &, bool toggleall = false);
|
||||
|
||||
///
|
||||
std::string getStringToIndex(LCursor & cur);
|
||||
std::string getStringToIndex(LCursor const & cur);
|
||||
|
||||
/// insert a character at cursor position
|
||||
void insertChar(LCursor & cur, char c);
|
||||
|
32
src/text2.C
32
src/text2.C
@ -527,31 +527,27 @@ void LyXText::toggleFree(LCursor & cur, LyXFont const & font, bool toggleall)
|
||||
}
|
||||
|
||||
|
||||
string LyXText::getStringToIndex(LCursor & cur)
|
||||
string LyXText::getStringToIndex(LCursor const & cur)
|
||||
{
|
||||
BOOST_ASSERT(this == cur.text());
|
||||
// Try implicit word selection
|
||||
// If there is a change in the language the implicit word selection
|
||||
// is disabled.
|
||||
CursorSlice const reset_cursor = cur.top();
|
||||
bool const implicitSelection =
|
||||
selectWordWhenUnderCursor(cur, lyx::PREVIOUS_WORD);
|
||||
|
||||
string idxstring;
|
||||
if (!cur.selection())
|
||||
if (cur.selection()) {
|
||||
idxstring = cur.selectionAsString(false);
|
||||
} else {
|
||||
// Try implicit word selection. If there is a change
|
||||
// in the language the implicit word selection is
|
||||
// disabled.
|
||||
LCursor tmpcur = cur;
|
||||
selectWord(tmpcur, lyx::PREVIOUS_WORD);
|
||||
|
||||
if (!tmpcur.selection())
|
||||
cur.message(_("Nothing to index!"));
|
||||
else if (cur.selBegin().pit() != cur.selEnd().pit())
|
||||
else if (tmpcur.selBegin().pit() != tmpcur.selEnd().pit())
|
||||
cur.message(_("Cannot index more than one paragraph!"));
|
||||
else
|
||||
idxstring = cur.selectionAsString(false);
|
||||
|
||||
// Reset cursors to their original position.
|
||||
cur.top() = reset_cursor;
|
||||
cur.resetAnchor();
|
||||
|
||||
// Clear the implicit selection.
|
||||
if (implicitSelection)
|
||||
cur.clearSelection();
|
||||
idxstring = tmpcur.selectionAsString(false);
|
||||
}
|
||||
|
||||
return idxstring;
|
||||
}
|
||||
|
15
src/text3.C
15
src/text3.C
@ -235,12 +235,12 @@ void specialChar(LCursor & cur, InsetSpecialChar::Kind kind)
|
||||
}
|
||||
|
||||
|
||||
void doInsertInset(LCursor & cur, LyXText * text,
|
||||
bool doInsertInset(LCursor & cur, LyXText * text,
|
||||
FuncRequest const & cmd, bool edit, bool pastesel)
|
||||
{
|
||||
InsetBase * inset = createInset(&cur.bv(), cmd);
|
||||
if (!inset)
|
||||
return;
|
||||
return false;
|
||||
|
||||
recordUndo(cur);
|
||||
bool gotsel = false;
|
||||
@ -255,6 +255,7 @@ void doInsertInset(LCursor & cur, LyXText * text,
|
||||
|
||||
if (gotsel && pastesel)
|
||||
cur.bv().owner()->dispatch(FuncRequest(LFUN_PASTE));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -1182,7 +1183,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
|
||||
case LFUN_INSET_FOOTNOTE:
|
||||
case LFUN_INSET_MARGINAL:
|
||||
case LFUN_INSET_OPTARG:
|
||||
case LFUN_TABULAR_INSERT:
|
||||
case LFUN_ENVIRONMENT_INSERT:
|
||||
// Open the inset, and move the current selection
|
||||
// inside it.
|
||||
@ -1190,6 +1190,15 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
|
||||
cur.posRight();
|
||||
break;
|
||||
|
||||
case LFUN_TABULAR_INSERT:
|
||||
// if there were no arguments, just open the dialog
|
||||
if (doInsertInset(cur, this, cmd, false, true))
|
||||
cur.posRight();
|
||||
else
|
||||
bv->owner()->getDialogs().show("tabularcreate");
|
||||
|
||||
break;
|
||||
|
||||
case LFUN_INSET_FLOAT:
|
||||
case LFUN_INSET_WIDE_FLOAT:
|
||||
case LFUN_INSET_WRAP:
|
||||
|
Loading…
Reference in New Issue
Block a user