commit ad29b0067f24af2c115f726a54a246227f1d105e
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Wed Sep 12 15:26:15 2018 +0200

    Revert "Use new display() values to remove some inset hardcoding."
    
    This is a work in progress that committed by mistake.
    
    This reverts commit b28ec44476d3f2c5858d06596ed5bd975012ec33.
---
 src/TextMetrics.cpp          |   37 +++++++++++++++++++++++--------------
 src/insets/Inset.h           |   35 ++++-------------------------------
 src/insets/InsetBibtex.h     |    2 +-
 src/insets/InsetBox.h        |    2 ++
 src/insets/InsetCaption.h    |    2 +-
 src/insets/InsetFloatList.h  |    2 +-
 src/insets/InsetInclude.cpp  |    2 +-
 src/insets/InsetIndex.h      |    2 +-
 src/insets/InsetListings.cpp |    2 +-
 src/insets/InsetNewline.h    |    2 --
 src/insets/InsetNewpage.h    |    2 +-
 src/insets/InsetNomencl.h    |    2 +-
 src/insets/InsetNote.cpp     |    6 ++++++
 src/insets/InsetNote.h       |    2 ++
 src/insets/InsetRef.h        |    4 +++-
 src/insets/InsetScript.cpp   |    6 ++++++
 src/insets/InsetScript.h     |    2 ++
 src/insets/InsetSeparator.h  |    2 --
 src/insets/InsetTOC.h        |    2 +-
 src/insets/InsetTabular.cpp  |    8 ++++----
 src/insets/InsetVSpace.h     |    2 +-
 src/mathed/InsetMathHull.cpp |   20 ++++++++++----------
 22 files changed, 72 insertions(+), 74 deletions(-)

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 4661b76..2b0903c 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -557,13 +557,19 @@ LyXAlignment TextMetrics::getAlign(Paragraph const & par, 
Row const & row) const
 
        // Display-style insets should always be on a centered row
        if (Inset const * inset = par.getInset(row.pos())) {
-               if (inset->display() & Inset::Display) {
-                       if (inset->display() & Inset::AlignLeft)
-                               align = LYX_ALIGN_BLOCK;
-                       else if (inset->display() & Inset::AlignRight)
-                               align = LYX_ALIGN_RIGHT;
-                       else
-                               align = LYX_ALIGN_CENTER;
+               switch (inset->display()) {
+               case Inset::AlignLeft:
+                       align = LYX_ALIGN_BLOCK;
+                       break;
+               case Inset::AlignCenter:
+                       align = LYX_ALIGN_CENTER;
+                       break;
+               case Inset::Inline:
+                       // unchanged (use align)
+                       break;
+               case Inset::AlignRight:
+                       align = LYX_ALIGN_RIGHT;
+                       break;
                }
        }
 
@@ -914,12 +920,15 @@ bool TextMetrics::breakRow(Row & row, int const 
right_margin) const
                }
 
                // Handle some situations that abruptly terminate the row
-               // - Before an inset with BreakBefore
-               // - After an inset with BreakAfter
-               Inset const * prevInset = !row.empty() ? row.back().inset : 0;
-               Inset const * nextInset = (i + 1 < end) ? par.getInset(i + 1) : 
0;
-               if ((nextInset && nextInset->display() & Inset::BreakBefore)
-                   || (prevInset && prevInset->display() & Inset::BreakAfter)) 
{
+               // - A newline inset
+               // - Before a display inset
+               // - After a display inset
+               Inset const * inset = 0;
+               if (par.isNewline(i) || par.isEnvSeparator(i)
+                   || (i + 1 < end && (inset = par.getInset(i + 1))
+                       && inset->display())
+                   || (!row.empty() && row.back().inset
+                       && row.back().inset->display())) {
                        row.flushed(true);
                        need_new_row = par.isNewline(i);
                        ++i;
@@ -1744,7 +1753,7 @@ int TextMetrics::leftMargin(pit_type const pit, pos_type 
const pos) const
            // display style insets are always centered, omit indentation
            && !(!par.empty()
                 && par.isInset(pos)
-                && par.getInset(pos)->display() & Inset::Display)
+                && par.getInset(pos)->display())
            && (!(tclass.isDefaultLayout(par.layout())
                || tclass.isPlainLayout(par.layout()))
                || buffer.params().paragraph_separation
diff --git a/src/insets/Inset.h b/src/insets/Inset.h
index 302c958..0f76671 100644
--- a/src/insets/Inset.h
+++ b/src/insets/Inset.h
@@ -467,26 +467,14 @@ public:
        /// does this inset try to use all available space (like \\hfill does)?
        virtual bool isHfill() const { return false; }
 
-       // Describe how the inset should be typeset
        enum DisplayType {
                Inline = 0,
-               // break row before this inset
-               BreakBefore = 1,
-               // break row after this inset
-               BreakAfter = 2,
-               // optionally break row after this inset (not used yet)
-               CanBreakAfter = 4,
-               // specify an alignment (left, right) for a display inset 
(default is center)
-               AlignLeft = 8,
-               AlignRight = 16,
-               // do not allow cursor to go at the end of the row before
-               // a display inset (not used yet)
-               NoBoundary = 32,
-               // A display inset breaks row at both ends
-               Display = BreakBefore | BreakAfter
+               AlignLeft,
+               AlignCenter,
+               AlignRight
        };
 
-       /// How should this inset be typeset?
+       /// should we have a non-filled line before this inset?
        virtual DisplayType display() const { return Inline; }
        /// indentation before this inset (only needed for displayed hull 
insets with fleqn option)
        virtual int indent(BufferView const &) const { return 0; }
@@ -646,21 +634,6 @@ protected:
        Buffer * buffer_;
 };
 
-
-inline Inset::DisplayType operator|(Inset::DisplayType const d1,
-                                    Inset::DisplayType const d2)
-{
-       return static_cast<Inset::DisplayType>(int(d1) | int(d2));
-}
-
-
-inline Inset::DisplayType operator&(Inset::DisplayType const d1,
-                                    Inset::DisplayType const d2)
-{
-       return static_cast<Inset::DisplayType>(int(d1) & int(d2));
-}
-
-
 } // namespace lyx
 
 #endif
diff --git a/src/insets/InsetBibtex.h b/src/insets/InsetBibtex.h
index c618574..f2b8dd1 100644
--- a/src/insets/InsetBibtex.h
+++ b/src/insets/InsetBibtex.h
@@ -48,7 +48,7 @@ public:
        ///
        InsetCode lyxCode() const { return BIBTEX_CODE; }
        ///
-       DisplayType display() const { return Display; }
+       DisplayType display() const { return AlignCenter; }
        ///
        void latex(otexstream &, OutputParams const &) const;
        ///
diff --git a/src/insets/InsetBox.h b/src/insets/InsetBox.h
index 04c5770..e181bd7 100644
--- a/src/insets/InsetBox.h
+++ b/src/insets/InsetBox.h
@@ -111,6 +111,8 @@ public:
        ///
        void metrics(MetricsInfo &, Dimension &) const;
        ///
+       DisplayType display() const { return Inline; }
+       ///
        ColorCode backgroundColor(PainterInfo const &) const;
        ///
        LyXAlignment contentAlignment() const;
diff --git a/src/insets/InsetCaption.h b/src/insets/InsetCaption.h
index 1d3cac1..92dc940 100644
--- a/src/insets/InsetCaption.h
+++ b/src/insets/InsetCaption.h
@@ -38,7 +38,7 @@ private:
        ///
        void write(std::ostream & os) const;
        ///
-       DisplayType display() const { return Display; }
+       DisplayType display() const { return AlignCenter; }
        ///
        bool neverIndent() const { return true; }
        ///
diff --git a/src/insets/InsetFloatList.h b/src/insets/InsetFloatList.h
index 8c2a571..3d6a7a3 100644
--- a/src/insets/InsetFloatList.h
+++ b/src/insets/InsetFloatList.h
@@ -32,7 +32,7 @@ public:
        ///
        InsetCode lyxCode() const { return FLOAT_LIST_CODE; }
        ///
-       DisplayType display() const { return Display; }
+       DisplayType display() const { return AlignCenter; }
        ///
        void write(std::ostream &) const;
        ///
diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp
index d6936c8..2d91f62 100644
--- a/src/insets/InsetInclude.cpp
+++ b/src/insets/InsetInclude.cpp
@@ -1159,7 +1159,7 @@ string InsetInclude::contextMenuName() const
 
 Inset::DisplayType InsetInclude::display() const
 {
-       return type(params()) == INPUT ? Inline : Display;
+       return type(params()) == INPUT ? Inline : AlignCenter;
 }
 
 
diff --git a/src/insets/InsetIndex.h b/src/insets/InsetIndex.h
index 8dc14b9..01bf709 100644
--- a/src/insets/InsetIndex.h
+++ b/src/insets/InsetIndex.h
@@ -119,7 +119,7 @@ public:
        ///
        bool hasSettings() const;
        ///
-       DisplayType display() const { return Display; }
+       DisplayType display() const { return AlignCenter; }
        //@}
 
        /// \name Static public methods obligated for InsetCommand derived 
classes
diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp
index 1b1debb..ec9ad72 100644
--- a/src/insets/InsetListings.cpp
+++ b/src/insets/InsetListings.cpp
@@ -68,7 +68,7 @@ InsetListings::~InsetListings()
 
 Inset::DisplayType InsetListings::display() const
 {
-       return params().isInline() || params().isFloat() ? Inline : Display | 
AlignLeft;
+       return params().isInline() || params().isFloat() ? Inline : AlignLeft;
 }
 
 
diff --git a/src/insets/InsetNewline.h b/src/insets/InsetNewline.h
index a2848a1..2dc9c55 100644
--- a/src/insets/InsetNewline.h
+++ b/src/insets/InsetNewline.h
@@ -47,8 +47,6 @@ public:
        InsetNewline(InsetNewlineParams par) : Inset(0)
        { params_.kind = par.kind; }
        ///
-       DisplayType display() const { return BreakAfter | NoBoundary; }
-       ///
        static void string2params(std::string const &, InsetNewlineParams &);
        ///
        static std::string params2string(InsetNewlineParams const &);
diff --git a/src/insets/InsetNewpage.h b/src/insets/InsetNewpage.h
index 51142d0..51f640a 100644
--- a/src/insets/InsetNewpage.h
+++ b/src/insets/InsetNewpage.h
@@ -76,7 +76,7 @@ private:
        ///
        void write(std::ostream & os) const;
        ///
-       DisplayType display() const { return Display; }
+       DisplayType display() const { return AlignCenter; }
        ///
        docstring insetLabel() const;
        ///
diff --git a/src/insets/InsetNomencl.h b/src/insets/InsetNomencl.h
index b5a4e93..4d11a47 100644
--- a/src/insets/InsetNomencl.h
+++ b/src/insets/InsetNomencl.h
@@ -100,7 +100,7 @@ public:
        ///
        bool hasSettings() const { return true; }
        ///
-       DisplayType display() const { return Display; }
+       DisplayType display() const { return AlignCenter; }
        ///
        void latex(otexstream &, OutputParams const &) const;
        ///
diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp
index 920ebd8..02f47ba 100644
--- a/src/insets/InsetNote.cpp
+++ b/src/insets/InsetNote.cpp
@@ -116,6 +116,12 @@ docstring InsetNote::layoutName() const
 }
 
 
+Inset::DisplayType InsetNote::display() const
+{
+       return Inline;
+}
+
+
 void InsetNote::write(ostream & os) const
 {
        params_.write(os);
diff --git a/src/insets/InsetNote.h b/src/insets/InsetNote.h
index 5c99df1..9df1a50 100644
--- a/src/insets/InsetNote.h
+++ b/src/insets/InsetNote.h
@@ -61,6 +61,8 @@ private:
        InsetCode lyxCode() const { return NOTE_CODE; }
        ///
        docstring layoutName() const;
+       ///
+       DisplayType display() const;
        /** returns false if, when outputing LaTeX, font changes should
            be closed before generating this inset. This is needed for
            insets that may contain several paragraphs */
diff --git a/src/insets/InsetRef.h b/src/insets/InsetRef.h
index c42aa1f..0f5a5b2 100644
--- a/src/insets/InsetRef.h
+++ b/src/insets/InsetRef.h
@@ -49,12 +49,14 @@ public:
        docstring toolTip(BufferView const &, int, int) const
                { return tooltip_; }
        ///
-       docstring getTOCString() const;
+  docstring getTOCString() const;
        ///
        bool hasSettings() const { return true; }
        ///
        InsetCode lyxCode() const { return REF_CODE; }
        ///
+       DisplayType display() const { return Inline; }
+       ///
        void latex(otexstream &, OutputParams const &) const;
        ///
        int plaintext(odocstringstream & ods, OutputParams const & op,
diff --git a/src/insets/InsetScript.cpp b/src/insets/InsetScript.cpp
index 8057962..918492f 100644
--- a/src/insets/InsetScript.cpp
+++ b/src/insets/InsetScript.cpp
@@ -151,6 +151,12 @@ docstring InsetScript::layoutName() const
 }
 
 
+Inset::DisplayType InsetScript::display() const
+{
+       return Inline;
+}
+
+
 void InsetScript::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        int const shift = params_.shift(mi.base.font);
diff --git a/src/insets/InsetScript.h b/src/insets/InsetScript.h
index 0b755aa..3107b62 100644
--- a/src/insets/InsetScript.h
+++ b/src/insets/InsetScript.h
@@ -67,6 +67,8 @@ public:
        ///
        docstring layoutName() const;
        ///
+       DisplayType display() const;
+       ///
        void metrics(MetricsInfo &, Dimension &) const;
        ///
        void draw(PainterInfo & pi, int x, int y) const;
diff --git a/src/insets/InsetSeparator.h b/src/insets/InsetSeparator.h
index 4d53b95..5d080cc 100644
--- a/src/insets/InsetSeparator.h
+++ b/src/insets/InsetSeparator.h
@@ -64,8 +64,6 @@ public:
                // remove warning
                return docstring();
        }
-       ///
-       DisplayType display() const { return BreakAfter | NoBoundary; }
 private:
        ///
        InsetSeparatorParams params() const { return params_; }
diff --git a/src/insets/InsetTOC.h b/src/insets/InsetTOC.h
index 29d5e91..4d48c32 100644
--- a/src/insets/InsetTOC.h
+++ b/src/insets/InsetTOC.h
@@ -37,7 +37,7 @@ public:
        ///
        docstring layoutName() const;
        ///
-       DisplayType display() const { return Display; }
+       DisplayType display() const { return AlignCenter; }
        ///
        virtual void validate(LaTeXFeatures &) const;
        ///
diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 0680d93..324987c 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -5396,13 +5396,13 @@ Inset::DisplayType InsetTabular::display() const
                if (tabular.is_long_tabular) {
                        switch (tabular.longtabular_alignment) {
                        case Tabular::LYX_LONGTABULAR_ALIGN_LEFT:
-                               return Display | AlignLeft;
+                               return AlignLeft;
                        case Tabular::LYX_LONGTABULAR_ALIGN_CENTER:
-                               return Display;
+                               return AlignCenter;
                        case Tabular::LYX_LONGTABULAR_ALIGN_RIGHT:
-                               return Display | AlignRight;
+                               return AlignRight;
                        default:
-                               return Display;
+                               return AlignCenter;
                        }
                } else
                        return Inline;
diff --git a/src/insets/InsetVSpace.h b/src/insets/InsetVSpace.h
index 42d76bc..21afbcd 100644
--- a/src/insets/InsetVSpace.h
+++ b/src/insets/InsetVSpace.h
@@ -62,7 +62,7 @@ private:
        ///
        void write(std::ostream & os) const;
        ///
-       DisplayType display() const { return Display; }
+       DisplayType display() const { return AlignCenter; }
        ///
        void doDispatch(Cursor & cur, FuncRequest & cmd);
        ///
diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index 1c40a72..dffef84 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -540,7 +540,7 @@ void InsetMathHull::metrics(MetricsInfo & mi, Dimension & 
dim) const
                        // insert a gap in front of the formula
                        // value was hardcoded to 1 pixel
                        dim.wid += mi.base.bv->zoomedPixels(1) ;
-                       if (display() != Inline) {
+                       if (display()) {
                                dim.asc += display_margin;
                                dim.des += display_margin;
                        }
@@ -549,13 +549,13 @@ void InsetMathHull::metrics(MetricsInfo & mi, Dimension & 
dim) const
        }
 
        Changer dummy1 = mi.base.changeFontSet(standardFont());
-       Changer dummy2 = mi.base.font.changeStyle(display() != Inline ? 
LM_ST_DISPLAY
+       Changer dummy2 = mi.base.font.changeStyle(display() ? LM_ST_DISPLAY
                                                            : LM_ST_TEXT);
 
        // let the cells adjust themselves
        InsetMathGrid::metrics(mi, dim);
 
-       if (display() != Inline) {
+       if (display()) {
                dim.asc += display_margin;
                dim.des += display_margin;
        }
@@ -653,7 +653,7 @@ void InsetMathHull::draw(PainterInfo & pi, int x, int y) 
const
        Changer dummy0 = really_change_color ? pi.base.font.changeColor(color)
                : Changer();
        Changer dummy1 = pi.base.changeFontSet(standardFont());
-       Changer dummy2 = pi.base.font.changeStyle(display() != Inline ? 
LM_ST_DISPLAY
+       Changer dummy2 = pi.base.font.changeStyle(display() ? LM_ST_DISPLAY
                                                            : LM_ST_TEXT);
 
        int xmath = x;
@@ -695,7 +695,7 @@ void InsetMathHull::draw(PainterInfo & pi, int x, int y) 
const
 
 void InsetMathHull::metricsT(TextMetricsInfo const & mi, Dimension & dim) const
 {
-       if (display() != Inline) {
+       if (display()) {
                InsetMathGrid::metricsT(mi, dim);
        } else {
                odocstringstream os;
@@ -711,7 +711,7 @@ void InsetMathHull::metricsT(TextMetricsInfo const & mi, 
Dimension & dim) const
 
 void InsetMathHull::drawT(TextPainter & pain, int x, int y) const
 {
-       if (display() != Inline) {
+       if (display()) {
                InsetMathGrid::drawT(pain, x, y);
        } else {
                odocstringstream os;
@@ -1022,12 +1022,12 @@ Inset::DisplayType InsetMathHull::display() const
        case hullMultline:
        case hullGather:
                if (buffer().params().is_math_indent)
-                       return Display | AlignLeft;
+                       return AlignLeft;
                else
-                       return Display;
+                       return AlignCenter;
        }
        // avoid warning
-       return Display;
+       return AlignCenter;
 }
 
 
@@ -2324,7 +2324,7 @@ int InsetMathHull::plaintext(odocstringstream & os,
         OutputParams const & op, size_t max_length) const
 {
        // Try enabling this now that there is a flag as requested at #2275.
-       if (buffer().isExporting() && display() != Inline) {
+       if (buffer().isExporting() && display()) {
                Dimension dim;
                TextMetricsInfo mi;
                metricsT(mi, dim);

Reply via email to