Module: wine Branch: master Commit: f47aab61671ad0d031fcea56c2204f8d0c47fff7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f47aab61671ad0d031fcea56c2...
Author: Huw Davies huw@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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 ); +}