Huw Davies : riched20: Release the font cache when changing the default style.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Nov 10 10:36:20 CST 2015


Module: wine
Branch: master
Commit: f47aab61671ad0d031fcea56c2204f8d0c47fff7
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f47aab61671ad0d031fcea56c2204f8d0c47fff7

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon Nov  9 16:11:42 2015 +0000

riched20: Release the font cache when changing the default style.

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/riched20/run.c   | 19 -------------------
 dlls/riched20/style.c | 28 ++++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/dlls/riched20/run.c b/dlls/riched20/run.c
index d76737a..d261213 100644
--- a/dlls/riched20/run.c
+++ b/dlls/riched20/run.c
@@ -763,25 +763,6 @@ void ME_SetCharFormat(ME_TextEditor *editor, ME_Cursor *start, ME_Cursor *end, C
   }
 }
 
-/******************************************************************************
- * ME_SetDefaultCharFormat
- * 
- * Applies a style change to the default character style.
- */     
-void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod)
-{
-  ME_Style *style;
-
-  assert(mod->cbSize == sizeof(CHARFORMAT2W));
-  style = ME_ApplyStyle(editor->pBuffer->pDefaultStyle, mod);
-  editor->pBuffer->pDefaultStyle->fmt = style->fmt;
-  editor->pBuffer->pDefaultStyle->tm = style->tm;
-  ScriptFreeCache( &editor->pBuffer->pDefaultStyle->script_cache );
-  ME_ReleaseStyle(style);
-  ME_MarkAllForWrapping(editor);
-  /*  pcf = editor->pBuffer->pDefaultStyle->fmt; */
-}
-
 static void ME_GetRunCharFormat(ME_TextEditor *editor, ME_DisplayItem *run, CHARFORMAT2W *pFmt)
 {
   ME_CopyCharFormat(pFmt, &run->member.run.style->fmt);
diff --git a/dlls/riched20/style.c b/dlls/riched20/style.c
index 0e990e2..37f56d9 100644
--- a/dlls/riched20/style.c
+++ b/dlls/riched20/style.c
@@ -508,3 +508,31 @@ void ME_ClearTempStyle(ME_TextEditor *editor)
   ME_ReleaseStyle(editor->pBuffer->pCharStyle);
   editor->pBuffer->pCharStyle = NULL;
 }
+
+/******************************************************************************
+ * ME_SetDefaultCharFormat
+ *
+ * Applies a style change to the default character style.
+ *
+ * The default style is special in that it is mutable - runs
+ * in the document that have this style should change if the
+ * default style changes.  That means we need to fix up this
+ * style manually.
+ */
+void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod)
+{
+    ME_Style *style, *def = editor->pBuffer->pDefaultStyle;
+
+    assert(mod->cbSize == sizeof(CHARFORMAT2W));
+    style = ME_ApplyStyle(def, mod);
+    def->fmt = style->fmt;
+    def->tm = style->tm;
+    if (def->font_cache)
+    {
+        release_font_cache( def->font_cache );
+        def->font_cache = NULL;
+    }
+    ScriptFreeCache( &def->script_cache );
+    ME_ReleaseStyle( style );
+    ME_MarkAllForWrapping( editor );
+}




More information about the wine-cvs mailing list