merge the formfield patch from ooo-build
[ooovba.git] / dtrans / source / win32 / dnd / idroptarget.cxx
blobe5a2bce6f8163fe60f2a2630a2d05890cd7ba56b
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: idroptarget.cxx,v $
10 * $Revision: 1.7 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_dtrans.hxx"
33 #include "idroptarget.hxx"
34 #include <rtl/unload.h>
36 #ifdef __MINGW32__
37 #define __uuidof(I) IID_##I
38 #endif
40 extern rtl_StandardModuleCount g_moduleCount;
42 IDropTargetImpl::IDropTargetImpl( DropTarget& pTarget): m_nRefCount( 0),
43 m_rDropTarget( pTarget)
45 g_moduleCount.modCnt.acquire( &g_moduleCount.modCnt );
48 IDropTargetImpl::~IDropTargetImpl()
50 g_moduleCount.modCnt.release( &g_moduleCount.modCnt );
54 //IDropTarget
55 HRESULT STDMETHODCALLTYPE IDropTargetImpl::QueryInterface( REFIID riid, void **ppvObject)
57 if( !ppvObject)
58 return E_POINTER;
59 *ppvObject= NULL;
61 if( riid == __uuidof( IUnknown))
62 *ppvObject= static_cast<IUnknown*>( this);
63 else if ( riid == __uuidof( IDropTarget))
64 *ppvObject= static_cast<IDropTarget*>( this);
66 if(*ppvObject)
68 AddRef();
69 return S_OK;
71 else
72 return E_NOINTERFACE;
76 ULONG STDMETHODCALLTYPE IDropTargetImpl::AddRef( void)
78 return InterlockedIncrement( &m_nRefCount);
81 ULONG STDMETHODCALLTYPE IDropTargetImpl::Release( void)
83 LONG count= InterlockedDecrement( &m_nRefCount);
84 if( m_nRefCount == 0 )
85 delete this;
86 return count;
89 STDMETHODIMP IDropTargetImpl::DragEnter( IDataObject __RPC_FAR *pDataObj,
90 DWORD grfKeyState,
91 POINTL pt,
92 DWORD *pdwEffect)
94 return m_rDropTarget.DragEnter( pDataObj, grfKeyState,
95 pt, pdwEffect);
98 STDMETHODIMP IDropTargetImpl::DragOver( DWORD grfKeyState,
99 POINTL pt,
100 DWORD *pdwEffect)
102 return m_rDropTarget.DragOver( grfKeyState, pt, pdwEffect);
105 STDMETHODIMP IDropTargetImpl::DragLeave( void)
107 return m_rDropTarget.DragLeave();
110 STDMETHODIMP IDropTargetImpl::Drop( IDataObject *pDataObj,
111 DWORD grfKeyState,
112 POINTL pt,
113 DWORD __RPC_FAR *pdwEffect)
115 return m_rDropTarget.Drop( pDataObj, grfKeyState,
116 pt, pdwEffect);