+2003-01-16 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
+
+ * text3.C (dispatch): put the lfuns that insert insets in 3
+ groups, and call doInsertInset with appropriate arguments.
+ (doInsertInset): new function, that creates an inset and inserts
+ it according to some boolean parameters.
+
2003-01-16 Lars Gullik Bjønnes <larsbj@gullik.net>
* buffer.C (readFile): remember to pass on 'par' when calling
bv->update(this, c);
}
+namespace {
void specialChar(LyXText * lt, BufferView * bv, InsetSpecialChar::Kind kind)
{
bv->updateInset(new_inset, true);
}
+void doInsertInset(LyXText * lt, FuncRequest const & cmd,
+ bool edit, bool pastesel)
+{
+ Inset * inset = createInset(cmd);
+ BufferView * bv = cmd.view();
+
+ if (inset) {
+ bool gotsel = false;
+ if (lt->selection.set()) {
+ lt->cutSelection(bv, true, false);
+ gotsel = true;
+ }
+ if (bv->insertInset(inset)) {
+ if (edit)
+ inset->edit(bv);
+ if (gotsel && pastesel)
+ bv->owner()->dispatch(FuncRequest(LFUN_PASTESELECTION));
+ }
+ else
+ delete inset;
+ }
+
+}
+
+}
Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
{
#if 0
case LFUN_INSET_LIST:
case LFUN_INSET_THEOREM:
+ case LFUN_INSET_CAPTION:
#endif
case LFUN_INSERT_NOTE:
- case LFUN_INSERT_URL:
- case LFUN_INSET_CAPTION:
case LFUN_INSET_ERT:
- case LFUN_INSET_EXTERNAL:
case LFUN_INSET_FLOAT:
case LFUN_INSET_FOOTNOTE:
case LFUN_INSET_MARGINAL:
case LFUN_INSET_WIDE_FLOAT:
case LFUN_INSET_WRAP:
case LFUN_TABULAR_INSERT:
+ // Open the inset, and move the current selection
+ // inside it.
+ doInsertInset(this, cmd, true, true);
+ break;
+
+ case LFUN_INSERT_URL:
+ case LFUN_INSET_EXTERNAL:
case LFUN_INDEX_INSERT:
+ // Just open the inset
+ doInsertInset(this, cmd, true, false);
+ break;
+
case LFUN_INDEX_PRINT:
case LFUN_PARENTINSERT:
case LFUN_TOC_INSERT:
- {
- Inset * inset = createInset(cmd);
- if (inset) {
- bool gotsel = false;
- if (selection.set()) {
- cutSelection(bv, true, false);
- gotsel = true;
- }
- if (bv->insertInset(inset)) {
- inset->edit(bv);
- if (gotsel)
- bv->owner()->dispatch(FuncRequest(LFUN_PASTESELECTION));
- }
- else
- delete inset;
- }
+ // do nothing fancy
+ doInsertInset(this, cmd, false, false);
break;
- }
-
default:
return Inset::UNDISPATCHED;