>>>>> "Martin" == Martin Vermeer <[EMAIL PROTECTED]> writes:
Martin> From within an inset, I can confirm that indeed the default
Martin> font settings are returned when you change layout to Section.
Martin> When in the main text, ALL_INHERIT is returned as should.
Martin> Looking at the code in Paragraph::getFontSettings, these
Martin> default settings seem to come from the font list structure.
Martin> But how did they get there in the first place? And why only
Martin> inside an inset?
Ha! Been there, done that :)
The result is the following one-liner patch to text2.C (the patch to
text.C does nothing except remove code that is indimidating but does
nothing).
The problem is that the cache LyXText::current_font, which is (if I
understand correctly) the uninstantiated default font of the LyXText,
was not initialized, and thus received the default ALL_SANE (roman,
medium...) setting, instead of a good ALL_INHERIT.
The situation now is much more credible, but touching such core code
make me nervous. Could you test that (without your other patch)?
I think this current_font/real_current_font should eventually go away.
Also, it would be nice if defaultfont_ was either removed of
initalized to something somewhere :)
JMarc
Index: src/ChangeLog
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ChangeLog,v
retrieving revision 1.2335
diff -u -p -r1.2335 ChangeLog
--- src/ChangeLog 2 Dec 2005 13:20:25 -0000 1.2335
+++ src/ChangeLog 2 Dec 2005 14:37:25 -0000
@@ -1,3 +1,11 @@
+2005-12-02 Jean-Marc Lasgouttes <[EMAIL PROTECTED]>
+
+ * text.C (insertChar): remove bogus caching of fonts (did not do
+ anything).
+
+ * text2.C (LyXText): initialize current_font to ALL_INHERIT (was
+ ALL_SANE).
+
2005-12-01 Jean-Marc Lasgouttes <[EMAIL PROTECTED]>
* rowpainter.C (paintFirst): fix centering of
Index: src/text.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text.C,v
retrieving revision 1.636
diff -u -p -r1.636 text.C
--- src/text.C 17 Nov 2005 09:19:02 -0000 1.636
+++ src/text.C 2 Dec 2005 14:37:25 -0000
@@ -1154,16 +1154,6 @@ void LyXText::insertChar(LCursor & cur,
// difference are the special checks when calculating the row.fill
// (blank does not count at the end of a row) and the check here
- // The bug is triggered when we type in a description environment:
- // The current_font is not changed when we go from label to main text
- // and it should (along with realtmpfont) when we type the space.
- // CHECK There is a bug here! (Asger)
-
- // store the current font. This is because of the use of cursor
- // movements. The moving cursor would refresh the current font
- LyXFont realtmpfont = real_current_font;
- LyXFont rawtmpfont = current_font;
-
// When the free-spacing option is set for the current layout,
// disable the double-space checking
if (!freeSpacing && IsLineSeparatorChar(c)) {
@@ -1190,10 +1180,7 @@ void LyXText::insertChar(LCursor & cur,
}
}
- par.insertChar(cur.pos(), c, rawtmpfont);
-
- current_font = rawtmpfont;
- real_current_font = realtmpfont;
+ par.insertChar(cur.pos(), c, current_font);
setCursor(cur, cur.pit(), cur.pos() + 1, false, cur.boundary());
charInserted();
}
Index: src/text2.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text2.C,v
retrieving revision 1.635
diff -u -p -r1.635 text2.C
--- src/text2.C 28 Nov 2005 11:52:02 -0000 1.635
+++ src/text2.C 2 Dec 2005 14:37:25 -0000
@@ -68,6 +68,7 @@ using std::min;
LyXText::LyXText(BufferView * bv)
: maxwidth_(bv ? bv->workWidth() : 100),
+ current_font(LyXFont::ALL_INHERIT),
background_color_(LColor::background),
bv_owner(bv),
autoBreakRows_(false)