Hamza Lakhani : riched20: EM_HIDESELECTION implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 27 09:33:14 CST 2006


Module: wine
Branch: refs/heads/master
Commit: 6979719a907e7e9719ade3d296d85db22ca9f826
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=6979719a907e7e9719ade3d296d85db22ca9f826

Author: Hamza Lakhani <hlakhani at gmail.com>
Date:   Fri Feb 24 13:31:25 2006 -0800

riched20: EM_HIDESELECTION implementation.

---

 dlls/riched20/editor.c  |   12 +++++++++---
 dlls/riched20/editstr.h |    1 +
 dlls/riched20/paint.c   |    5 ++++-
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 6f4a8a5..53cddd0 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -76,7 +76,7 @@
   - EM_GETWORDBREAKPROCEX
   - EM_GETWORDWRAPMODE 1.0asian
   + EM_GETZOOM 3.0
-  - EM_HIDESELECTION
+  + EM_HIDESELECTION
   - EM_LIMITTEXT
   + EM_LINEFROMCHAR
   + EM_LINEINDEX
@@ -1022,6 +1022,7 @@ ME_TextEditor *ME_MakeEditor(HWND hWnd) 
   ed->nScrollPosY = 0;
   ed->nZoomNumerator = ed->nZoomDenominator = 0;
   ed->bRedraw = TRUE;
+  ed->bHideSelection = FALSE;
   ed->nInvalidOfs = -1;
   ed->pfnWordBreak = NULL;
   ed->lpOleCallback = NULL;
@@ -1200,7 +1201,7 @@ static const char * const richedit_messa
   "EM_GETOLEINTERFACE",
   "EM_GETPARAFORMAT",
   "EM_GETSELTEXT",
-  "EM_HIDESELECTION",
+  "EM_HIDESELECTION", 
   "EM_PASTESPECIAL",
   "EM_REQUESTRESIZE",
   "EM_SELECTIONTYPE",
@@ -1310,7 +1311,6 @@ LRESULT WINAPI RichEditANSIWndProc(HWND 
   UNSUPPORTED_MSG(EM_GETTYPOGRAPHYOPTIONS)
   UNSUPPORTED_MSG(EM_GETUNDONAME)
   UNSUPPORTED_MSG(EM_GETWORDBREAKPROCEX)
-  UNSUPPORTED_MSG(EM_HIDESELECTION)
   UNSUPPORTED_MSG(EM_LIMITTEXT) /* also known as EM_SETLIMITTEXT */
   UNSUPPORTED_MSG(EM_PASTESPECIAL)
   UNSUPPORTED_MSG(EM_SCROLL)
@@ -1611,6 +1611,12 @@ LRESULT WINAPI RichEditANSIWndProc(HWND 
     }
     return count;
   }
+  case EM_HIDESELECTION:
+  {
+     editor->bHideSelection = (wParam != 0);
+     ME_InvalidateSelection(editor);
+     return 0;
+  }
   case EM_LINESCROLL:
   {
     int nPos = editor->nScrollPosY, nEnd= editor->nTotalLength - editor->sizeWindow.cy;
diff --git a/dlls/riched20/editstr.h b/dlls/riched20/editstr.h
index b0ea617..17cf2d8 100644
--- a/dlls/riched20/editstr.h
+++ b/dlls/riched20/editstr.h
@@ -316,6 +316,7 @@ typedef struct tagME_TextEditor
    *TM_SINGLELEVELUNDO or TM_MULTILEVELUNDO
    *TM_SINGLECODEPAGE or TM_MULTICODEPAGE*/
   int mode;
+  BOOL bHideSelection;
 } ME_TextEditor;
 
 typedef struct tagME_Context
diff --git a/dlls/riched20/paint.c b/dlls/riched20/paint.c
index 42166ed..abde9a0 100644
--- a/dlls/riched20/paint.c
+++ b/dlls/riched20/paint.c
@@ -175,7 +175,10 @@ static void ME_DrawTextWithStyle(ME_Cont
     GetTextExtentPoint32W(hDC, szText, nSelFrom, &sz);
     x += sz.cx;
     GetTextExtentPoint32W(hDC, szText+nSelFrom, nSelTo-nSelFrom, &sz);
-    PatBlt(hDC, x, ymin, sz.cx, cy, DSTINVERT);
+    
+    /* Invert selection if not hidden by EM_HIDESELECTION */
+    if (c->editor->bHideSelection == FALSE)
+	PatBlt(hDC, x, ymin, sz.cx, cy, DSTINVERT);
   }
   SetTextColor(hDC, rgbOld);
   ME_UnselectStyleFont(c->editor, hDC, s, hOldFont);




More information about the wine-cvs mailing list