+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
#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>
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:
if (c <= 0) c = 2;
return new InsetTabular(*bv->buffer(), r, c);
}
- bv->owner()->getDialogs().show("tabularcreate");
return 0;
case LFUN_INSET_CAPTION: {
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);
}
-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())
- cur.message(_("Nothing to index!"));
- else if (cur.selBegin().pit() != cur.selEnd().pit())
- cur.message(_("Cannot index more than one paragraph!"));
- else
+ if (cur.selection()) {
idxstring = cur.selectionAsString(false);
-
- // Reset cursors to their original position.
- cur.top() = reset_cursor;
- cur.resetAnchor();
-
- // Clear the implicit selection.
- if (implicitSelection)
- cur.clearSelection();
+ } 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 (tmpcur.selBegin().pit() != tmpcur.selEnd().pit())
+ cur.message(_("Cannot index more than one paragraph!"));
+ else
+ idxstring = tmpcur.selectionAsString(false);
+ }
return idxstring;
}
}
-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;
if (gotsel && pastesel)
cur.bv().owner()->dispatch(FuncRequest(LFUN_PASTE));
+ return true;
}
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.
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: