https://git.reactos.org/?p=reactos.git;a=commitdiff;h=efe4605177345910532d73bcd910318b45f8e63d

commit efe4605177345910532d73bcd910318b45f8e63d
Author:     Katayama Hirofumi MZ <[email protected]>
AuthorDate: Sun Jan 20 23:11:54 2019 +0900
Commit:     GitHub <[email protected]>
CommitDate: Sun Jan 20 23:11:54 2019 +0900

    [WIN32SS][NTUSER] Fix caret position of Ghostscript (#1271)
    
    CORE-13934, CORE-15656
---
 win32ss/user/ntuser/caret.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/win32ss/user/ntuser/caret.c b/win32ss/user/ntuser/caret.c
index a7549e752d..9ab590c0b8 100644
--- a/win32ss/user/ntuser/caret.c
+++ b/win32ss/user/ntuser/caret.c
@@ -3,7 +3,8 @@
  * PROJECT:          ReactOS Win32k subsystem
  * PURPOSE:          Caret functions
  * FILE:             win32ss/user/ntuser/caret.c
- * PROGRAMER:        Thomas Weidenmueller ([email protected])
+ * PROGRAMERS:       Thomas Weidenmueller ([email protected])
+ *                   Katayama Hirofumi MZ ([email protected])
  */
 
 #include <win32k.h>
@@ -21,6 +22,7 @@ co_IntDrawCaret(PWND pWnd, PTHRDCARETINFO CaretInfo)
 {
     HDC hdc, hdcMem;
     HBITMAP hbmOld;
+    RECT rcClient;
     BOOL bDone = FALSE;
 
     if (pWnd == NULL)
@@ -29,7 +31,7 @@ co_IntDrawCaret(PWND pWnd, PTHRDCARETINFO CaretInfo)
        return;
     }
 
-    hdc = UserGetDCEx(pWnd, 0, DCX_USESTYLE | DCX_WINDOW);
+    hdc = UserGetDCEx(pWnd, NULL, DCX_USESTYLE);
     if (!hdc)
     {
         ERR("GetDC failed\n");
@@ -41,6 +43,13 @@ co_IntDrawCaret(PWND pWnd, PTHRDCARETINFO CaretInfo)
        NtGdiSaveDC(hdc);
     }
 
+    IntGetClientRect(pWnd, &rcClient);
+    NtGdiIntersectClipRect(hdc,
+                           rcClient.left,
+                           rcClient.top,
+                           rcClient.right,
+                           rcClient.bottom);
+
     if (CaretInfo->Bitmap)
     {
         if (!GreGetBitmapDimension(CaretInfo->Bitmap, &CaretInfo->Size))

Reply via email to