From: Torge Matthies tmatthies@codeweavers.com
Windows gives this content special protection from being painted over, by some means that I have not investigated yet. Emulate this protection for the trivial case of an InvalidateRect(...); call on the parent window.
Signed-off-by: Torge Matthies tmatthies@codeweavers.com --- dlls/ieframe/dochost.c | 8 ++++++++ dlls/ieframe/iexplore.c | 6 ++++++ dlls/ieframe/oleobject.c | 6 ++++++ 3 files changed, 20 insertions(+)
diff --git a/dlls/ieframe/dochost.c b/dlls/ieframe/dochost.c index 97b86d481b9..c07d7977c28 100644 --- a/dlls/ieframe/dochost.c +++ b/dlls/ieframe/dochost.c @@ -377,6 +377,14 @@ static LRESULT WINAPI doc_view_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM l switch(msg) { case WM_SIZE: return resize_document(This, LOWORD(lParam), HIWORD(lParam)); + case WM_PAINT: + { + LRESULT ret = DefWindowProcW(hwnd, msg, wParam, lParam); + HWND child = NULL; + while ((child = FindWindowExW(hwnd, child, NULL, NULL))) + RedrawWindow(child, NULL, 0, RDW_INVALIDATE | RDW_ERASE | RDW_ALLCHILDREN); + return ret; + } }
return DefWindowProcW(hwnd, msg, wParam, lParam); diff --git a/dlls/ieframe/iexplore.c b/dlls/ieframe/iexplore.c index acf7a18e3f3..2d835defc64 100644 --- a/dlls/ieframe/iexplore.c +++ b/dlls/ieframe/iexplore.c @@ -693,6 +693,12 @@ static LRESULT WINAPI ie_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM return process_dochost_tasks(&This->doc_host); case WM_UPDATEADDRBAR: return update_addrbar(This, lparam); + case WM_PAINT: + { + LRESULT ret = DefWindowProcW(hwnd, msg, wparam, lparam); + InvalidateRect(This->doc_host.hwnd, NULL, TRUE); + return ret; + } } return DefWindowProcW(hwnd, msg, wparam, lparam); } diff --git a/dlls/ieframe/oleobject.c b/dlls/ieframe/oleobject.c index 742e78ce4e4..ae0a240c378 100644 --- a/dlls/ieframe/oleobject.c +++ b/dlls/ieframe/oleobject.c @@ -89,6 +89,12 @@ static LRESULT WINAPI shell_embedding_proc(HWND hwnd, UINT msg, WPARAM wParam, L case WM_KILLFOCUS: notify_on_focus(This, FALSE); break; + case WM_PAINT: + { + LRESULT ret = DefWindowProcW(hwnd, msg, wParam, lParam); + InvalidateRect(This->doc_host.hwnd, NULL, TRUE); + return ret; + } }
return DefWindowProcW(hwnd, msg, wParam, lParam);