gecko/widget/windows/nsNativeDragTarget.h
Ehsan Akhgari 0fd9123eac Bug 579517 - Part 1: Automated conversion of NSPR numeric types to stdint types in Gecko; r=bsmedberg
This patch was generated by a script.  Here's the source of the script for
future reference:

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name nsXPCOMCID.h \
       ! -name prtypes.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert PRInt8 int8_t
convert PRUint8 uint8_t
convert PRInt16 int16_t
convert PRUint16 uint16_t
convert PRInt32 int32_t
convert PRUint32 uint32_t
convert PRInt64 int64_t
convert PRUint64 uint64_t

convert PRIntn int
convert PRUintn unsigned

convert PRSize size_t

convert PROffset32 int32_t
convert PROffset64 int64_t

convert PRPtrdiff ptrdiff_t

convert PRFloat64 double
2012-08-22 11:56:38 -04:00

102 lines
3.2 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef _nsNativeDragTarget_h_
#define _nsNativeDragTarget_h_
#include "nsCOMPtr.h"
#include "nsIDragSession.h"
#include <ole2.h>
#include <shlobj.h>
#ifndef IDropTargetHelper
#include <shobjidl.h> // Vista drag image interfaces
#endif
#include "mozilla/Attributes.h"
class nsIDragService;
class nsIWidget;
struct IDataObject;
/*
* nsNativeDragTarget implements the IDropTarget interface and gets most of its
* behavior from the associated adapter (m_dragDrop).
*/
class nsNativeDragTarget MOZ_FINAL : public IDropTarget
{
public:
nsNativeDragTarget(nsIWidget * aWidget);
~nsNativeDragTarget();
// IUnknown members - see iunknown.h for documentation
STDMETHODIMP QueryInterface(REFIID, void**);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IDataTarget members
// Set pEffect based on whether this object can support a drop based on
// the data available from pSource, the key and mouse states specified
// in grfKeyState, and the coordinates specified by point. This is
// called by OLE when a drag enters this object's window (as registered
// by Initialize).
STDMETHODIMP DragEnter(LPDATAOBJECT pSource, DWORD grfKeyState,
POINTL point, DWORD* pEffect);
// Similar to DragEnter except it is called frequently while the drag
// is over this object's window.
STDMETHODIMP DragOver(DWORD grfKeyState, POINTL point, DWORD* pEffect);
// Release the drag-drop source and put internal state back to the point
// before the call to DragEnter. This is called when the drag leaves
// without a drop occurring.
STDMETHODIMP DragLeave();
// If point is within our region of interest and pSource's data supports
// one of our formats, get the data and set pEffect according to
// grfKeyState (DROPEFFECT_MOVE if the control key was not pressed,
// DROPEFFECT_COPY if the control key was pressed). Otherwise return
// E_FAIL.
STDMETHODIMP Drop(LPDATAOBJECT pSource, DWORD grfKeyState,
POINTL point, DWORD* pEffect);
/**
* Cancel the current drag session, if any.
*/
void DragCancel();
protected:
void GetGeckoDragAction(DWORD grfKeyState, LPDWORD pdwEffect,
uint32_t * aGeckoAction);
void ProcessDrag(uint32_t aEventType, DWORD grfKeyState,
POINTL pt, DWORD* pdwEffect);
void DispatchDragDropEvent(uint32_t aType, POINTL pt);
void AddLinkSupportIfCanBeGenerated(LPDATAOBJECT aIDataSource);
// Native Stuff
ULONG m_cRef; // reference count
HWND mHWnd;
DWORD mEffectsAllowed;
DWORD mEffectsPreferred;
bool mTookOwnRef;
// Gecko Stuff
nsIWidget * mWidget;
nsIDragService * mDragService;
// Drag target helper
IDropTargetHelper * GetDropTargetHelper();
private:
// Drag target helper
IDropTargetHelper * mDropTargetHelper;
};
#endif // _nsNativeDragTarget_h_