riched20: COM cleanup for the ITextHost iface.

Michael Stefaniuc mstefani at redhat.de
Sun Apr 10 14:42:53 CDT 2011


---
 dlls/riched20/txthost.c |  151 +++++++++++++++++++----------------------------
 1 files changed, 60 insertions(+), 91 deletions(-)

diff --git a/dlls/riched20/txthost.c b/dlls/riched20/txthost.c
index 68f4437..9eac803 100644
--- a/dlls/riched20/txthost.c
+++ b/dlls/riched20/txthost.c
@@ -36,7 +36,7 @@
 WINE_DEFAULT_DEBUG_CHANNEL(richedit);
 
 typedef struct ITextHostImpl {
-    const ITextHostVtbl *lpVtbl;
+    ITextHost ITextHost_iface;
     LONG ref;
     HWND hWnd;
     BOOL bEmulateVersion10;
@@ -52,12 +52,12 @@ ITextHost *ME_CreateTextHost(HWND hwnd, CREATESTRUCTW *cs, BOOL bEmulateVersion1
     {
         ME_TextEditor *editor;
 
-        texthost->lpVtbl = &textHostVtbl;
+        texthost->ITextHost_iface.lpVtbl = &textHostVtbl;
         texthost->ref = 1;
         texthost->hWnd = hwnd;
         texthost->bEmulateVersion10 = bEmulateVersion10;
 
-        editor = ME_MakeEditor((ITextHost*)texthost, bEmulateVersion10);
+        editor = ME_MakeEditor(&texthost->ITextHost_iface, bEmulateVersion10);
         editor->exStyleFlags = GetWindowLongW(hwnd, GWL_EXSTYLE);
         editor->styleFlags |= GetWindowLongW(hwnd, GWL_STYLE) & ES_WANTRETURN;
         editor->hWnd = hwnd; /* FIXME: Remove editor's dependence on hWnd */
@@ -65,14 +65,17 @@ ITextHost *ME_CreateTextHost(HWND hwnd, CREATESTRUCTW *cs, BOOL bEmulateVersion1
         SetWindowLongPtrW(hwnd, 0, (LONG_PTR)editor);
     }
 
-    return (ITextHost*)texthost;
+    return &texthost->ITextHost_iface;
 }
 
-static HRESULT WINAPI ITextHostImpl_QueryInterface(ITextHost *iface,
-                                                   REFIID riid,
-                                                   LPVOID *ppvObject)
+static inline ITextHostImpl *impl_from_ITextHost(ITextHost *iface)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    return CONTAINING_RECORD(iface, ITextHostImpl, ITextHost_iface);
+}
+
+static HRESULT WINAPI ITextHostImpl_QueryInterface(ITextHost *iface, REFIID riid, void **ppvObject)
+{
+    ITextHostImpl *This = impl_from_ITextHost(iface);
 
     if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_ITextHost)) {
         *ppvObject = This;
@@ -86,14 +89,14 @@ static HRESULT WINAPI ITextHostImpl_QueryInterface(ITextHost *iface,
 
 static ULONG WINAPI ITextHostImpl_AddRef(ITextHost *iface)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     ULONG ref = InterlockedIncrement(&This->ref);
     return ref;
 }
 
 static ULONG WINAPI ITextHostImpl_Release(ITextHost *iface)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     ULONG ref = InterlockedDecrement(&This->ref);
 
     if (!ref)
@@ -106,80 +109,64 @@ static ULONG WINAPI ITextHostImpl_Release(ITextHost *iface)
 
 HDC WINAPI ITextHostImpl_TxGetDC(ITextHost *iface)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return GetDC(This->hWnd);
 }
 
-INT WINAPI ITextHostImpl_TxReleaseDC(ITextHost *iface,
-                                     HDC hdc)
+INT WINAPI ITextHostImpl_TxReleaseDC(ITextHost *iface, HDC hdc)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return ReleaseDC(This->hWnd, hdc);
 }
 
-BOOL WINAPI ITextHostImpl_TxShowScrollBar(ITextHost *iface,
-                                          INT fnBar,
-                                          BOOL fShow)
+BOOL WINAPI ITextHostImpl_TxShowScrollBar(ITextHost *iface, INT fnBar, BOOL fShow)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return ShowScrollBar(This->hWnd, fnBar, fShow);
 }
 
-BOOL WINAPI ITextHostImpl_TxEnableScrollBar(ITextHost *iface,
-                                            INT fuSBFlags,
-                                            INT fuArrowflags)
+BOOL WINAPI ITextHostImpl_TxEnableScrollBar(ITextHost *iface, INT fuSBFlags, INT fuArrowflags)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return EnableScrollBar(This->hWnd, fuSBFlags, fuArrowflags);
 }
 
-BOOL WINAPI ITextHostImpl_TxSetScrollRange(ITextHost *iface,
-                                           INT fnBar,
-                                           LONG nMinPos,
-                                           INT nMaxPos,
+BOOL WINAPI ITextHostImpl_TxSetScrollRange(ITextHost *iface, INT fnBar, LONG nMinPos, INT nMaxPos,
                                            BOOL fRedraw)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return SetScrollRange(This->hWnd, fnBar, nMinPos, nMaxPos, fRedraw);
 }
 
-BOOL WINAPI ITextHostImpl_TxSetScrollPos(ITextHost *iface,
-                                         INT fnBar,
-                                         INT nPos,
-                                         BOOL fRedraw)
+BOOL WINAPI ITextHostImpl_TxSetScrollPos(ITextHost *iface, INT fnBar, INT nPos, BOOL fRedraw)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     int pos = SetScrollPos(This->hWnd, fnBar, nPos, fRedraw);
     return (pos ? TRUE : FALSE);
 }
 
-void WINAPI ITextHostImpl_TxInvalidateRect(ITextHost *iface,
-                                           LPCRECT prc,
-                                           BOOL fMode)
+void WINAPI ITextHostImpl_TxInvalidateRect(ITextHost *iface, LPCRECT prc, BOOL fMode)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     InvalidateRect(This->hWnd, prc, fMode);
 }
 
-void WINAPI ITextHostImpl_TxViewChange(ITextHost *iface,
-                                       BOOL fUpdate)
+void WINAPI ITextHostImpl_TxViewChange(ITextHost *iface, BOOL fUpdate)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     if (fUpdate)
         UpdateWindow(This->hWnd);
 }
 
-BOOL WINAPI ITextHostImpl_TxCreateCaret(ITextHost *iface,
-                                        HBITMAP hbmp,
-                                        INT xWidth, INT yHeight)
+BOOL WINAPI ITextHostImpl_TxCreateCaret(ITextHost *iface, HBITMAP hbmp, INT xWidth, INT yHeight)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return CreateCaret(This->hWnd, hbmp, xWidth, yHeight);
 }
 
 BOOL WINAPI ITextHostImpl_TxShowCaret(ITextHost *iface, BOOL fShow)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     if (fShow)
         return ShowCaret(This->hWnd);
     else
@@ -192,37 +179,30 @@ BOOL WINAPI ITextHostImpl_TxSetCaretPos(ITextHost *iface,
     return SetCaretPos(x, y);
 }
 
-BOOL WINAPI ITextHostImpl_TxSetTimer(ITextHost *iface,
-                                     UINT idTimer, UINT uTimeout)
+BOOL WINAPI ITextHostImpl_TxSetTimer(ITextHost *iface, UINT idTimer, UINT uTimeout)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return SetTimer(This->hWnd, idTimer, uTimeout, NULL) != 0;
 }
 
-void WINAPI ITextHostImpl_TxKillTimer(ITextHost *iface,
-                                      UINT idTimer)
+void WINAPI ITextHostImpl_TxKillTimer(ITextHost *iface, UINT idTimer)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     KillTimer(This->hWnd, idTimer);
 }
 
-void WINAPI ITextHostImpl_TxScrollWindowEx(ITextHost *iface,
-                                           INT dx, INT dy,
-                                           LPCRECT lprcScroll,
-                                           LPCRECT lprcClip,
-                                           HRGN hRgnUpdate,
-                                           LPRECT lprcUpdate,
+void WINAPI ITextHostImpl_TxScrollWindowEx(ITextHost *iface, INT dx, INT dy, LPCRECT lprcScroll,
+                                           LPCRECT lprcClip, HRGN hRgnUpdate, LPRECT lprcUpdate,
                                            UINT fuScroll)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     ScrollWindowEx(This->hWnd, dx, dy, lprcScroll, lprcClip,
                    hRgnUpdate, lprcUpdate, fuScroll);
 }
 
-void WINAPI ITextHostImpl_TxSetCapture(ITextHost *iface,
-                                       BOOL fCapture)
+void WINAPI ITextHostImpl_TxSetCapture(ITextHost *iface, BOOL fCapture)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     if (fCapture)
         SetCapture(This->hWnd);
     else
@@ -231,7 +211,7 @@ void WINAPI ITextHostImpl_TxSetCapture(ITextHost *iface,
 
 void WINAPI ITextHostImpl_TxSetFocus(ITextHost *iface)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     SetFocus(This->hWnd);
 }
 
@@ -242,24 +222,21 @@ void WINAPI ITextHostImpl_TxSetCursor(ITextHost *iface,
     SetCursor(hcur);
 }
 
-BOOL WINAPI ITextHostImpl_TxScreenToClient(ITextHost *iface,
-                                           LPPOINT lppt)
+BOOL WINAPI ITextHostImpl_TxScreenToClient(ITextHost *iface, LPPOINT lppt)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return ScreenToClient(This->hWnd, lppt);
 }
 
-BOOL WINAPI ITextHostImpl_TxClientToScreen(ITextHost *iface,
-                                           LPPOINT lppt)
+BOOL WINAPI ITextHostImpl_TxClientToScreen(ITextHost *iface, LPPOINT lppt)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return ClientToScreen(This->hWnd, lppt);
 }
 
-HRESULT WINAPI ITextHostImpl_TxActivate(ITextHost *iface,
-                                        LONG *plOldState)
+HRESULT WINAPI ITextHostImpl_TxActivate(ITextHost *iface, LONG *plOldState)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     *plOldState = HandleToLong(SetActiveWindow(This->hWnd));
     return (*plOldState ? S_OK : E_FAIL);
 }
@@ -271,10 +248,9 @@ HRESULT WINAPI ITextHostImpl_TxDeactivate(ITextHost *iface,
     return (ret ? S_OK : E_FAIL);
 }
 
-HRESULT WINAPI ITextHostImpl_TxGetClientRect(ITextHost *iface,
-                                             LPRECT prc)
+HRESULT WINAPI ITextHostImpl_TxGetClientRect(ITextHost *iface, LPRECT prc)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     int ret = GetClientRect(This->hWnd, prc);
     return (ret ? S_OK : E_FAIL);
 }
@@ -321,10 +297,9 @@ HRESULT WINAPI ITextHostImpl_TxGetMaxLength(ITextHost *iface,
     return S_OK;
 }
 
-HRESULT WINAPI ITextHostImpl_TxGetScrollBars(ITextHost *iface,
-                                             DWORD *pdwScrollBar)
+HRESULT WINAPI ITextHostImpl_TxGetScrollBars(ITextHost *iface, DWORD *pdwScrollBar)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     ME_TextEditor *editor = (ME_TextEditor*)GetWindowLongPtrW(This->hWnd, 0);
     const DWORD mask = WS_VSCROLL|
                        WS_HSCROLL|
@@ -377,11 +352,9 @@ HRESULT WINAPI ITextHostImpl_OnTxParaFormatChange(ITextHost *iface,
     return S_OK;
 }
 
-HRESULT WINAPI ITextHostImpl_TxGetPropertyBits(ITextHost *iface,
-                                               DWORD dwMask,
-                                               DWORD *pdwBits)
+HRESULT WINAPI ITextHostImpl_TxGetPropertyBits(ITextHost *iface, DWORD dwMask, DWORD *pdwBits)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(This->hWnd, 0);
     DWORD style;
     DWORD dwBits = 0;
@@ -445,11 +418,9 @@ HRESULT WINAPI ITextHostImpl_TxGetPropertyBits(ITextHost *iface,
     return S_OK;
 }
 
-HRESULT WINAPI ITextHostImpl_TxNotify(ITextHost *iface,
-                                      DWORD iNotify,
-                                      void *pv)
+HRESULT WINAPI ITextHostImpl_TxNotify(ITextHost *iface, DWORD iNotify, void *pv)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     ME_TextEditor *editor = (ME_TextEditor*)GetWindowLongPtrW(This->hWnd, 0);
     HWND hwnd = This->hWnd;
     UINT id;
@@ -507,21 +478,19 @@ HRESULT WINAPI ITextHostImpl_TxNotify(ITextHost *iface,
 
 HIMC WINAPI ITextHostImpl_TxImmGetContext(ITextHost *iface)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     return ImmGetContext(This->hWnd);
 }
 
-void WINAPI ITextHostImpl_TxImmReleaseContext(ITextHost *iface,
-                                              HIMC himc)
+void WINAPI ITextHostImpl_TxImmReleaseContext(ITextHost *iface, HIMC himc)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     ImmReleaseContext(This->hWnd, himc);
 }
 
-HRESULT WINAPI ITextHostImpl_TxGetSelectionBarWidth(ITextHost *iface,
-                                                    LONG *lSelBarWidth)
+HRESULT WINAPI ITextHostImpl_TxGetSelectionBarWidth(ITextHost *iface, LONG *lSelBarWidth)
 {
-    ITextHostImpl *This = (ITextHostImpl *)iface;
+    ITextHostImpl *This = impl_from_ITextHost(iface);
     ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(This->hWnd, 0);
 
     DWORD style = editor ? editor->styleFlags
-- 
1.7.4.2



More information about the wine-patches mailing list