ChangeSet ID: 21079 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/03 05:33:24
Modified files: dlls/riched20 : paint.c editstr.h editor.c
Log message: Phil Krylov phil@newstar.rinet.ru Cache background color brush instead of recreating it at each screen update.
Patch: http://cvs.winehq.org/patch.py?id=21079
Old revision New revision Changes Path 1.15 1.16 +1 -4 wine/dlls/riched20/paint.c 1.16 1.17 +1 -0 wine/dlls/riched20/editstr.h 1.66 1.67 +12 -5 wine/dlls/riched20/editor.c
Index: wine/dlls/riched20/paint.c diff -u -p wine/dlls/riched20/paint.c:1.15 wine/dlls/riched20/paint.c:1.16 --- wine/dlls/riched20/paint.c:1.15 3 Nov 2005 11:33:24 -0000 +++ wine/dlls/riched20/paint.c 3 Nov 2005 11:33:24 -0000 @@ -78,14 +78,11 @@ void ME_PaintContent(ME_TextEditor *edit }
if (ye>ys) { - HBRUSH hbr; - hbr = CreateSolidBrush(ME_GetBackColor(c.editor)); rc.left = xs; rc.top = ys; rc.right = xe; rc.bottom = ye; - FillRect(hDC, &rc, hbr); - DeleteObject(hbr); + FillRect(hDC, &rc, c.editor->hbrBackground); } if (ys == c.pt.y) /* don't overwrite the top bar */ ys++; Index: wine/dlls/riched20/editstr.h diff -u -p wine/dlls/riched20/editstr.h:1.16 wine/dlls/riched20/editstr.h:1.17 --- wine/dlls/riched20/editstr.h:1.16 3 Nov 2005 11:33:24 -0000 +++ wine/dlls/riched20/editstr.h 3 Nov 2005 11:33:24 -0000 @@ -270,6 +270,7 @@ typedef struct tagME_TextEditor int nSequence; int nOldSelFrom, nOldSelTo; COLORREF rgbBackColor; + HBRUSH hbrBackground; BOOL bCaretAtEnd; int nEventMask; int nModifyStep; Index: wine/dlls/riched20/editor.c diff -u -p wine/dlls/riched20/editor.c:1.66 wine/dlls/riched20/editor.c:1.67 --- wine/dlls/riched20/editor.c:1.66 3 Nov 2005 11:33:24 -0000 +++ wine/dlls/riched20/editor.c 3 Nov 2005 11:33:24 -0000 @@ -821,6 +821,7 @@ ME_TextEditor *ME_MakeEditor(HWND hWnd) ed->nUDArrowX = -1; ed->nSequence = 0; ed->rgbBackColor = -1; + ed->hbrBackground = GetSysColorBrush(COLOR_WINDOW); ed->bCaretAtEnd = FALSE; ed->nEventMask = 0; ed->nModifyStep = 0; @@ -926,7 +927,8 @@ void ME_DestroyEditor(ME_TextEditor *edi if (editor->pFontCache[i].hFont) DeleteObject(editor->pFontCache[i].hFont); } - + DeleteObject(editor->hbrBackground); + FREE_OBJ(editor); }
@@ -1265,10 +1267,18 @@ LRESULT WINAPI RichEditANSIWndProc(HWND case EM_SETBKGNDCOLOR: { LRESULT lColor = ME_GetBackColor(editor); + if (editor->rgbBackColor != -1) + DeleteObject(editor->hbrBackground); if (wParam) + { editor->rgbBackColor = -1; + editor->hbrBackground = GetSysColorBrush(COLOR_WINDOW); + } else + { editor->rgbBackColor = lParam; + editor->hbrBackground = CreateSolidBrush(editor->rgbBackColor); + } if (editor->bRedraw) { InvalidateRect(hWnd, NULL, TRUE); @@ -1792,12 +1802,9 @@ LRESULT WINAPI RichEditANSIWndProc(HWND { HDC hDC = (HDC)wParam; RECT rc; - COLORREF rgbBG = ME_GetBackColor(editor); if (GetUpdateRect(hWnd,&rc,TRUE)) { - HBRUSH hbr = CreateSolidBrush(rgbBG); - FillRect(hDC, &rc, hbr); - DeleteObject(hbr); + FillRect(hDC, &rc, editor->hbrBackground); } } return 1;