Huw Davies : riched20: Add support for WM_PRINTCLIENT.
Alexandre Julliard
julliard at winehq.org
Wed Mar 24 16:20:40 CDT 2021
Module: wine
Branch: master
Commit: a41b81115f53d0a7921f3e2de4c3083e7e338c64
URL: https://source.winehq.org/git/wine.git/?a=commit;h=a41b81115f53d0a7921f3e2de4c3083e7e338c64
Author: Huw Davies <huw at codeweavers.com>
Date: Wed Mar 24 09:08:33 2021 +0000
riched20: Add support for WM_PRINTCLIENT.
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/riched20/txthost.c | 43 +++++++++++++++++++++++++++----------------
1 file changed, 27 insertions(+), 16 deletions(-)
diff --git a/dlls/riched20/txthost.c b/dlls/riched20/txthost.c
index 81f925c0578..b624fcd377c 100644
--- a/dlls/riched20/txthost.c
+++ b/dlls/riched20/txthost.c
@@ -1178,51 +1178,62 @@ static LRESULT RichEditWndProc_common( HWND hwnd, UINT msg, WPARAM wparam,
break;
case WM_PAINT:
+ case WM_PRINTCLIENT:
{
HDC hdc;
- RECT rc, client;
+ RECT rc, client, update;
PAINTSTRUCT ps;
HBRUSH brush = CreateSolidBrush( ITextHost_TxGetSysColor( &host->ITextHost_iface, COLOR_WINDOW ) );
ITextHostImpl_TxGetClientRect( &host->ITextHost_iface, &client );
- hdc = BeginPaint( hwnd, &ps );
+ if (msg == WM_PAINT)
+ {
+ hdc = BeginPaint( hwnd, &ps );
+ update = ps.rcPaint;
+ }
+ else
+ {
+ hdc = (HDC)wparam;
+ update = client;
+ }
+
brush = SelectObject( hdc, brush );
/* Erase area outside of the formatting rectangle */
- if (ps.rcPaint.top < client.top)
+ if (update.top < client.top)
{
- rc = ps.rcPaint;
+ rc = update;
rc.bottom = client.top;
PatBlt( hdc, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, PATCOPY );
- ps.rcPaint.top = client.top;
+ update.top = client.top;
}
- if (ps.rcPaint.bottom > client.bottom)
+ if (update.bottom > client.bottom)
{
- rc = ps.rcPaint;
+ rc = update;
rc.top = client.bottom;
PatBlt( hdc, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, PATCOPY );
- ps.rcPaint.bottom = client.bottom;
+ update.bottom = client.bottom;
}
- if (ps.rcPaint.left < client.left)
+ if (update.left < client.left)
{
- rc = ps.rcPaint;
+ rc = update;
rc.right = client.left;
PatBlt( hdc, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, PATCOPY );
- ps.rcPaint.left = client.left;
+ update.left = client.left;
}
- if (ps.rcPaint.right > client.right)
+ if (update.right > client.right)
{
- rc = ps.rcPaint;
+ rc = update;
rc.left = client.right;
PatBlt( hdc, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, PATCOPY );
- ps.rcPaint.right = client.right;
+ update.right = client.right;
}
ITextServices_TxDraw( host->text_srv, DVASPECT_CONTENT, 0, NULL, NULL, hdc, NULL, NULL, NULL,
- &ps.rcPaint, NULL, 0, TXTVIEW_ACTIVE );
+ &update, NULL, 0, TXTVIEW_ACTIVE );
DeleteObject( SelectObject( hdc, brush ) );
- EndPaint( hwnd, &ps );
+ if (msg == WM_PAINT) EndPaint( hwnd, &ps );
return 0;
}
case EM_REPLACESEL:
More information about the wine-cvs
mailing list