Changeset 62036 in webkit


Ignore:
Timestamp:
Jun 28, 2010 2:07:06 PM (14 years ago)
Author:
jam@chromium.org
Message:

2010-06-27 John Abd-El-Malek <jam@chromium.org>

Reviewed by Darin Fisher.

[chromium] Get the selected text from plugins for right click menu
https://bugs.webkit.org/show_bug.cgi?id=41242

  • public/WebContextMenuData.h: (WebKit::WebContextMenuData::):
  • public/WebPlugin.h: (WebKit::WebPlugin::selectedText):
  • src/ContextMenuClientImpl.cpp: (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
  • src/WebPluginContainerImpl.cpp: (WebKit::WebPluginContainerImpl::selectedText):
  • src/WebPluginContainerImpl.h:
Location:
trunk/WebKit/chromium
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/chromium/ChangeLog

    r62000 r62036  
     12010-06-27  John Abd-El-Malek  <jam@chromium.org>
     2
     3        Reviewed by Darin Fisher.
     4
     5        [chromium] Get the selected text from plugins for right click menu
     6        https://bugs.webkit.org/show_bug.cgi?id=41242
     7
     8        * public/WebContextMenuData.h:
     9        (WebKit::WebContextMenuData::):
     10        * public/WebPlugin.h:
     11        (WebKit::WebPlugin::selectedText):
     12        * src/ContextMenuClientImpl.cpp:
     13        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
     14        * src/WebPluginContainerImpl.cpp:
     15        (WebKit::WebPluginContainerImpl::selectedText):
     16        * src/WebPluginContainerImpl.h:
     17
    1182010-06-28  Yury Semikhatsky  <yurys@chromium.org>
    219
  • trunk/WebKit/chromium/public/WebContextMenuData.h

    r59529 r62036  
    125125        CanDelete = 0x20,
    126126        CanSelectAll = 0x40,
     127        CanTranslate = 0x80,
    127128    };
    128129
  • trunk/WebKit/chromium/public/WebPlugin.h

    r55814 r62036  
    3333
    3434#include "WebCanvas.h"
     35#include "WebString.h"
    3536
    3637struct NPObject;
     
    9495    virtual void printEnd() { }
    9596
     97    virtual WebString selectedText() { return WebString(); }
     98
    9699protected:
    97100    ~WebPlugin() { }
  • trunk/WebKit/chromium/src/ContextMenuClientImpl.cpp

    r59819 r62036  
    4747#include "MediaError.h"
    4848#include "PlatformString.h"
     49#include "RenderWidget.h"
    4950#include "TextBreakIterator.h"
    5051#include "Widget.h"
     
    5455#include "WebFrameImpl.h"
    5556#include "WebMenuItemInfo.h"
     57#include "WebPluginContainerImpl.h"
    5658#include "WebPoint.h"
    5759#include "WebString.h"
     
    147149    WebContextMenuData data;
    148150    data.mousePosition = selectedFrame->view()->contentsToWindow(r.point());
     151
     152    // Compute edit flags.
     153    data.editFlags = WebContextMenuData::CanDoNone;
     154    if (m_webView->focusedWebCoreFrame()->editor()->canUndo())
     155        data.editFlags |= WebContextMenuData::CanUndo;
     156    if (m_webView->focusedWebCoreFrame()->editor()->canRedo())
     157        data.editFlags |= WebContextMenuData::CanRedo;
     158    if (m_webView->focusedWebCoreFrame()->editor()->canCut())
     159        data.editFlags |= WebContextMenuData::CanCut;
     160    if (m_webView->focusedWebCoreFrame()->editor()->canCopy())
     161        data.editFlags |= WebContextMenuData::CanCopy;
     162    if (m_webView->focusedWebCoreFrame()->editor()->canPaste())
     163        data.editFlags |= WebContextMenuData::CanPaste;
     164    if (m_webView->focusedWebCoreFrame()->editor()->canDelete())
     165        data.editFlags |= WebContextMenuData::CanDelete;
     166    // We can always select all...
     167    data.editFlags |= WebContextMenuData::CanSelectAll;
     168    data.editFlags |= WebContextMenuData::CanTranslate;
    149169
    150170    // Links, Images, Media tags, and Image/Media-Links take preference over
     
    183203        if (mediaElement->controls())
    184204            data.mediaFlags |= WebContextMenuData::MediaControls;
     205    } else if (r.innerNonSharedNode()->hasTagName(HTMLNames::objectTag)
     206               || r.innerNonSharedNode()->hasTagName(HTMLNames::embedTag)) {
     207        RenderObject* object = r.innerNonSharedNode()->renderer();
     208        if (object && object->isWidget()) {
     209            Widget* widget = toRenderWidget(object)->widget();
     210            if (widget) {
     211                WebPluginContainerImpl* plugin = static_cast<WebPluginContainerImpl*>(widget);
     212                WebString text = plugin->selectedText();
     213                if (!text.isEmpty()) {
     214                    data.selectedText = text;
     215                    data.editFlags |= WebContextMenuData::CanCopy;
     216                }
     217                data.editFlags &= ~WebContextMenuData::CanTranslate;
     218            }
     219        }
    185220    }
    186221
     
    226261    if (ds)
    227262        data.securityInfo = ds->response().securityInfo();
    228 
    229     // Compute edit flags.
    230     data.editFlags = WebContextMenuData::CanDoNone;
    231     if (m_webView->focusedWebCoreFrame()->editor()->canUndo())
    232         data.editFlags |= WebContextMenuData::CanUndo;
    233     if (m_webView->focusedWebCoreFrame()->editor()->canRedo())
    234         data.editFlags |= WebContextMenuData::CanRedo;
    235     if (m_webView->focusedWebCoreFrame()->editor()->canCut())
    236         data.editFlags |= WebContextMenuData::CanCut;
    237     if (m_webView->focusedWebCoreFrame()->editor()->canCopy())
    238         data.editFlags |= WebContextMenuData::CanCopy;
    239     if (m_webView->focusedWebCoreFrame()->editor()->canPaste())
    240         data.editFlags |= WebContextMenuData::CanPaste;
    241     if (m_webView->focusedWebCoreFrame()->editor()->canDelete())
    242         data.editFlags |= WebContextMenuData::CanDelete;
    243     // We can always select all...
    244     data.editFlags |= WebContextMenuData::CanSelectAll;
    245263
    246264    // Filter out custom menu elements and add them into the data.
  • trunk/WebKit/chromium/src/WebPluginContainerImpl.cpp

    r61919 r62036  
    247247}
    248248
     249WebString WebPluginContainerImpl::selectedText()
     250{
     251    return m_webPlugin->selectedText();
     252}
     253
    249254WebElement WebPluginContainerImpl::element()
    250255{
  • trunk/WebKit/chromium/src/WebPluginContainerImpl.h

    r61942 r62036  
    103103    void printEnd();
    104104
     105    WebString selectedText();
     106
    105107    // Resource load events for the plugin's source data:
    106108    void didReceiveResponse(const WebCore::ResourceResponse&);
Note: See TracChangeset for help on using the changeset viewer.