From f611afa3c2e5d47a244faf9ed2addafd20df77fb Mon Sep 17 00:00:00 2001 From: cxl Date: Wed, 4 Dec 2013 12:26:14 +0000 Subject: [PATCH] Fixing richtextzoom #598 git-svn-id: svn://ultimatepp.org/upp/trunk@6640 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlLib/ChGtk.cpp | 4 ++-- uppsrc/Draw/Draw.h | 3 +++ uppsrc/Draw/Font.cpp | 22 ++++++++++++++++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/uppsrc/CtrlLib/ChGtk.cpp b/uppsrc/CtrlLib/ChGtk.cpp index 33a4b34b0..d5c3fb8f4 100644 --- a/uppsrc/CtrlLib/ChGtk.cpp +++ b/uppsrc/CtrlLib/ChGtk.cpp @@ -134,8 +134,8 @@ void ChHostSkin() } } - Draw::SetStdFont(Font(fontname, (fontheight * xdpi + 512*72) / (1024*72)) - .Bold(bold).Italic(italic)); + Font::SetDefaultFont(Font(fontname, (fontheight * xdpi + 512*72) / (1024*72)) + .Bold(bold).Italic(italic)); ClearFtFaceCache(); diff --git a/uppsrc/Draw/Draw.h b/uppsrc/Draw/Draw.h index 91aedd7b8..4c8f0542b 100644 --- a/uppsrc/Draw/Draw.h +++ b/uppsrc/Draw/Draw.h @@ -55,7 +55,9 @@ class Font : public ValueType >{ static Font AStdFont; static Size StdFontSize; + static bool std_font_override; + static void SetStdFont0(Font font); static Vector& FaceList(); static void SyncStdFont(); static void InitStdFont(); @@ -79,6 +81,7 @@ public: static dword GetFaceInfo(int index); static void SetFace(int index, const String& name, dword info); + static void SetDefaultFont(Font font); static void SetStdFont(Font font); static Font GetStdFont(); static Size GetStdFontSize(); diff --git a/uppsrc/Draw/Font.cpp b/uppsrc/Draw/Font.cpp index d3b19ff80..cb8acbbb0 100644 --- a/uppsrc/Draw/Font.cpp +++ b/uppsrc/Draw/Font.cpp @@ -1,6 +1,6 @@ #include "Draw.h" -#define LLOG(x) +#define LLOG(x) // DLOG(x) NAMESPACE_UPP @@ -115,7 +115,7 @@ void Font::SyncStdFont() void (*whenSetStdFont)(); -void Font::SetStdFont(Font font) +void Font::SetStdFont0(Font font) { LLOG("SetStdFont " << font); Mutex::Lock __(sFontLock); @@ -124,18 +124,36 @@ void Font::SetStdFont(Font font) x++; InitStdFont(); AStdFont = font; + LLOG("AStdFont1: " << AStdFont); SyncStdFont(); + LLOG("AStdFont2: " << AStdFont); if(whenSetStdFont) (*whenSetStdFont)(); + LLOG("AStdFont3: " << AStdFont); x--; static int w = 0; if(w) return; w++; if(whenSetStdFont) (*whenSetStdFont)(); + LLOG("AStdFont4: " << AStdFont); w--; } +bool Font::std_font_override; + +void Font::SetDefaultFont(Font font) +{ + if(!std_font_override) + SetStdFont0(font); +} + +void Font::SetStdFont(Font font) +{ + std_font_override = true; + SetStdFont0(font); +} + void Font::InitStdFont() { ONCELOCK {