]> git.lyx.org Git - features.git/blobdiff - src/insets/InsetCollapsable.cpp
* Lazy MathData to avoid unneeded interpretation of macro definitions
[features.git] / src / insets / InsetCollapsable.cpp
index 03b6c4915e5a8a7fdab0c22348aaf6a6f603a549..fe747bc9e8b840db7e264d4d4a53d3e0edc0372d 100644 (file)
 #include "BufferParams.h"
 #include "BufferView.h"
 #include "Cursor.h"
-#include "debug.h"
+#include "support/debug.h"
 #include "Dimension.h"
 #include "DispatchResult.h"
 #include "FloatList.h"
 #include "FuncStatus.h"
-#include "gettext.h"
+#include "support/gettext.h"
 #include "Language.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "FuncRequest.h"
 #include "MetricsInfo.h"
 #include "ParagraphParameters.h"
+#include "TextClass.h"
 
 #include "frontends/FontMetrics.h"
 #include "frontends/Painter.h"
 
+#include "support/docstream.h"
 
-namespace lyx {
+using namespace std;
 
-using std::endl;
-using std::max;
-using std::ostream;
-using std::string;
+namespace lyx {
 
 
 InsetCollapsable::CollapseStatus InsetCollapsable::status() const
@@ -87,11 +86,9 @@ InsetCollapsable::InsetCollapsable(BufferParams const & bp,
 
 InsetCollapsable::InsetCollapsable(InsetCollapsable const & rhs)
        : InsetText(rhs),
-               button_dim(rhs.button_dim),
-               topx(rhs.topx),
-               topbaseline(rhs.topbaseline),
                layout_(rhs.layout_),
                labelstring_(rhs.labelstring_),
+               button_dim(rhs.button_dim),
                status_(rhs.status_),
                openinlined_(rhs.openinlined_),
                autoOpen_(rhs.autoOpen_),
@@ -155,8 +152,7 @@ void InsetCollapsable::read(Buffer const & buf, Lexer & lex)
                                lex.pushToken(token);
                        }
                } else {
-                       lyxerr << "InsetCollapsable::read: Missing 'status'-tag!"
-                                  << endl;
+                       LYXERR0("InsetCollapsable::read: Missing 'status'-tag!");
                        // take countermeasures
                        lex.pushToken(token);
                }
@@ -325,7 +321,7 @@ void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const
                pi.pain.line(xx1, y + desc - 4, 
                             xx1, y + desc, 
                        layout_->labelfont.color());
-               if (internalStatus() == Open)
+               if (status_ == Open)
                        pi.pain.line(xx1, y + desc, 
                                xx2, y + desc,
                                layout_->labelfont.color());
@@ -430,7 +426,7 @@ docstring const InsetCollapsable::getNewLabel(docstring const & l) const
        docstring label;
        pos_type const max_length = 15;
        pos_type const p_siz = paragraphs().begin()->size();
-       pos_type const n = std::min(max_length, p_siz);
+       pos_type const n = min(max_length, p_siz);
        pos_type i = 0;
        pos_type j = 0;
        for (; i < n && j < p_siz; ++j) {
@@ -511,7 +507,7 @@ void InsetCollapsable::doDispatch(Cursor & cur, FuncRequest & cmd)
                        if (geometry() == Corners ||
                            geometry() == SubLabel ||
                            geometry() == NoButton)  {
-                               if (internalStatus() == Open)
+                               if (status_ == Open)
                                        setStatus(cur, Collapsed);
                                else
                                        setStatus(cur, Open);
@@ -562,7 +558,7 @@ void InsetCollapsable::doDispatch(Cursor & cur, FuncRequest & cmd)
                else if (cmd.argument() == "close")
                        setStatus(cur, Collapsed);
                else if (cmd.argument() == "toggle" || cmd.argument().empty())
-                       if (internalStatus() == Open) {
+                       if (status_ == Open) {
                                setStatus(cur, Collapsed);
                                if (geometry() == ButtonOnly)
                                        cur.top().forwardPos();
@@ -611,7 +607,7 @@ bool InsetCollapsable::allowMultiPar() const
 void InsetCollapsable::resetParagraphsFont()
 {
        Font font;
-       font.fontInfo() = sane_font;
+       font.fontInfo() = inherit_font;
        if (layout_->forceltr)
                font.setLanguage(latex_language);
        if (layout_->passthru) {
@@ -652,14 +648,12 @@ bool InsetCollapsable::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_BIBITEM_INSERT:
        case LFUN_BOX_INSERT:
        case LFUN_BRANCH_INSERT:
-       case LFUN_BREAK_LINE:
+       case LFUN_NEW_LINE:
        case LFUN_CAPTION_INSERT:
        case LFUN_CLEARPAGE_INSERT:
        case LFUN_CLEARDOUBLEPAGE_INSERT:
        case LFUN_DEPTH_DECREMENT:
        case LFUN_DEPTH_INCREMENT:
-       case LFUN_DOTS_INSERT:
-       case LFUN_END_OF_SENTENCE_PERIOD_INSERT:
        case LFUN_ENVIRONMENT_INSERT:
        case LFUN_ERT_INSERT:
        case LFUN_FILE_INSERT:
@@ -684,14 +678,13 @@ bool InsetCollapsable::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_FOOTNOTE_INSERT:
        case LFUN_HFILL_INSERT:
        case LFUN_HYPERLINK_INSERT:
-       case LFUN_HYPHENATION_POINT_INSERT:
        case LFUN_INDEX_INSERT:
        case LFUN_INDEX_PRINT:
        case LFUN_INSET_INSERT:
        case LFUN_LABEL_GOTO:
        case LFUN_LABEL_INSERT:
-       case LFUN_LIGATURE_BREAK_INSERT:
        case LFUN_LINE_INSERT:
+       case LFUN_NEWPAGE_INSERT:
        case LFUN_PAGEBREAK_INSERT:
        case LFUN_LAYOUT:
        case LFUN_LAYOUT_PARAGRAPH:
@@ -702,7 +695,6 @@ bool InsetCollapsable::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_MATH_MATRIX:
        case LFUN_MATH_MODE:
        case LFUN_MENU_OPEN:
-       case LFUN_MENU_SEPARATOR_INSERT:
        case LFUN_NOACTION:
        case LFUN_NOMENCL_INSERT:
        case LFUN_NOMENCL_PRINT:
@@ -718,6 +710,7 @@ bool InsetCollapsable::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_SERVER_NOTIFY:
        case LFUN_SERVER_SET_XY:
        case LFUN_SPACE_INSERT:
+       case LFUN_SPECIALCHAR_INSERT:
        case LFUN_TABULAR_INSERT:
        case LFUN_TOC_INSERT:
        case LFUN_WRAP_INSERT:
@@ -789,6 +782,22 @@ InsetCollapsable::Decoration InsetCollapsable::decoration() const
 }
 
 
+bool InsetCollapsable::isMacroScope(Buffer const & buf) const
+{
+       // layout_ == 0 leads to no latex output, so ignore 
+       // the macros outside
+       if (!layout_)
+               return true;
+
+       // see InsetCollapsable::latex(...) below. In these case
+       // an environment is opened there
+       if (!layout_->latexname.empty())
+               return true;
+
+       return false;
+}
+
+
 int InsetCollapsable::latex(Buffer const & buf, odocstream & os,
                          OutputParams const & runparams) const
 {