gecko-dev/widget/windows/nsNativeDragTarget.h
Gabriele Svelto 5dc21d568c Bug 1600545 - Remove useless inclusions of header files generated from IDL files in modules/, netwerk/, parser/, security/, startupcache/, storage/, toolkit/, tools/, uriloader/, widget/, xpcom/ and xpfe/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55444

--HG--
extra : moz-landing-system : lando
2019-12-06 09:17:57 +00:00

104 lines
3.6 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 <ole2.h>
#include <shlobj.h>
#ifndef IDropTargetHelper
# include <shobjidl.h> // Vista drag image interfaces
# undef LogSeverity // SetupAPI.h #defines this as DWORD
#endif
#include "mozilla/Attributes.h"
#include "mozilla/EventForwards.h"
class nsIDragService;
class nsIWidget;
/*
* nsNativeDragTarget implements the IDropTarget interface and gets most of its
* behavior from the associated adapter (m_dragDrop).
*/
class nsNativeDragTarget final : public IDropTarget {
public:
explicit 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.
MOZ_CAN_RUN_SCRIPT_BOUNDARY 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.
MOZ_CAN_RUN_SCRIPT_BOUNDARY 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.
MOZ_CAN_RUN_SCRIPT_BOUNDARY STDMETHODIMP Drop(LPDATAOBJECT pSource,
DWORD grfKeyState, POINTL point,
DWORD* pEffect);
/**
* Cancel the current drag session, if any.
*/
MOZ_CAN_RUN_SCRIPT_BOUNDARY void DragCancel();
static void DragImageChanged() { gDragImageChanged = true; }
protected:
void GetGeckoDragAction(DWORD grfKeyState, LPDWORD pdwEffect,
uint32_t* aGeckoAction);
void ProcessDrag(mozilla::EventMessage aEventMessage, DWORD grfKeyState,
POINTL pt, DWORD* pdwEffect);
void DispatchDragDropEvent(mozilla::EventMessage aEventMessage,
const POINTL& aPT);
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;
static bool gDragImageChanged;
};
#endif // _nsNativeDragTarget_h_