From 3d443b4c9dc657663a7d67c8254894345e551a06 Mon Sep 17 00:00:00 2001 From: Martin Vermeer Date: Tue, 30 Oct 2007 12:30:46 +0000 Subject: [PATCH] Implement ForceLtR; cleanup of collapsable insets git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21285 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/layouts/stdinsets.inc | 19 +++ lib/layouts/url.module | 1 + src/insets/InsetCollapsable.cpp | 271 ++++++++++++++++++++------------ src/insets/InsetCollapsable.h | 4 + src/insets/InsetERT.cpp | 30 ---- src/insets/InsetERT.h | 6 +- src/insets/InsetFlex.cpp | 50 ------ src/insets/InsetFlex.h | 9 -- src/insets/InsetIndex.cpp | 44 ------ src/insets/InsetIndex.h | 9 -- src/insets/InsetListings.cpp | 49 ++---- src/insets/InsetListings.h | 8 +- 12 files changed, 213 insertions(+), 287 deletions(-) diff --git a/lib/layouts/stdinsets.inc b/lib/layouts/stdinsets.inc index 41293be1fa..ca39c88eea 100644 --- a/lib/layouts/stdinsets.inc +++ b/lib/layouts/stdinsets.inc @@ -103,6 +103,25 @@ InsetLayout ERT PassThru true KeepEmpty true FreeSpacing true + ForceLTR true +End + +InsetLayout Listings + LabelString Listings + LatexType none + Decoration minimalistic + Font + Color black + Family typewriter + EndFont + LabelFont + Color black + Size Small + EndFont + MultiPar true + PassThru true + KeepEmpty true + FreeSpacing true End InsetLayout Branch diff --git a/lib/layouts/url.module b/lib/layouts/url.module index 37068bfe73..8bf8ac39bc 100644 --- a/lib/layouts/url.module +++ b/lib/layouts/url.module @@ -9,6 +9,7 @@ InsetLayout URL Decoration minimalistic LabelString URL PassThru true + ForceLTR true Font Family Typewriter Color Blue diff --git a/src/insets/InsetCollapsable.cpp b/src/insets/InsetCollapsable.cpp index d60bb81718..4fbf2f1469 100644 --- a/src/insets/InsetCollapsable.cpp +++ b/src/insets/InsetCollapsable.cpp @@ -23,10 +23,12 @@ #include "FloatList.h" #include "FuncStatus.h" #include "gettext.h" +#include "Language.h" #include "LaTeXFeatures.h" #include "Lexer.h" #include "FuncRequest.h" #include "MetricsInfo.h" +#include "ParagraphParameters.h" #include "frontends/FontMetrics.h" #include "frontends/Painter.h" @@ -157,6 +159,15 @@ void InsetCollapsable::read(Buffer const & buf, Lexer & lex) status_ = isOpen() ? Open : Collapsed; setButtonLabel(); + + // Force default font, if so requested + // This avoids paragraphs in buffer language that would have a + // foreign language after a document language change, and it ensures + // that all new text in ERT and similar gets the "latex" language, + // since new text inherits the language from the last position of the + // existing text. As a side effect this makes us also robust against + // bugs in LyX that might lead to font changes in ERT in .lyx files. + resetParagraphsFont(); } @@ -173,6 +184,10 @@ void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const { autoOpen_ = mi.base.bv->cursor().isInside(this); + FontInfo tmpfont = mi.base.font; + getDrawFont(mi.base.font); + mi.base.font.realize(tmpfont); + switch (geometry()) { case NoButton: InsetText::metrics(mi, dim); @@ -218,6 +233,8 @@ void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const } break; } + + mi.base.font = tmpfont; } @@ -234,6 +251,10 @@ void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const ColorCode const old_color = pi.background_color; pi.background_color = backgroundColor(); + FontInfo tmpfont = pi.base.font; + getDrawFont(pi.base.font); + pi.base.font.realize(tmpfont); + // Draw button first -- top, left or only Dimension dimc = dimensionCollapsed(); @@ -339,6 +360,8 @@ void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const break; } pi.background_color = old_color; + + pi.base.font = tmpfont; } @@ -538,7 +561,29 @@ void InsetCollapsable::doDispatch(Cursor & cur, FuncRequest & cmd) cur.dispatched(); break; + case LFUN_PASTE: + case LFUN_CLIPBOARD_PASTE: + case LFUN_PRIMARY_SELECTION_PASTE: { + InsetText::doDispatch(cur, cmd); + // Since we can only store plain text, we must reset all + // attributes. + // FIXME: Change only the pasted paragraphs + + resetParagraphsFont(); + break; + } + default: + if (layout_.forceltr) { + // Force any new text to latex_language + // FIXME: This should only be necessary in constructor, but + // new paragraphs that are created by pressing enter at the + // start of an existing paragraph get the buffer language + // and not latex_language, so we take this brute force + // approach. + cur.current_font.setLanguage(latex_language); + cur.real_current_font.setLanguage(latex_language); + } InsetText::doDispatch(cur, cmd); break; } @@ -551,107 +596,130 @@ bool InsetCollapsable::allowMultiPar() const } +void InsetCollapsable::resetParagraphsFont() +{ + Font font; + font.fontInfo() = layout_.font; + if (layout_.forceltr) + font.setLanguage(latex_language); + if (layout_.passthru) { + ParagraphList::iterator par = paragraphs().begin(); + ParagraphList::iterator const end = paragraphs().end(); + while (par != end) { + par->resetFonts(font); + par->params().clear(); + ++par; + } + } +} + + +void InsetCollapsable::getDrawFont(FontInfo & font) const +{ + font = layout_.font; +} + + bool InsetCollapsable::getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus & flag) const { switch (cmd.action) { - // suppress these - case LFUN_ACCENT_ACUTE: - case LFUN_ACCENT_BREVE: - case LFUN_ACCENT_CARON: - case LFUN_ACCENT_CEDILLA: - case LFUN_ACCENT_CIRCLE: - case LFUN_ACCENT_CIRCUMFLEX: - case LFUN_ACCENT_DOT: - case LFUN_ACCENT_GRAVE: - case LFUN_ACCENT_HUNGARIAN_UMLAUT: - case LFUN_ACCENT_MACRON: - case LFUN_ACCENT_OGONEK: - case LFUN_ACCENT_SPECIAL_CARON: - case LFUN_ACCENT_TIE: - case LFUN_ACCENT_TILDE: - case LFUN_ACCENT_UMLAUT: - case LFUN_ACCENT_UNDERBAR: - case LFUN_ACCENT_UNDERDOT: - case LFUN_APPENDIX: - case LFUN_BIBITEM_INSERT: - case LFUN_BOX_INSERT: - case LFUN_BRANCH_INSERT: - case LFUN_BREAK_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: - case LFUN_FLEX_INSERT: - case LFUN_FLOAT_INSERT: - case LFUN_FLOAT_LIST: - case LFUN_FLOAT_WIDE_INSERT: - case LFUN_FONT_BOLD: - case LFUN_FONT_TYPEWRITER: - case LFUN_FONT_DEFAULT: - case LFUN_FONT_EMPH: - case LFUN_FONT_FREE_APPLY: - case LFUN_FONT_FREE_UPDATE: - case LFUN_FONT_NOUN: - case LFUN_FONT_ROMAN: - case LFUN_FONT_SANS: - case LFUN_FONT_FRAK: - case LFUN_FONT_ITAL: - case LFUN_FONT_SIZE: - case LFUN_FONT_STATE: - case LFUN_FONT_UNDERLINE: - 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_PAGEBREAK_INSERT: - case LFUN_LANGUAGE: - case LFUN_LAYOUT: - case LFUN_LAYOUT_PARAGRAPH: - case LFUN_LAYOUT_TABULAR: - case LFUN_MARGINALNOTE_INSERT: - case LFUN_MATH_DISPLAY: - case LFUN_MATH_INSERT: - 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: - case LFUN_NOTE_INSERT: - case LFUN_NOTE_NEXT: - case LFUN_OPTIONAL_INSERT: - case LFUN_PARAGRAPH_PARAMS: - case LFUN_PARAGRAPH_PARAMS_APPLY: - case LFUN_PARAGRAPH_SPACING: - case LFUN_PARAGRAPH_UPDATE: - case LFUN_REFERENCE_NEXT: - case LFUN_SERVER_GOTO_FILE_ROW: - case LFUN_SERVER_NOTIFY: - case LFUN_SERVER_SET_XY: - case LFUN_SPACE_INSERT: - case LFUN_TABULAR_INSERT: - case LFUN_TOC_INSERT: - case LFUN_WRAP_INSERT: - if (layout_.passthru) { - flag.enabled(false); - return true; - } else - return InsetText::getStatus(cur, cmd, flag); + // suppress these + case LFUN_ACCENT_ACUTE: + case LFUN_ACCENT_BREVE: + case LFUN_ACCENT_CARON: + case LFUN_ACCENT_CEDILLA: + case LFUN_ACCENT_CIRCLE: + case LFUN_ACCENT_CIRCUMFLEX: + case LFUN_ACCENT_DOT: + case LFUN_ACCENT_GRAVE: + case LFUN_ACCENT_HUNGARIAN_UMLAUT: + case LFUN_ACCENT_MACRON: + case LFUN_ACCENT_OGONEK: + case LFUN_ACCENT_SPECIAL_CARON: + case LFUN_ACCENT_TIE: + case LFUN_ACCENT_TILDE: + case LFUN_ACCENT_UMLAUT: + case LFUN_ACCENT_UNDERBAR: + case LFUN_ACCENT_UNDERDOT: + case LFUN_APPENDIX: + case LFUN_BIBITEM_INSERT: + case LFUN_BOX_INSERT: + case LFUN_BRANCH_INSERT: + case LFUN_BREAK_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: + case LFUN_FLEX_INSERT: + case LFUN_FLOAT_INSERT: + case LFUN_FLOAT_LIST: + case LFUN_FLOAT_WIDE_INSERT: + case LFUN_FONT_BOLD: + case LFUN_FONT_TYPEWRITER: + case LFUN_FONT_DEFAULT: + case LFUN_FONT_EMPH: + case LFUN_FONT_FREE_APPLY: + case LFUN_FONT_FREE_UPDATE: + case LFUN_FONT_NOUN: + case LFUN_FONT_ROMAN: + case LFUN_FONT_SANS: + case LFUN_FONT_FRAK: + case LFUN_FONT_ITAL: + case LFUN_FONT_SIZE: + case LFUN_FONT_STATE: + case LFUN_FONT_UNDERLINE: + 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_PAGEBREAK_INSERT: + case LFUN_LAYOUT: + case LFUN_LAYOUT_PARAGRAPH: + case LFUN_LAYOUT_TABULAR: + case LFUN_MARGINALNOTE_INSERT: + case LFUN_MATH_DISPLAY: + case LFUN_MATH_INSERT: + 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: + case LFUN_NOTE_INSERT: + case LFUN_NOTE_NEXT: + case LFUN_OPTIONAL_INSERT: + case LFUN_PARAGRAPH_PARAMS: + case LFUN_PARAGRAPH_PARAMS_APPLY: + case LFUN_PARAGRAPH_SPACING: + case LFUN_PARAGRAPH_UPDATE: + case LFUN_REFERENCE_NEXT: + case LFUN_SERVER_GOTO_FILE_ROW: + case LFUN_SERVER_NOTIFY: + case LFUN_SERVER_SET_XY: + case LFUN_SPACE_INSERT: + case LFUN_TABULAR_INSERT: + case LFUN_TOC_INSERT: + case LFUN_WRAP_INSERT: + if (layout_.passthru) { + flag.enabled(false); + return true; + } else + return InsetText::getStatus(cur, cmd, flag); case LFUN_INSET_TOGGLE: if (cmd.argument() == "open" || cmd.argument() == "close" || @@ -661,6 +729,15 @@ bool InsetCollapsable::getStatus(Cursor & cur, FuncRequest const & cmd, flag.enabled(false); return true; + case LFUN_LANGUAGE: + flag.enabled(layout_.forceltr); + return InsetText::getStatus(cur, cmd, flag); + + case LFUN_BREAK_PARAGRAPH: + case LFUN_BREAK_PARAGRAPH_SKIP: + flag.enabled(layout_.multipar); + return true; + default: return InsetText::getStatus(cur, cmd, flag); } diff --git a/src/insets/InsetCollapsable.h b/src/insets/InsetCollapsable.h index f0d45b0fcc..e75434357e 100644 --- a/src/insets/InsetCollapsable.h +++ b/src/insets/InsetCollapsable.h @@ -157,6 +157,10 @@ protected: Inset * editXY(Cursor & cur, int x, int y); /// docstring floatName(std::string const & type, BufferParams const &) const; + /// + virtual void resetParagraphsFont(); + /// + virtual void getDrawFont(FontInfo &) const; protected: /// diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp index 06102b98ce..8342b2f8d8 100644 --- a/src/insets/InsetERT.cpp +++ b/src/insets/InsetERT.cpp @@ -121,21 +121,6 @@ void InsetERT::write(Buffer const & buf, ostream & os) const } -void InsetERT::read(Buffer const & buf, Lexer & lex) -{ - InsetCollapsable::read(buf, lex); - - // Force default font - // This avoids paragraphs in buffer language that would have a - // foreign language after a document langauge change, and it ensures - // that all new text in ERT gets the "latex" language, since new text - // inherits the language from the last position of the existing text. - // As a side effect this makes us also robust against bugs in LyX - // that might lead to font changes in ERT in .lyx files. - resetParagraphsFont(); -} - - docstring const InsetERT::editMessage() const { return _("Opened ERT Inset"); @@ -208,19 +193,6 @@ void InsetERT::doDispatch(Cursor & cur, FuncRequest & cmd) setStatus(cur, st); break; } - case LFUN_PASTE: - case LFUN_CLIPBOARD_PASTE: - case LFUN_PRIMARY_SELECTION_PASTE: { - InsetCollapsable::doDispatch(cur, cmd); - - // Since we can only store plain text, we must reset all - // attributes. - // FIXME: Change only the pasted paragraphs - - // ERT contents has always latex_language - resetParagraphsFont(); - break; - } default: // Force any new text to latex_language // FIXME: This should only be necessary in init(), but @@ -230,8 +202,6 @@ void InsetERT::doDispatch(Cursor & cur, FuncRequest & cmd) // approach. cur.current_font.fontInfo() = layout->font; cur.real_current_font.fontInfo() = layout->font; - cur.current_font.setLanguage(latex_language); - cur.real_current_font.setLanguage(latex_language); InsetCollapsable::doDispatch(cur, cmd); break; } diff --git a/src/insets/InsetERT.h b/src/insets/InsetERT.h index 8671f72959..33eb5bb27c 100644 --- a/src/insets/InsetERT.h +++ b/src/insets/InsetERT.h @@ -48,8 +48,6 @@ public: /// void write(Buffer const & buf, std::ostream & os) const; /// - void read(Buffer const & buf, Lexer & lex); - /// virtual docstring const editMessage() const; /// bool insetAllowed(InsetCode code) const; @@ -71,8 +69,6 @@ public: /// bool showInsetDialog(BufferView *) const; /// - void getDrawFont(FontInfo &) const; - /// bool forceDefaultParagraphs(idx_type) const { return true; } /// should paragraph indendation be ommitted in any case? bool neverIndent(Buffer const &) const { return true; } @@ -84,6 +80,8 @@ protected: bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const; /// void resetParagraphsFont(); + /// + void getDrawFont(FontInfo &) const; private: virtual Inset * clone() const; diff --git a/src/insets/InsetFlex.cpp b/src/insets/InsetFlex.cpp index 5ab29ad3f4..c21388d013 100644 --- a/src/insets/InsetFlex.cpp +++ b/src/insets/InsetFlex.cpp @@ -95,56 +95,6 @@ void InsetFlex::read(Buffer const & buf, Lexer & lex) } -void InsetFlex::metrics(MetricsInfo & mi, Dimension & dim) const -{ - FontInfo tmpfont = mi.base.font; - getDrawFont(mi.base.font); - mi.base.font.reduce(sane_font); - mi.base.font.realize(tmpfont); - InsetCollapsable::metrics(mi, dim); - mi.base.font = tmpfont; -} - - -void InsetFlex::draw(PainterInfo & pi, int x, int y) const -{ - FontInfo tmpfont = pi.base.font; - getDrawFont(pi.base.font); - // I don't understand why the above .reduce and .realize aren't - //needed, or even wanted, here. It just works. -- MV 10.04.2005 - InsetCollapsable::draw(pi, x, y); - pi.base.font = tmpfont; -} - - -void InsetFlex::getDrawFont(FontInfo & font) const -{ - font = layout_.font; -} - - -void InsetFlex::doDispatch(Cursor & cur, FuncRequest & cmd) -{ - InsetCollapsable::doDispatch(cur, cmd); -} - - -bool InsetFlex::getStatus(Cursor & cur, FuncRequest const & cmd, - FuncStatus & status) const -{ - switch (cmd.action) { - // paragraph breaks not allowed in flex insets - case LFUN_BREAK_PARAGRAPH: - case LFUN_BREAK_PARAGRAPH_SKIP: - status.enabled(layout_.multipar); - return true; - - default: - return InsetCollapsable::getStatus(cur, cmd, status); - } -} - - int InsetFlex::plaintext(Buffer const & buf, odocstream & os, OutputParams const & runparams) const { diff --git a/src/insets/InsetFlex.h b/src/insets/InsetFlex.h index da421d5f00..e21774e0c8 100644 --- a/src/insets/InsetFlex.h +++ b/src/insets/InsetFlex.h @@ -56,12 +56,6 @@ public: /// void read(Buffer const & buf, Lexer & lex); /// - void metrics(MetricsInfo &, Dimension &) const; - /// - void draw(PainterInfo &, int, int) const; - /// - void getDrawFont(FontInfo &) const; - /// bool forceDefaultParagraphs(idx_type) const { return true; } /// @@ -81,9 +75,6 @@ public: protected: InsetFlex(InsetFlex const &); - virtual void doDispatch(Cursor & cur, FuncRequest & cmd); - /// - bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const; private: friend class InsetFlexParams; diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp index 41c1d0dd8c..7a39680869 100644 --- a/src/insets/InsetIndex.cpp +++ b/src/insets/InsetIndex.cpp @@ -63,50 +63,6 @@ void InsetIndex::write(Buffer const & buf, std::ostream & os) const } -void InsetIndex::metrics(MetricsInfo & mi, Dimension & dim) const -{ - FontInfo tmpfont = mi.base.font; - getDrawFont(mi.base.font); - mi.base.font.realize(tmpfont); - InsetCollapsable::metrics(mi, dim); - mi.base.font = tmpfont; -} - - -void InsetIndex::draw(PainterInfo & pi, int x, int y) const -{ - FontInfo tmpfont = pi.base.font; - getDrawFont(pi.base.font); - pi.base.font.realize(tmpfont); - InsetCollapsable::draw(pi, x, y); - pi.base.font = tmpfont; -} - - -void InsetIndex::getDrawFont(FontInfo & font) const -{ - font = inherit_font; - font.realize(layout_.font); -} - - -bool InsetIndex::getStatus(Cursor & cur, FuncRequest const & cmd, - FuncStatus & status) const -{ - switch (cmd.action) { - // paragraph breaks not allowed - case LFUN_BREAK_PARAGRAPH: - case LFUN_BREAK_PARAGRAPH_SKIP: - status.enabled(false); - return true; - - default: - return InsetCollapsable::getStatus(cur, cmd, status); - } -} - - - InsetPrintIndex::InsetPrintIndex(InsetCommandParams const & p) : InsetCommand(p, string()) {} diff --git a/src/insets/InsetIndex.h b/src/insets/InsetIndex.h index 8ffab82b9c..44ada403d3 100644 --- a/src/insets/InsetIndex.h +++ b/src/insets/InsetIndex.h @@ -34,15 +34,8 @@ public: /// InsetCode lyxCode() const { return INDEX_CODE; } /// - /// - void metrics(MetricsInfo &, Dimension &) const; - /// - void draw(PainterInfo &, int, int) const; - /// docstring name() const { return from_ascii("Index"); } /// - void getDrawFont(FontInfo &) const; - /// void write(Buffer const & buf, std::ostream & os) const; /// int docbook(Buffer const &, odocstream &, @@ -50,8 +43,6 @@ public: /// should paragraph indendation be omitted in any case? bool neverIndent(Buffer const &) const { return true; } private: - /// - bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const; /// virtual Inset * clone() const; }; diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp index 6aafaa4f5b..b52e9fb9af 100644 --- a/src/insets/InsetListings.cpp +++ b/src/insets/InsetListings.cpp @@ -59,14 +59,15 @@ void InsetListings::init() InsetListings::InsetListings(BufferParams const & bp, InsetListingsParams const & par) - : InsetERT(bp, par.status()) + : InsetCollapsable(bp, par.status()) { + setLayout(bp); init(); } InsetListings::InsetListings(InsetListings const & in) - : InsetERT(in), params_(in.params_) + : InsetCollapsable(in), params_(in.params_) { init(); } @@ -139,7 +140,7 @@ void InsetListings::read(Buffer const & buf, Lexer & lex) break; } } - InsetERT::read(buf, lex); + InsetCollapsable::read(buf, lex); } @@ -244,11 +245,11 @@ void InsetListings::doDispatch(Cursor & cur, FuncRequest & cmd) InsetListingsMailer(*this).showDialog(&cur.bv()); break; } - InsetERT::doDispatch(cur, cmd); + InsetCollapsable::doDispatch(cur, cmd); break; } default: - InsetERT::doDispatch(cur, cmd); + InsetCollapsable::doDispatch(cur, cmd); break; } } @@ -265,7 +266,7 @@ bool InsetListings::getStatus(Cursor & cur, FuncRequest const & cmd, status.enabled(!params().isInline()); return true; default: - return InsetERT::getStatus(cur, cmd, status); + return InsetCollapsable::getStatus(cur, cmd, status); } } @@ -273,34 +274,17 @@ bool InsetListings::getStatus(Cursor & cur, FuncRequest const & cmd, void InsetListings::setButtonLabel() { // FIXME UNICODE - setLabel(isOpen() ? _("Listing") : getNewLabel(_("Listing"))); -} - - -void InsetListings::metrics(MetricsInfo & mi, Dimension & dim) const -{ - FontInfo tmpfont = mi.base.font; - getDrawFont(mi.base.font); - mi.base.font.realize(tmpfont); - InsetCollapsable::metrics(mi, dim); - mi.base.font = tmpfont; -} - - -void InsetListings::draw(PainterInfo & pi, int x, int y) const -{ - FontInfo tmpfont = pi.base.font; - getDrawFont(pi.base.font); - pi.base.font.realize(tmpfont); - InsetCollapsable::draw(pi, x, y); - pi.base.font = tmpfont; + if (decoration() == Classic) + setLabel(isOpen() ? _("Listing") : getNewLabel(_("Listing"))); + else + setLabel(getNewLabel(_("Listing"))); } void InsetListings::validate(LaTeXFeatures & features) const { features.require("listings"); - InsetERT::validate(features); + InsetCollapsable::validate(features); } @@ -311,15 +295,6 @@ bool InsetListings::showInsetDialog(BufferView * bv) const } -void InsetListings::getDrawFont(FontInfo & font) const -{ - font = inherit_font; - font.setFamily(TYPEWRITER_FAMILY); - // FIXME: define Color_listing? - font.setColor(Color_foreground); -} - - docstring InsetListings::getCaption(Buffer const & buf, OutputParams const & runparams) const { diff --git a/src/insets/InsetListings.h b/src/insets/InsetListings.h index e80167b151..4b0afc53f2 100644 --- a/src/insets/InsetListings.h +++ b/src/insets/InsetListings.h @@ -24,7 +24,7 @@ namespace lyx { */ -class InsetListings : public InsetERT { +class InsetListings : public InsetCollapsable { public: /// InsetListings(BufferParams const &, InsetListingsParams const & par = InsetListingsParams()); @@ -49,14 +49,8 @@ public: /// void validate(LaTeXFeatures &) const; /// - void metrics(MetricsInfo &, Dimension &) const; - /// - void draw(PainterInfo & pi, int x, int y) const; - /// bool showInsetDialog(BufferView *) const; /// - void getDrawFont(FontInfo &) const; - /// InsetListingsParams const & params() const { return params_; } /// InsetListingsParams & params() { return params_; }