[chromium] No modifier flags (shift/ctrl/alt) in drag&drop events on chromium linux
[WebKit-https.git] / Source / WebCore / platform / DragData.cpp
1 /*
2  * Copyright (C) 2007 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #include "config.h"
27 #include "DragData.h"
28 #include "PlatformEvent.h"
29 #include "PlatformKeyboardEvent.h"
30
31 #if ENABLE(DRAG_SUPPORT)
32 namespace WebCore {
33
34 #if !PLATFORM(MAC)
35 DragData::DragData(DragDataRef data, const IntPoint& clientPosition, const IntPoint& globalPosition, 
36     DragOperation sourceOperationMask, DragApplicationFlags flags)
37     : m_clientPosition(clientPosition)
38     , m_globalPosition(globalPosition)
39     , m_platformDragData(data)
40     , m_draggingSourceOperationMask(sourceOperationMask)
41     , m_applicationFlags(flags)
42 {  
43 }
44
45 DragData::DragData(const String&, const IntPoint& clientPosition, const IntPoint& globalPosition,
46     DragOperation sourceOperationMask, DragApplicationFlags flags)
47     : m_clientPosition(clientPosition)
48     , m_globalPosition(globalPosition)
49     , m_platformDragData(0)
50     , m_draggingSourceOperationMask(sourceOperationMask)
51     , m_applicationFlags(flags)
52 {
53 }
54 #endif
55
56 #if !PLATFORM(CHROMIUM)
57 int DragData::modifierKeyState() const
58 {
59     bool shiftKey, ctrlKey, altKey, metaKey;
60     shiftKey = ctrlKey = altKey = metaKey = false;
61     PlatformKeyboardEvent::getCurrentModifierState(shiftKey, ctrlKey, altKey, metaKey);
62     int keyState = 0;
63     if (shiftKey)
64         keyState = keyState | PlatformEvent::ShiftKey;
65     if (ctrlKey)
66         keyState = keyState | PlatformEvent::CtrlKey;
67     if (altKey)
68         keyState = keyState | PlatformEvent::AltKey;
69     if (metaKey)
70         keyState = keyState | PlatformEvent::MetaKey;
71     return keyState;
72 }
73 #endif
74
75
76 } // namespace WebCore
77
78 #endif // ENABLE(DRAG_SUPPORT)