From ad29b0067f24af2c115f726a54a246227f1d105e Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Wed, 12 Sep 2018 15:26:15 +0200 Subject: [PATCH] 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 4661b76fdb..2b0903c750 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 302c958a1e..0f76671ea8 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(int(d1) | int(d2)); -} - - -inline Inset::DisplayType operator&(Inset::DisplayType const d1, - Inset::DisplayType const d2) -{ - return static_cast(int(d1) & int(d2)); -} - - } // namespace lyx #endif diff --git a/src/insets/InsetBibtex.h b/src/insets/InsetBibtex.h index c618574a47..f2b8dd1576 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 04c57707af..e181bd738a 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 1d3cac1bb9..92dc9405c2 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 8c2a57128f..3d6a7a3569 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 d6936c837e..2d91f62bd2 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 8dc14b967c..01bf7096b0 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 1b1debb18d..ec9ad7225f 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 a2848a1e31..2dc9c553ed 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 51142d0e2d..51f640a097 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 b5a4e9315c..4d11a47d79 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 920ebd82b7..02f47ba30e 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 5c99df1909..9df1a501a2 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 c42aa1fa72..0f5a5b201d 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 8057962d9b..918492fb55 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 0b755aa118..3107b6255d 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 4d53b956c2..5d080ccae6 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 29d5e91e76..4d48c3220f 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 0680d93be8..324987c8a4 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 42d76bc997..21afbcd036 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 1c40a72e0f..dffef84731 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);