diff options
Diffstat (limited to 'Source/WebKit/chromium/src/ContextMenuClientImpl.cpp')
-rw-r--r-- | Source/WebKit/chromium/src/ContextMenuClientImpl.cpp | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/Source/WebKit/chromium/src/ContextMenuClientImpl.cpp b/Source/WebKit/chromium/src/ContextMenuClientImpl.cpp index d35eb0e6c..5871f44e1 100644 --- a/Source/WebKit/chromium/src/ContextMenuClientImpl.cpp +++ b/Source/WebKit/chromium/src/ContextMenuClientImpl.cpp @@ -280,7 +280,7 @@ PlatformMenuDescription ContextMenuClientImpl::getCustomMenuFromDefaultItems( if (selectedFrame->settings() && selectedFrame->settings()->asynchronousSpellCheckingEnabled()) { RefPtr<Range> range = selectedFrame->selection()->toNormalizedRange(); if (range.get()) { - Vector<DocumentMarker*> markers = selectedFrame->document()->markers()->markersInRange(range.get(), DocumentMarker::Spelling); + Vector<DocumentMarker*> markers = selectedFrame->document()->markers()->markersInRange(range.get(), DocumentMarker::Spelling | DocumentMarker::Grammar); if (!markers.isEmpty()) { Vector<String> suggestions; for (size_t i = 0; i < markers.size(); ++i) { @@ -347,12 +347,12 @@ PlatformMenuDescription ContextMenuClientImpl::getCustomMenuFromDefaultItems( return 0; } -void ContextMenuClientImpl::populateCustomMenuItems(WebCore::ContextMenu* defaultMenu, WebContextMenuData* data) +static void populateSubMenuItems(PlatformMenuDescription inputMenu, WebVector<WebMenuItemInfo>& subMenuItems) { - Vector<WebMenuItemInfo> customItems; - for (size_t i = 0; i < defaultMenu->itemCount(); ++i) { - ContextMenuItem* inputItem = defaultMenu->itemAtIndex(i, defaultMenu->platformDescription()); - if (inputItem->action() < ContextMenuItemBaseCustomTag || inputItem->action() > ContextMenuItemLastCustomTag) + Vector<WebMenuItemInfo> subItems; + for (size_t i = 0; i < inputMenu->size(); ++i) { + const ContextMenuItem* inputItem = &inputMenu->at(i); + if (inputItem->action() < ContextMenuItemBaseCustomTag || inputItem->action() > ContextMenuItemLastCustomTag) continue; WebMenuItemInfo outputItem; @@ -371,16 +371,22 @@ void ContextMenuClientImpl::populateCustomMenuItems(WebCore::ContextMenu* defaul outputItem.type = WebMenuItemInfo::Separator; break; case SubmenuType: - outputItem.type = WebMenuItemInfo::Group; + outputItem.type = WebMenuItemInfo::SubMenu; + populateSubMenuItems(inputItem->platformSubMenu(), outputItem.subMenuItems); break; } - customItems.append(outputItem); + subItems.append(outputItem); } - WebVector<WebMenuItemInfo> outputItems(customItems.size()); - for (size_t i = 0; i < customItems.size(); ++i) - outputItems[i] = customItems[i]; - data->customItems.swap(outputItems); + WebVector<WebMenuItemInfo> outputItems(subItems.size()); + for (size_t i = 0; i < subItems.size(); ++i) + outputItems[i] = subItems[i]; + subMenuItems.swap(outputItems); +} + +void ContextMenuClientImpl::populateCustomMenuItems(WebCore::ContextMenu* defaultMenu, WebContextMenuData* data) +{ + populateSubMenuItems(defaultMenu->platformDescription(), data->customItems); } } // namespace WebKit |