Kevin Koltzau : riched20: Handle context menu.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Feb 2 07:09:12 CST 2006


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

Author: Kevin Koltzau <kevin at plop.org>
Date:   Thu Feb  2 13:18:20 2006 +0100

riched20: Handle context menu.

---

 dlls/riched20/editor.c |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 9b741a8..5111807 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -852,6 +852,29 @@ ME_KeyDown(ME_TextEditor *editor, WORD n
   return FALSE;
 }
 
+static void ME_ShowContextMenu(ME_TextEditor *editor, int x, int y)
+{
+  CHARRANGE selrange;
+  HMENU menu;
+  int seltype = 0;
+  if(!editor->lpOleCallback)
+    return;
+  ME_GetSelection(editor, (int *)&selrange.cpMin, (int *)&selrange.cpMax);
+  if(selrange.cpMin == selrange.cpMax)
+    seltype |= SEL_EMPTY;
+  else
+  {
+    /* FIXME: Handle objects */
+    seltype |= SEL_TEXT;
+    if(selrange.cpMax-selrange.cpMin > 1)
+      seltype |= SEL_MULTICHAR;
+  }
+  if(SUCCEEDED(IRichEditOleCallback_GetContextMenu(editor->lpOleCallback, seltype, NULL, &selrange, &menu)))
+  {
+    TrackPopupMenu(menu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, x, y, 0, GetParent(editor->hWnd), NULL);
+    DestroyMenu(menu);
+  }
+}
 
 ME_TextEditor *ME_MakeEditor(HWND hWnd) {
   ME_TextEditor *ed = ALLOC_OBJ(ME_TextEditor);
@@ -1842,6 +1865,9 @@ LRESULT WINAPI RichEditANSIWndProc(HWND 
   case WM_LBUTTONDBLCLK:
     ME_SelectWord(editor);
     break;
+  case WM_CONTEXTMENU:
+    ME_ShowContextMenu(editor, (short)LOWORD(lParam), (short)HIWORD(lParam));
+    break;
   case WM_PAINT:
     if (editor->bRedraw)
     {




More information about the wine-cvs mailing list