[2/7] user32/edit: Invalidate if style changed after EM_SETREADONLY

Nikolay Sivov bunglehead at gmail.com
Sun Sep 20 15:02:14 CDT 2009


Fixes http://bugs.winehq.org/show_bug.cgi?id=20040

Checked with ControlSpy on XP SP2.

Changelog:
    - Invalidate if style changed after EM_SETREADONLY

>From c3b3b1d393a5604ae6da768c03e51f7eec94e76c Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Sat, 19 Sep 2009 22:32:04 +0400
Subject: Invalidate if style changed after EM_SETREADONLY

---
 dlls/user32/edit.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/dlls/user32/edit.c b/dlls/user32/edit.c
index 5a62bc2..8ad945b 100644
--- a/dlls/user32/edit.c
+++ b/dlls/user32/edit.c
@@ -5011,6 +5011,9 @@ static LRESULT EditWndProc_common( HWND hwnd, UINT msg,
 
 	case EM_SETREADONLY16:
 	case EM_SETREADONLY:
+	{
+		DWORD old_style = es->style;
+
 		if (wParam) {
                     SetWindowLongW( hwnd, GWL_STYLE,
                                     GetWindowLongW( hwnd, GWL_STYLE ) | ES_READONLY );
@@ -5020,8 +5023,13 @@ static LRESULT EditWndProc_common( HWND hwnd, UINT msg,
                                     GetWindowLongW( hwnd, GWL_STYLE ) & ~ES_READONLY );
                     es->style &= ~ES_READONLY;
 		}
-                result = 1;
+
+		if (old_style ^ es->style)
+		    InvalidateRect(es->hwndSelf, NULL, TRUE);
+
+		result = 1;
 		break;
+	}
 
 	case EM_SETWORDBREAKPROC16:
 		EDIT_EM_SetWordBreakProc16(es, (EDITWORDBREAKPROC16)lParam);
-- 
1.5.6.5







More information about the wine-patches mailing list