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>
This commit is contained in:
Huw Davies 2015-11-09 16:11:42 +00:00 committed by Alexandre Julliard
parent bb165d22e0
commit f47aab6167
2 changed files with 28 additions and 19 deletions

View File

@ -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);

View File

@ -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 );
}