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);