summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/ContextMenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/ContextMenu.cpp')
-rw-r--r--WebCore/platform/ContextMenu.cpp71
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);