commit ad56bded0370cbad601ec5374a4eb1561b204d80
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Tue Mar 4 11:56:03 2014 +0100
Bug #9005: various things that do not work as intended in passthru
paragraphs
* disable branch-add-insert in pass thru paragraphs
* when it is not possible to input a quote inset, insert a single
ascii quote when argument to quote-insert is "single"
* handle "mathspace" dialog in Text::getStatus
* disable insertion of newline inset in pass thru paragraphs
* handle "mathdelimiter" and "mathmatrix" dialogs in GuiView::getStatus.
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 8419460..7555f78 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -1079,7 +1079,6 @@ bool BufferView::getStatus(FuncRequest const & cmd,
FuncStatus & flag)
case LFUN_BIBTEX_DATABASE_ADD:
case LFUN_BIBTEX_DATABASE_DEL:
case LFUN_STATISTICS:
- case LFUN_BRANCH_ADD_INSERT:
case LFUN_KEYMAP_OFF:
case LFUN_KEYMAP_PRIMARY:
case LFUN_KEYMAP_SECONDARY:
@@ -1154,6 +1153,10 @@ bool BufferView::getStatus(FuncRequest const & cmd,
FuncStatus & flag)
flag.setEnabled(cur.inset().allowParagraphCustomization(cur.idx()));
break;
+ case LFUN_BRANCH_ADD_INSERT:
+ flag.setEnabled(!(cur.inTexted() &&
cur.paragraph().isPassThru()));
+ break;
+
case LFUN_DIALOG_SHOW_NEW_INSET:
// FIXME: this is wrong, but I do not understand the
// intent (JMarc)
diff --git a/src/Text3.cpp b/src/Text3.cpp
index 340bb9e..41723b6 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -1472,12 +1472,12 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
bool const hebrew =
par.getFontSettings(bufparams, pos).language()->lang()
== "hebrew";
bool const allow_inset_quote = !(par.isPassThru() || hebrew);
-
+
+ string const arg = to_utf8(cmd.argument());
if (allow_inset_quote) {
char_type c = ' ';
if (pos > 0 && (!cur.prevInset() ||
!cur.prevInset()->isSpace()))
c = par.getChar(pos - 1);
- string const arg = to_utf8(cmd.argument());
InsetQuotes::QuoteTimes const quote_type = (arg ==
"single")
? InsetQuotes::SingleQuotes :
InsetQuotes::DoubleQuotes;
cur.insert(new InsetQuotes(cur.buffer(), c,
quote_type));
@@ -1485,8 +1485,9 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
} else {
// The cursor might have been invalidated by the
replaceSelection.
cur.buffer()->changed(true);
- lyx::dispatch(FuncRequest(LFUN_SELF_INSERT, "\""));
- }
+ string const quote_string = (arg == "single") ? "'" :
"\"";
+ lyx::dispatch(FuncRequest(LFUN_SELF_INSERT,
quote_string));
+ }
break;
}
@@ -2472,6 +2473,10 @@ bool Text::getStatus(Cursor & cur, FuncRequest const &
cmd,
code = INDEX_CODE;
else if (cmd.argument() == "index_print")
code = INDEX_PRINT_CODE;
+ else if (cmd.argument() == "listings")
+ code = LISTINGS_CODE;
+ else if (cmd.argument() == "mathspace")
+ code = MATH_HULL_CODE;
else if (cmd.argument() == "nomenclature")
code = NOMENCL_CODE;
else if (cmd.argument() == "nomencl_print")
@@ -2494,8 +2499,6 @@ bool Text::getStatus(Cursor & cur, FuncRequest const &
cmd,
code = VSPACE_CODE;
else if (cmd.argument() == "wrap")
code = WRAP_CODE;
- else if (cmd.argument() == "listings")
- code = LISTINGS_CODE;
break;
case LFUN_ERT_INSERT:
@@ -2896,7 +2899,8 @@ bool Text::getStatus(Cursor & cur, FuncRequest const &
cmd,
case LFUN_NEWLINE_INSERT:
// LaTeX restrictions (labels or empty par)
- enable = (cur.pos() > cur.paragraph().beginOfBody());
+ enable = !cur.paragraph().isPassThru()
+ && cur.pos() > cur.paragraph().beginOfBody();
break;
case LFUN_TAB_INSERT:
diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp
index 7b69bb9..28c6f3a 100644
--- a/src/frontends/qt4/GuiView.cpp
+++ b/src/frontends/qt4/GuiView.cpp
@@ -1732,7 +1732,8 @@ bool GuiView::getStatus(FuncRequest const & cmd,
FuncStatus & flag)
else if (name == "print")
enable = doc_buffer->params().isExportable("dvi")
&& lyxrc.print_command != "none";
- else if (name == "character" || name == "symbols") {
+ else if (name == "character" || name == "symbols"
+ || name == "mathdelimiter" || name == "mathmatrix") {
if (!buf || buf->isReadonly())
enable = false;
else {