Changeset 117327 in webkit


Ignore:
Timestamp:
May 16, 2012 1:04:36 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

[chromium] No modifier flags (shift/ctrl/alt) in drag&drop events on chromium linux
https://bugs.webkit.org/show_bug.cgi?id=86236

Patch by Varun Jain <varunjain@google.com> on 2012-05-16
Reviewed by Tony Chang.

.:

  • ManualTests/chromium/modifiers-during-drag-and-drop.html: Added.

Source/WebCore:

ManualTests: ManualTests/chromium/modifiers-during-drag-and-drop.html

  • page/DragController.cpp:

(WebCore::createMouseEvent):

  • platform/DragData.cpp:

(WebCore):
(WebCore::DragData::modifierKeyState):

  • platform/DragData.h:

(DragData):

  • platform/chromium/ChromiumDataObject.cpp:

(WebCore::ChromiumDataObject::ChromiumDataObject):

  • platform/chromium/ChromiumDataObject.h:

(WebCore::ChromiumDataObject::modifierKeyState):
(WebCore::ChromiumDataObject::setModifierKeyState):
(ChromiumDataObject):

  • platform/chromium/DragDataChromium.cpp:

(WebCore::DragData::modifierKeyState):
(WebCore):

Source/WebKit/chromium:

  • public/WebView.h:

(WebView):

  • src/WebViewImpl.cpp:

(WebKit::webInputEventKeyStateToPlatformEventKeyState):
(WebKit):
(WebKit::WebViewImpl::dragTargetDragEnter):
(WebKit::WebViewImpl::dragTargetDragOver):
(WebKit::WebViewImpl::dragTargetDrop):
(WebKit::WebViewImpl::dragTargetDragEnterOrOver):

  • src/WebViewImpl.h:

(WebViewImpl):

Location:
trunk
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r117263 r117327  
     12012-05-16  Varun Jain  <varunjain@google.com>
     2
     3        [chromium] No modifier flags (shift/ctrl/alt) in drag&drop events on chromium linux
     4        https://bugs.webkit.org/show_bug.cgi?id=86236
     5
     6        Reviewed by Tony Chang.
     7
     8        * ManualTests/chromium/modifiers-during-drag-and-drop.html: Added.
     9
    1102012-05-16  Keishi Hattori  <keishi@webkit.org>
    211
  • trunk/Source/WebCore/ChangeLog

    r117326 r117327  
     12012-05-16  Varun Jain  <varunjain@google.com>
     2
     3        [chromium] No modifier flags (shift/ctrl/alt) in drag&drop events on chromium linux
     4        https://bugs.webkit.org/show_bug.cgi?id=86236
     5
     6        Reviewed by Tony Chang.
     7
     8        ManualTests: ManualTests/chromium/modifiers-during-drag-and-drop.html
     9
     10        * page/DragController.cpp:
     11        (WebCore::createMouseEvent):
     12        * platform/DragData.cpp:
     13        (WebCore):
     14        (WebCore::DragData::modifierKeyState):
     15        * platform/DragData.h:
     16        (DragData):
     17        * platform/chromium/ChromiumDataObject.cpp:
     18        (WebCore::ChromiumDataObject::ChromiumDataObject):
     19        * platform/chromium/ChromiumDataObject.h:
     20        (WebCore::ChromiumDataObject::modifierKeyState):
     21        (WebCore::ChromiumDataObject::setModifierKeyState):
     22        (ChromiumDataObject):
     23        * platform/chromium/DragDataChromium.cpp:
     24        (WebCore::DragData::modifierKeyState):
     25        (WebCore):
     26
    1272012-05-16  Jer Noble  <jer.noble@apple.com>
    228
  • trunk/Source/WebCore/page/DragController.cpp

    r114551 r117327  
    7878    bool shiftKey, ctrlKey, altKey, metaKey;
    7979    shiftKey = ctrlKey = altKey = metaKey = false;
    80     PlatformKeyboardEvent::getCurrentModifierState(shiftKey, ctrlKey, altKey, metaKey);
     80    int keyState = dragData->modifierKeyState();
     81    shiftKey = static_cast<bool>(keyState & PlatformEvent::ShiftKey);
     82    ctrlKey = static_cast<bool>(keyState & PlatformEvent::CtrlKey);
     83    altKey = static_cast<bool>(keyState & PlatformEvent::AltKey);
     84    metaKey = static_cast<bool>(keyState & PlatformEvent::MetaKey);
     85
    8186    return PlatformMouseEvent(dragData->clientPosition(), dragData->globalPosition(),
    8287                              LeftButton, PlatformEvent::MouseMoved, 0, shiftKey, ctrlKey, altKey,
  • trunk/Source/WebCore/platform/DragData.cpp

    r75743 r117327  
    2626#include "config.h"
    2727#include "DragData.h"
     28#include "PlatformEvent.h"
     29#include "PlatformKeyboardEvent.h"
    2830
    2931#if ENABLE(DRAG_SUPPORT)
     
    5254#endif
    5355
     56#if !PLATFORM(CHROMIUM)
     57int 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
    5476} // namespace WebCore
    5577
  • trunk/Source/WebCore/platform/DragData.h

    r111113 r117327  
    119119    bool containsFiles() const;
    120120    unsigned numberOfFiles() const;
     121    int modifierKeyState() const;
    121122#if PLATFORM(MAC)
    122123    const String& pasteboardName() { return m_pasteboardName; }
  • trunk/Source/WebCore/platform/chromium/ChromiumDataObject.cpp

    r116186 r117327  
    214214
    215215ChromiumDataObject::ChromiumDataObject()
     216    : m_modifierKeyState(0)
    216217{
    217218}
     
    220221    : RefCounted<ChromiumDataObject>()
    221222    , m_itemList(other.m_itemList)
     223    , m_modifierKeyState(0)
    222224{
    223225}
  • trunk/Source/WebCore/platform/chromium/ChromiumDataObject.h

    r116186 r117327  
    8787    void addSharedBuffer(const String& name, PassRefPtr<SharedBuffer>);
    8888
     89    int modifierKeyState() const { return m_modifierKeyState; }
     90    void setModifierKeyState(int modifierKeyState) { m_modifierKeyState = modifierKeyState; }
     91
    8992private:
    9093    ChromiumDataObject();
     
    9699
    97100    Vector<RefPtr<ChromiumDataObjectItem> > m_itemList;
     101
     102    // State of Shift/Ctrl/Alt/Meta keys.
     103    int m_modifierKeyState;
    98104};
    99105
  • trunk/Source/WebCore/platform/chromium/DragDataChromium.cpp

    r111061 r117327  
    7474{
    7575    return m_platformDragData->filenames().size();
     76}
     77
     78int DragData::modifierKeyState() const
     79{
     80    return m_platformDragData->modifierKeyState();
    7681}
    7782
  • trunk/Source/WebKit/chromium/ChangeLog

    r117290 r117327  
     12012-05-16  Varun Jain  <varunjain@google.com>
     2
     3        [chromium] No modifier flags (shift/ctrl/alt) in drag&drop events on chromium linux
     4        https://bugs.webkit.org/show_bug.cgi?id=86236
     5
     6        Reviewed by Tony Chang.
     7
     8        * public/WebView.h:
     9        (WebView):
     10        * src/WebViewImpl.cpp:
     11        (WebKit::webInputEventKeyStateToPlatformEventKeyState):
     12        (WebKit):
     13        (WebKit::WebViewImpl::dragTargetDragEnter):
     14        (WebKit::WebViewImpl::dragTargetDragOver):
     15        (WebKit::WebViewImpl::dragTargetDrop):
     16        (WebKit::WebViewImpl::dragTargetDragEnterOrOver):
     17        * src/WebViewImpl.h:
     18        (WebViewImpl):
     19
    1202012-05-16  Yury Semikhatsky  <yurys@chromium.org>
    221
  • trunk/Source/WebKit/chromium/public/WebView.h

    r117029 r117327  
    306306    // Callback methods when a drag-and-drop operation is trying to drop
    307307    // something on the WebView.
     308    // FIXME: Remove this method after chromium changes catch up.
    308309    virtual WebDragOperation dragTargetDragEnter(
    309310        const WebDragData&,
    310311        const WebPoint& clientPoint, const WebPoint& screenPoint,
    311312        WebDragOperationsMask operationsAllowed) = 0;
     313    virtual WebDragOperation dragTargetDragEnter(
     314        const WebDragData&,
     315        const WebPoint& clientPoint, const WebPoint& screenPoint,
     316        WebDragOperationsMask operationsAllowed,
     317        int keyModifiers) = 0;
     318    // FIXME: Remove this method after chromium changes catch up.
    312319    virtual WebDragOperation dragTargetDragOver(
    313320        const WebPoint& clientPoint, const WebPoint& screenPoint,
    314321        WebDragOperationsMask operationsAllowed) = 0;
     322    virtual WebDragOperation dragTargetDragOver(
     323        const WebPoint& clientPoint, const WebPoint& screenPoint,
     324        WebDragOperationsMask operationsAllowed,
     325        int keyModifiers) = 0;
    315326    virtual void dragTargetDragLeave() = 0;
     327    // FIXME: Remove this method after chromium changes catch up.
    316328    virtual void dragTargetDrop(
    317329        const WebPoint& clientPoint, const WebPoint& screenPoint) = 0;
     330    virtual void dragTargetDrop(
     331        const WebPoint& clientPoint, const WebPoint& screenPoint,
     332        int keyModifiers) = 0;
    318333
    319334
  • trunk/Source/WebKit/chromium/src/WebViewImpl.cpp

    r117190 r117327  
    240240static bool shouldUseExternalPopupMenus = false;
    241241
     242static int webInputEventKeyStateToPlatformEventKeyState(int webInputEventKeyState)
     243{
     244    int platformEventKeyState = 0;
     245    if (webInputEventKeyState & WebInputEvent::ShiftKey)
     246        platformEventKeyState = platformEventKeyState | WebCore::PlatformEvent::ShiftKey;
     247    if (webInputEventKeyState & WebInputEvent::ControlKey)
     248        platformEventKeyState = platformEventKeyState | WebCore::PlatformEvent::CtrlKey;
     249    if (webInputEventKeyState & WebInputEvent::AltKey)
     250        platformEventKeyState = platformEventKeyState | WebCore::PlatformEvent::AltKey;
     251    if (webInputEventKeyState & WebInputEvent::MetaKey)
     252        platformEventKeyState = platformEventKeyState | WebCore::PlatformEvent::MetaKey;
     253    return platformEventKeyState;
     254}
     255
    242256// WebView ----------------------------------------------------------------
    243257
     
    25942608    WebDragOperationsMask operationsAllowed)
    25952609{
     2610    return dragTargetDragEnter(webDragData, clientPoint, screenPoint, operationsAllowed, 0);
     2611}
     2612
     2613WebDragOperation WebViewImpl::dragTargetDragEnter(
     2614    const WebDragData& webDragData,
     2615    const WebPoint& clientPoint,
     2616    const WebPoint& screenPoint,
     2617    WebDragOperationsMask operationsAllowed,
     2618    int keyModifiers)
     2619{
    25962620    ASSERT(!m_currentDragData);
    25972621
     
    25992623    m_operationsAllowed = operationsAllowed;
    26002624
    2601     return dragTargetDragEnterOrOver(clientPoint, screenPoint, DragEnter);
     2625    return dragTargetDragEnterOrOver(clientPoint, screenPoint, DragEnter, keyModifiers);
    26022626}
    26032627
     
    26072631    WebDragOperationsMask operationsAllowed)
    26082632{
     2633    return dragTargetDragOver(clientPoint, screenPoint, operationsAllowed, 0);
     2634}
     2635
     2636WebDragOperation WebViewImpl::dragTargetDragOver(
     2637    const WebPoint& clientPoint,
     2638    const WebPoint& screenPoint,
     2639    WebDragOperationsMask operationsAllowed,
     2640    int keyModifiers)
     2641{
    26092642    m_operationsAllowed = operationsAllowed;
    26102643
    2611     return dragTargetDragEnterOrOver(clientPoint, screenPoint, DragOver);
     2644    return dragTargetDragEnterOrOver(clientPoint, screenPoint, DragOver, keyModifiers);
    26122645}
    26132646
     
    26322665void WebViewImpl::dragTargetDrop(const WebPoint& clientPoint,
    26332666                                 const WebPoint& screenPoint)
     2667{
     2668    dragTargetDrop(clientPoint, screenPoint, 0);
     2669}
     2670
     2671void WebViewImpl::dragTargetDrop(const WebPoint& clientPoint,
     2672                                 const WebPoint& screenPoint,
     2673                                 int keyModifiers)
    26342674{
    26352675    ASSERT(m_currentDragData);
     
    26472687    }
    26482688
     2689    m_currentDragData->setModifierKeyState(webInputEventKeyStateToPlatformEventKeyState(keyModifiers));
    26492690    DragData dragData(
    26502691        m_currentDragData.get(),
     
    26612702}
    26622703
    2663 WebDragOperation WebViewImpl::dragTargetDragEnterOrOver(const WebPoint& clientPoint, const WebPoint& screenPoint, DragAction dragAction)
     2704WebDragOperation WebViewImpl::dragTargetDragEnterOrOver(const WebPoint& clientPoint, const WebPoint& screenPoint, DragAction dragAction, int keyModifiers)
    26642705{
    26652706    ASSERT(m_currentDragData);
    26662707
     2708    m_currentDragData->setModifierKeyState(webInputEventKeyStateToPlatformEventKeyState(keyModifiers));
    26672709    DragData dragData(
    26682710        m_currentDragData.get(),
  • trunk/Source/WebKit/chromium/src/WebViewImpl.h

    r117107 r117327  
    232232        const WebPoint& screenPoint,
    233233        WebDragOperationsMask operationsAllowed);
     234    virtual WebDragOperation dragTargetDragEnter(
     235        const WebDragData&,
     236        const WebPoint& clientPoint,
     237        const WebPoint& screenPoint,
     238        WebDragOperationsMask operationsAllowed,
     239        int keyModifiers);
    234240    virtual WebDragOperation dragTargetDragOver(
    235241        const WebPoint& clientPoint,
    236242        const WebPoint& screenPoint,
    237243        WebDragOperationsMask operationsAllowed);
     244    virtual WebDragOperation dragTargetDragOver(
     245        const WebPoint& clientPoint,
     246        const WebPoint& screenPoint,
     247        WebDragOperationsMask operationsAllowed,
     248        int keyModifiers);
    238249    virtual void dragTargetDragLeave();
    239250    virtual void dragTargetDrop(
    240251        const WebPoint& clientPoint,
    241252        const WebPoint& screenPoint);
     253    virtual void dragTargetDrop(
     254        const WebPoint& clientPoint,
     255        const WebPoint& screenPoint,
     256        int keyModifiers);
    242257    virtual unsigned long createUniqueIdentifierForRequest();
    243258    virtual void inspectElementAt(const WebPoint& point);
     
    579594    WebDragOperation dragTargetDragEnterOrOver(const WebPoint& clientPoint,
    580595                                               const WebPoint& screenPoint,
    581                                                DragAction);
     596                                               DragAction,
     597                                               int keyModifiers);
    582598
    583599    void configureAutoResizeMode();
Note: See TracChangeset for help on using the changeset viewer.