]> git.lyx.org Git - features.git/commitdiff
* src/insets/InsetListings.{cpp,h}:
authorJürgen Spitzmüller <spitz@lyx.org>
Sun, 20 May 2007 05:53:49 +0000 (05:53 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Sun, 20 May 2007 05:53:49 +0000 (05:53 +0000)
- implement metrics and draw, fix font initialization
(fix bug 3653)

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18429 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/InsetListings.cpp
src/insets/InsetListings.h

index d8cf10a7670406b7b416329712cefd38589aa640..bd338d46612ae2a74f9d7f5adc8f75a0e0ce1c74 100644 (file)
@@ -19,6 +19,7 @@
 #include "DispatchResult.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
+#include "MetricsInfo.h"
 #include "Cursor.h"
 #include "support/lstrings.h"
 
@@ -38,18 +39,13 @@ using std::string;
 void InsetListings::init()
 {
        setButtonLabel();
-       // FIXME: define Color::listing?
        Font font(Font::ALL_SANE);
        font.decSize();
        font.decSize();
-       font.setColor(Color::foreground);
+       font.setColor(Color::none);
        setLabelFont(font);
-       // FIXME: english_language?
-       text_.current_font.setLanguage(english_language);
-       text_.real_current_font.setLanguage(english_language);
-       // FIXME: why I can not make text of source code black with the following two lines?
-       text_.current_font.setColor(Color::foreground);
-       text_.real_current_font.setColor(Color::foreground);
+       text_.current_font.setLanguage(latex_language);
+       text_.real_current_font.setLanguage(latex_language);
 }
 
 
@@ -119,7 +115,7 @@ void InsetListings::read(Buffer const & buf, Lexer & lex)
                        break;
                }
        }
-       InsetCollapsable::read(buf, lex);
+       InsetERT::read(buf, lex);
 }
 
 
@@ -239,6 +235,29 @@ void InsetListings::setButtonLabel()
 }
 
 
+bool InsetListings::metrics(MetricsInfo & mi, Dimension & dim) const
+{
+       Font tmpfont = mi.base.font;
+       getDrawFont(mi.base.font);
+       mi.base.font.realize(tmpfont);
+       InsetCollapsable::metrics(mi, dim);
+       mi.base.font = tmpfont;
+       bool const changed = dim_ != dim;
+       dim_ = dim;
+       return changed;
+}
+
+
+void InsetListings::draw(PainterInfo & pi, int x, int y) const
+{
+       Font tmpfont = pi.base.font;
+       getDrawFont(pi.base.font);
+       pi.base.font.realize(tmpfont);
+       InsetCollapsable::draw(pi, x, y);
+       pi.base.font = tmpfont;
+}
+
+
 void InsetListings::validate(LaTeXFeatures & features) const
 {
        features.require("listings");
@@ -255,8 +274,9 @@ bool InsetListings::showInsetDialog(BufferView * bv) const
 
 void InsetListings::getDrawFont(Font & font) const
 {
-       font = Font(Font::ALL_INHERIT, english_language);
+       font = Font(Font::ALL_INHERIT, latex_language);
        font.setFamily(Font::TYPEWRITER_FAMILY);
+       // FIXME: define Color::listing?
        font.setColor(Color::foreground);
 }
 
index a3ae371a8edb5669f26cbd3d179dc5db04a8fe20..af0676e4f4c93f0fa6a14bbd7db82b6d42f9e207 100644 (file)
@@ -47,6 +47,10 @@ public:
        ///
        void validate(LaTeXFeatures &) const;
        ///
+       bool metrics(MetricsInfo &, Dimension &) const;
+       ///
+       void draw(PainterInfo & pi, int x, int y) const;
+       ///
        bool showInsetDialog(BufferView *) const;
        ///
        void getDrawFont(Font &) const;