Kevin Koltzau : riched20: Implement EM_SETOLECALLBACK.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Feb 1 06:59:19 CST 2006


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

Author: Kevin Koltzau <kevin at plop.org>
Date:   Wed Feb  1 13:05:40 2006 +0100

riched20: Implement EM_SETOLECALLBACK.

---

 dlls/riched20/editor.c  |   13 ++++++++++---
 dlls/riched20/editstr.h |    4 ++++
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 19c7b3f..9b741a8 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -223,8 +223,6 @@
 
 #include "editor.h"
 #include "commdlg.h"
-#include "ole2.h"
-#include "richole.h"
 #include "winreg.h"
 #define NO_SHLWAPI_STREAM 
 #include "shlwapi.h"
@@ -889,6 +887,7 @@ ME_TextEditor *ME_MakeEditor(HWND hWnd) 
   ed->bRedraw = TRUE;
   ed->nInvalidOfs = -1;
   ed->pfnWordBreak = NULL;
+  ed->lpOleCallback = NULL;
   GetClientRect(hWnd, &ed->rcFormat);
   for (i=0; i<HFONT_CACHE_SIZE; i++)
   {
@@ -985,6 +984,8 @@ void ME_DestroyEditor(ME_TextEditor *edi
       DeleteObject(editor->pFontCache[i].hFont);
   }
   DeleteObject(editor->hbrBackground);
+  if(editor->lpOleCallback)
+    IUnknown_Release(editor->lpOleCallback);
 
   FREE_OBJ(editor);
 }
@@ -1206,7 +1207,6 @@ LRESULT WINAPI RichEditANSIWndProc(HWND 
   UNSUPPORTED_MSG(EM_SETEDITSTYLE)
   UNSUPPORTED_MSG(EM_SETFONTSIZE)
   UNSUPPORTED_MSG(EM_SETLANGOPTIONS)
-  UNSUPPORTED_MSG(EM_SETOLECALLBACK)
   UNSUPPORTED_MSG(EM_SETOPTIONS)
   UNSUPPORTED_MSG(EM_SETPALETTE)
   UNSUPPORTED_MSG(EM_SETPASSWORDCHAR)
@@ -2043,6 +2043,13 @@ LRESULT WINAPI RichEditANSIWndProc(HWND 
     FIXME("EM_GETOLEINTERFACE %p: stub\n", ppvObj);
     return CreateIRichEditOle(ppvObj);
   }
+  case EM_SETOLECALLBACK:
+    if(editor->lpOleCallback)
+      IUnknown_Release(editor->lpOleCallback);
+    editor->lpOleCallback = (LPRICHEDITOLECALLBACK)lParam;
+    if(editor->lpOleCallback)
+      IUnknown_AddRef(editor->lpOleCallback);
+    return TRUE;
   case EM_GETWORDBREAKPROC:
     return (LRESULT)editor->pfnWordBreak;
   case EM_SETWORDBREAKPROC:
diff --git a/dlls/riched20/editstr.h b/dlls/riched20/editstr.h
index 919dd02..d27eab9 100644
--- a/dlls/riched20/editstr.h
+++ b/dlls/riched20/editstr.h
@@ -38,6 +38,9 @@
 #include <winuser.h>
 #include <richedit.h>
 #include <commctrl.h>
+#define COBJMACROS
+#include <ole2.h>
+#include <richole.h>
 
 #include "wine/debug.h"
 
@@ -289,6 +292,7 @@ typedef struct tagME_TextEditor
   BOOL bRedraw;
   int nInvalidOfs;
   EDITWORDBREAKPROCW pfnWordBreak;
+  LPRICHEDITOLECALLBACK lpOleCallback;
 } ME_TextEditor;
 
 typedef struct tagME_Context




More information about the wine-cvs mailing list