diff options
Diffstat (limited to 'WebCore/platform/ContextMenu.cpp')
-rw-r--r-- | WebCore/platform/ContextMenu.cpp | 71 |
1 files changed, 63 insertions, 8 deletions
diff --git a/WebCore/platform/ContextMenu.cpp b/WebCore/platform/ContextMenu.cpp index 37d4c2b..ca1f719 100644 --- a/WebCore/platform/ContextMenu.cpp +++ b/WebCore/platform/ContextMenu.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. * Copyright (C) 2008 Christian Dywan <christian@imendio.com> + * Copyright (C) 2010 Igalia S.L * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -282,6 +283,19 @@ void ContextMenu::populate() contextMenuItemTagDownloadImageToDisk()); ContextMenuItem CopyImageItem(ActionType, ContextMenuItemTagCopyImageToClipboard, contextMenuItemTagCopyImageToClipboard()); + ContextMenuItem OpenMediaInNewWindowItem(ActionType, ContextMenuItemTagOpenMediaInNewWindow, String()); + ContextMenuItem CopyMediaLinkItem(ActionType, ContextMenuItemTagCopyMediaLinkToClipboard, + String()); + ContextMenuItem MediaPlayPause(ActionType, ContextMenuItemTagMediaPlayPause, + contextMenuItemTagMediaPlay()); + ContextMenuItem MediaMute(ActionType, ContextMenuItemTagMediaMute, + contextMenuItemTagMediaMute()); + ContextMenuItem ToggleMediaControls(CheckableActionType, ContextMenuItemTagToggleMediaControls, + contextMenuItemTagToggleMediaControls()); + ContextMenuItem ToggleMediaLoop(CheckableActionType, ContextMenuItemTagToggleMediaLoop, + contextMenuItemTagToggleMediaLoop()); + ContextMenuItem EnterVideoFullscreen(ActionType, ContextMenuItemTagEnterVideoFullscreen, + contextMenuItemTagEnterVideoFullscreen()); #if PLATFORM(MAC) ContextMenuItem SearchSpotlightItem(ActionType, ContextMenuItemTagSearchInSpotlight, contextMenuItemTagSearchInSpotlight()); @@ -349,7 +363,23 @@ void ContextMenu::populate() appendItem(CopyImageItem); } - if (imageURL.isEmpty() && linkURL.isEmpty()) { + KURL mediaURL = result.absoluteMediaURL(); + if (!mediaURL.isEmpty()) { + if (!linkURL.isEmpty() || !imageURL.isEmpty()) + appendItem(*separatorItem()); + + appendItem(MediaPlayPause); + appendItem(MediaMute); + appendItem(ToggleMediaControls); + appendItem(ToggleMediaLoop); + appendItem(EnterVideoFullscreen); + + appendItem(*separatorItem()); + appendItem(CopyMediaLinkItem); + appendItem(OpenMediaInNewWindowItem); + } + + if (imageURL.isEmpty() && linkURL.isEmpty() && mediaURL.isEmpty()) { if (result.isSelected()) { if (selectionContainsPossibleWord(frame)) { #if PLATFORM(MAC) @@ -375,12 +405,6 @@ void ContextMenu::populate() #if ENABLE(INSPECTOR) if (!(frame->page() && frame->page()->inspectorController()->hasInspectorFrontendClient())) { #endif -#if PLATFORM(GTK) - appendItem(BackItem); - appendItem(ForwardItem); - appendItem(StopItem); - appendItem(ReloadItem); -#else if (frame->page() && frame->page()->canGoBackOrForward(-1)) appendItem(BackItem); @@ -393,7 +417,6 @@ void ContextMenu::populate() appendItem(StopItem); else appendItem(ReloadItem); -#endif #if ENABLE(INSPECTOR) } #endif @@ -788,6 +811,28 @@ void ContextMenu::checkOrEnableIfNeeded(ContextMenuItem& item) const case ContextMenuItemTagOpenImageInNewWindow: case ContextMenuItemTagDownloadImageToDisk: case ContextMenuItemTagCopyImageToClipboard: + break; + case ContextMenuItemTagOpenMediaInNewWindow: + if (m_hitTestResult.mediaIsVideo()) + item.setTitle(contextMenuItemTagOpenVideoInNewWindow()); + else + item.setTitle(contextMenuItemTagOpenAudioInNewWindow()); + break; + case ContextMenuItemTagCopyMediaLinkToClipboard: + if (m_hitTestResult.mediaIsVideo()) + item.setTitle(contextMenuItemTagCopyVideoLinkToClipboard()); + else + item.setTitle(contextMenuItemTagCopyAudioLinkToClipboard()); + break; + case ContextMenuItemTagToggleMediaControls: + shouldCheck = m_hitTestResult.mediaControlsEnabled(); + break; + case ContextMenuItemTagToggleMediaLoop: + shouldCheck = m_hitTestResult.mediaLoopEnabled(); + break; + case ContextMenuItemTagEnterVideoFullscreen: + shouldEnable = m_hitTestResult.mediaSupportsFullscreen(); + break; case ContextMenuItemTagOpenFrameInNewWindow: case ContextMenuItemTagSpellingGuess: case ContextMenuItemTagOther: @@ -823,6 +868,16 @@ void ContextMenu::checkOrEnableIfNeeded(ContextMenuItem& item) const case ContextMenuItemLastCustomTag: case ContextMenuItemBaseApplicationTag: break; + case ContextMenuItemTagMediaPlayPause: + if (m_hitTestResult.mediaPlaying()) + item.setTitle(contextMenuItemTagMediaPause()); + else + item.setTitle(contextMenuItemTagMediaPlay()); + break; + case ContextMenuItemTagMediaMute: + shouldEnable = m_hitTestResult.mediaHasAudio(); + shouldCheck = shouldEnable && m_hitTestResult.mediaMuted(); + break; } item.setChecked(shouldCheck); |