diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/platform/ContextMenuItem.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/platform/ContextMenuItem.h')
-rw-r--r-- | Source/WebCore/platform/ContextMenuItem.h | 384 |
1 files changed, 162 insertions, 222 deletions
diff --git a/Source/WebCore/platform/ContextMenuItem.h b/Source/WebCore/platform/ContextMenuItem.h index da8273d54..291916ffe 100644 --- a/Source/WebCore/platform/ContextMenuItem.h +++ b/Source/WebCore/platform/ContextMenuItem.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. + * Copyright (C) 2006 Apple Inc. All rights reserved. * Copyright (C) 2010 Igalia S.L * * Redistribution and use in source and binary forms, with or without @@ -11,10 +11,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -27,235 +27,175 @@ #ifndef ContextMenuItem_h #define ContextMenuItem_h -#if ENABLE(CONTEXT_MENUS) - -#include "PlatformMenuDescription.h" -#include <wtf/OwnPtr.h> #include <wtf/text/WTFString.h> -#if PLATFORM(MAC) -#include <wtf/RetainPtr.h> -OBJC_CLASS NSMenuItem; -#elif PLATFORM(GTK) -typedef struct _GtkMenuItem GtkMenuItem; -typedef struct _GtkAction GtkAction; -#endif -#endif // ENABLE(CONTEXT_MENUS) - namespace WebCore { - class ContextMenu; - - // This enum needs to be in sync with the WebMenuItemTag enum in WebUIDelegate.h and the - // extra values in WebUIDelegatePrivate.h - enum ContextMenuAction { - ContextMenuItemTagNoAction=0, // This item is not actually in WebUIDelegate.h - ContextMenuItemTagOpenLinkInNewWindow=1, - ContextMenuItemTagDownloadLinkToDisk, - ContextMenuItemTagCopyLinkToClipboard, - ContextMenuItemTagOpenImageInNewWindow, - ContextMenuItemTagDownloadImageToDisk, - ContextMenuItemTagCopyImageToClipboard, -#if PLATFORM(GTK) || PLATFORM(EFL) - ContextMenuItemTagCopyImageUrlToClipboard, -#endif - ContextMenuItemTagOpenFrameInNewWindow, - ContextMenuItemTagCopy, - ContextMenuItemTagGoBack, - ContextMenuItemTagGoForward, - ContextMenuItemTagStop, - ContextMenuItemTagReload, - ContextMenuItemTagCut, - ContextMenuItemTagPaste, +class ContextMenu; +class Image; +class URL; + +enum ContextMenuAction { + ContextMenuItemTagNoAction, + ContextMenuItemTagOpenLinkInNewWindow, + ContextMenuItemTagDownloadLinkToDisk, + ContextMenuItemTagCopyLinkToClipboard, + ContextMenuItemTagOpenImageInNewWindow, + ContextMenuItemTagDownloadImageToDisk, + ContextMenuItemTagCopyImageToClipboard, #if PLATFORM(GTK) - ContextMenuItemTagDelete, -#endif -#if PLATFORM(GTK) || PLATFORM (EFL) - ContextMenuItemTagSelectAll, + ContextMenuItemTagCopyImageUrlToClipboard, #endif + ContextMenuItemTagOpenFrameInNewWindow, + ContextMenuItemTagCopy, + ContextMenuItemTagGoBack, + ContextMenuItemTagGoForward, + ContextMenuItemTagStop, + ContextMenuItemTagReload, + ContextMenuItemTagCut, + ContextMenuItemTagPaste, #if PLATFORM(GTK) - ContextMenuItemTagInputMethods, - ContextMenuItemTagUnicode, - ContextMenuItemTagUnicodeInsertLRMMark, - ContextMenuItemTagUnicodeInsertRLMMark, - ContextMenuItemTagUnicodeInsertLREMark, - ContextMenuItemTagUnicodeInsertRLEMark, - ContextMenuItemTagUnicodeInsertLROMark, - ContextMenuItemTagUnicodeInsertRLOMark, - ContextMenuItemTagUnicodeInsertPDFMark, - ContextMenuItemTagUnicodeInsertZWSMark, - ContextMenuItemTagUnicodeInsertZWJMark, - ContextMenuItemTagUnicodeInsertZWNJMark, -#endif - ContextMenuItemTagSpellingGuess, - ContextMenuItemTagNoGuessesFound, - ContextMenuItemTagIgnoreSpelling, - ContextMenuItemTagLearnSpelling, - ContextMenuItemTagOther, - ContextMenuItemTagSearchInSpotlight, - ContextMenuItemTagSearchWeb, - ContextMenuItemTagLookUpInDictionary, - ContextMenuItemTagOpenWithDefaultApplication, - ContextMenuItemPDFActualSize, - ContextMenuItemPDFZoomIn, - ContextMenuItemPDFZoomOut, - ContextMenuItemPDFAutoSize, - ContextMenuItemPDFSinglePage, - ContextMenuItemPDFFacingPages, - ContextMenuItemPDFContinuous, - ContextMenuItemPDFNextPage, - ContextMenuItemPDFPreviousPage, - // These are new tags! Not a part of API!!!! - ContextMenuItemTagOpenLink = 2000, - ContextMenuItemTagIgnoreGrammar, - ContextMenuItemTagSpellingMenu, // Spelling or Spelling/Grammar sub-menu - ContextMenuItemTagShowSpellingPanel, - ContextMenuItemTagCheckSpelling, - ContextMenuItemTagCheckSpellingWhileTyping, - ContextMenuItemTagCheckGrammarWithSpelling, - ContextMenuItemTagFontMenu, // Font sub-menu - ContextMenuItemTagShowFonts, - ContextMenuItemTagBold, - ContextMenuItemTagItalic, - ContextMenuItemTagUnderline, - ContextMenuItemTagOutline, - ContextMenuItemTagStyles, - ContextMenuItemTagShowColors, - ContextMenuItemTagSpeechMenu, // Speech sub-menu - ContextMenuItemTagStartSpeaking, - ContextMenuItemTagStopSpeaking, - ContextMenuItemTagWritingDirectionMenu, // Writing Direction sub-menu - ContextMenuItemTagDefaultDirection, - ContextMenuItemTagLeftToRight, - ContextMenuItemTagRightToLeft, - ContextMenuItemTagPDFSinglePageScrolling, - ContextMenuItemTagPDFFacingPagesScrolling, -#if ENABLE(INSPECTOR) - ContextMenuItemTagInspectElement, -#endif - ContextMenuItemTagTextDirectionMenu, // Text Direction sub-menu - ContextMenuItemTagTextDirectionDefault, - ContextMenuItemTagTextDirectionLeftToRight, - ContextMenuItemTagTextDirectionRightToLeft, -#if PLATFORM(MAC) - ContextMenuItemTagCorrectSpellingAutomatically, - ContextMenuItemTagSubstitutionsMenu, - ContextMenuItemTagShowSubstitutions, - ContextMenuItemTagSmartCopyPaste, - ContextMenuItemTagSmartQuotes, - ContextMenuItemTagSmartDashes, - ContextMenuItemTagSmartLinks, - ContextMenuItemTagTextReplacement, - ContextMenuItemTagTransformationsMenu, - ContextMenuItemTagMakeUpperCase, - ContextMenuItemTagMakeLowerCase, - ContextMenuItemTagCapitalize, - ContextMenuItemTagChangeBack, + ContextMenuItemTagDelete, + ContextMenuItemTagSelectAll, + ContextMenuItemTagInputMethods, + ContextMenuItemTagUnicode, + ContextMenuItemTagUnicodeInsertLRMMark, + ContextMenuItemTagUnicodeInsertRLMMark, + ContextMenuItemTagUnicodeInsertLREMark, + ContextMenuItemTagUnicodeInsertRLEMark, + ContextMenuItemTagUnicodeInsertLROMark, + ContextMenuItemTagUnicodeInsertRLOMark, + ContextMenuItemTagUnicodeInsertPDFMark, + ContextMenuItemTagUnicodeInsertZWSMark, + ContextMenuItemTagUnicodeInsertZWJMark, + ContextMenuItemTagUnicodeInsertZWNJMark, #endif - ContextMenuItemTagOpenMediaInNewWindow, - ContextMenuItemTagDownloadMediaToDisk, - ContextMenuItemTagCopyMediaLinkToClipboard, - ContextMenuItemTagToggleMediaControls, - ContextMenuItemTagToggleMediaLoop, - ContextMenuItemTagEnterVideoFullscreen, - ContextMenuItemTagMediaPlayPause, - ContextMenuItemTagMediaMute, - ContextMenuItemTagDictationAlternative, - ContextMenuItemTagOpenLinkInThisWindow, - ContextMenuItemTagToggleVideoFullscreen, - ContextMenuItemBaseCustomTag = 5000, - ContextMenuItemCustomTagNoAction = 5998, - ContextMenuItemLastCustomTag = 5999, - ContextMenuItemBaseApplicationTag = 10000 - }; - - enum ContextMenuItemType { - ActionType, - CheckableActionType, - SeparatorType, - SubmenuType - }; - -#if ENABLE(CONTEXT_MENUS) -#if PLATFORM(MAC) - typedef NSMenuItem* PlatformMenuItemDescription; -#elif PLATFORM(GTK) - typedef GtkMenuItem* PlatformMenuItemDescription; -#else - typedef void* PlatformMenuItemDescription; -#endif - - class ContextMenuItem { - WTF_MAKE_FAST_ALLOCATED; - public: - ContextMenuItem(ContextMenuItemType, ContextMenuAction, const String&, ContextMenu* subMenu = 0); - ContextMenuItem(ContextMenuItemType, ContextMenuAction, const String&, bool enabled, bool checked); - - ~ContextMenuItem(); - - void setType(ContextMenuItemType); - ContextMenuItemType type() const; - - void setAction(ContextMenuAction); - ContextMenuAction action() const; - - void setChecked(bool = true); - bool checked() const; - - void setEnabled(bool = true); - bool enabled() const; - - void setSubMenu(ContextMenu*); - -#if PLATFORM(GTK) - GtkAction* gtkAction() const; -#endif - -#if USE(CROSS_PLATFORM_CONTEXT_MENUS) - ContextMenuItem(ContextMenuAction, const String&, bool enabled, bool checked, const Vector<ContextMenuItem>& subMenuItems); - explicit ContextMenuItem(const PlatformContextMenuItem&); - - // On Windows, the title (dwTypeData of the MENUITEMINFO) is not set in this function. Callers can set the title themselves, - // and handle the lifetime of the title, if they need it. - PlatformContextMenuItem platformContextMenuItem() const; - - void setTitle(const String& title) { m_title = title; } - const String& title() const { return m_title; } - - const Vector<ContextMenuItem>& subMenuItems() const { return m_subMenuItems; } -#else - public: - explicit ContextMenuItem(PlatformMenuItemDescription); - explicit ContextMenuItem(ContextMenu* subMenu = 0); - ContextMenuItem(ContextMenuAction, const String&, bool enabled, bool checked, Vector<ContextMenuItem>& submenuItems); - - PlatformMenuItemDescription releasePlatformDescription(); - - String title() const; - void setTitle(const String&); - - PlatformMenuDescription platformSubMenu() const; - void setSubMenu(Vector<ContextMenuItem>&); - -#endif // USE(CROSS_PLATFORM_CONTEXT_MENUS) - private: -#if USE(CROSS_PLATFORM_CONTEXT_MENUS) - ContextMenuItemType m_type; - ContextMenuAction m_action; - String m_title; - bool m_enabled; - bool m_checked; - Vector<ContextMenuItem> m_subMenuItems; -#else -#if PLATFORM(MAC) - RetainPtr<NSMenuItem> m_platformDescription; -#else - PlatformMenuItemDescription m_platformDescription; + ContextMenuItemTagSpellingGuess, + ContextMenuItemTagNoGuessesFound, + ContextMenuItemTagIgnoreSpelling, + ContextMenuItemTagLearnSpelling, + ContextMenuItemTagOther, + ContextMenuItemTagSearchInSpotlight, + ContextMenuItemTagSearchWeb, + ContextMenuItemTagLookUpInDictionary, + ContextMenuItemTagOpenWithDefaultApplication, + ContextMenuItemPDFActualSize, + ContextMenuItemPDFZoomIn, + ContextMenuItemPDFZoomOut, + ContextMenuItemPDFAutoSize, + ContextMenuItemPDFSinglePage, + ContextMenuItemPDFFacingPages, + ContextMenuItemPDFContinuous, + ContextMenuItemPDFNextPage, + ContextMenuItemPDFPreviousPage, + ContextMenuItemTagOpenLink, + ContextMenuItemTagIgnoreGrammar, + ContextMenuItemTagSpellingMenu, // Spelling or Spelling/Grammar sub-menu + ContextMenuItemTagShowSpellingPanel, + ContextMenuItemTagCheckSpelling, + ContextMenuItemTagCheckSpellingWhileTyping, + ContextMenuItemTagCheckGrammarWithSpelling, + ContextMenuItemTagFontMenu, // Font sub-menu + ContextMenuItemTagShowFonts, + ContextMenuItemTagBold, + ContextMenuItemTagItalic, + ContextMenuItemTagUnderline, + ContextMenuItemTagOutline, + ContextMenuItemTagStyles, + ContextMenuItemTagShowColors, + ContextMenuItemTagSpeechMenu, // Speech sub-menu + ContextMenuItemTagStartSpeaking, + ContextMenuItemTagStopSpeaking, + ContextMenuItemTagWritingDirectionMenu, // Writing Direction sub-menu + ContextMenuItemTagDefaultDirection, + ContextMenuItemTagLeftToRight, + ContextMenuItemTagRightToLeft, + ContextMenuItemTagPDFSinglePageScrolling, + ContextMenuItemTagPDFFacingPagesScrolling, + ContextMenuItemTagInspectElement, + ContextMenuItemTagTextDirectionMenu, // Text Direction sub-menu + ContextMenuItemTagTextDirectionDefault, + ContextMenuItemTagTextDirectionLeftToRight, + ContextMenuItemTagTextDirectionRightToLeft, +#if PLATFORM(COCOA) + ContextMenuItemTagCorrectSpellingAutomatically, + ContextMenuItemTagSubstitutionsMenu, + ContextMenuItemTagShowSubstitutions, + ContextMenuItemTagSmartCopyPaste, + ContextMenuItemTagSmartQuotes, + ContextMenuItemTagSmartDashes, + ContextMenuItemTagSmartLinks, + ContextMenuItemTagTextReplacement, + ContextMenuItemTagTransformationsMenu, + ContextMenuItemTagMakeUpperCase, + ContextMenuItemTagMakeLowerCase, + ContextMenuItemTagCapitalize, + ContextMenuItemTagChangeBack, #endif -#endif // USE(CROSS_PLATFORM_CONTEXT_MENUS) - }; + ContextMenuItemTagOpenMediaInNewWindow, + ContextMenuItemTagDownloadMediaToDisk, + ContextMenuItemTagCopyMediaLinkToClipboard, + ContextMenuItemTagToggleMediaControls, + ContextMenuItemTagToggleMediaLoop, + ContextMenuItemTagEnterVideoFullscreen, + ContextMenuItemTagMediaPlayPause, + ContextMenuItemTagMediaMute, + ContextMenuItemTagDictationAlternative, + ContextMenuItemTagToggleVideoFullscreen, + ContextMenuItemTagShareMenu, + ContextMenuItemTagToggleVideoEnhancedFullscreen, + ContextMenuItemBaseCustomTag = 5000, + ContextMenuItemLastCustomTag = 5999, + ContextMenuItemBaseApplicationTag = 10000 +}; + +enum ContextMenuItemType { + ActionType, + CheckableActionType, + SeparatorType, + SubmenuType +}; + +class ContextMenuItem { + WTF_MAKE_FAST_ALLOCATED; +public: + WEBCORE_EXPORT ContextMenuItem(ContextMenuItemType, ContextMenuAction, const String&, ContextMenu* subMenu = 0); + WEBCORE_EXPORT ContextMenuItem(ContextMenuItemType, ContextMenuAction, const String&, bool enabled, bool checked); + + WEBCORE_EXPORT ~ContextMenuItem(); + + void setType(ContextMenuItemType); + WEBCORE_EXPORT ContextMenuItemType type() const; + + void setAction(ContextMenuAction); + WEBCORE_EXPORT ContextMenuAction action() const; + + void setChecked(bool = true); + WEBCORE_EXPORT bool checked() const; + + void setEnabled(bool = true); + WEBCORE_EXPORT bool enabled() const; + + void setSubMenu(ContextMenu*); + + ContextMenuItem(ContextMenuAction, const String&, bool enabled, bool checked, const Vector<ContextMenuItem>& subMenuItems); + ContextMenuItem(); + + bool isNull() const; + + void setTitle(const String& title) { m_title = title; } + const String& title() const { return m_title; } + + const Vector<ContextMenuItem>& subMenuItems() const { return m_subMenuItems; } +private: + ContextMenuItemType m_type; + ContextMenuAction m_action; + String m_title; + bool m_enabled; + bool m_checked; + Vector<ContextMenuItem> m_subMenuItems; +}; -#endif // ENABLE(CONTEXT_MENUS) } #endif // ContextMenuItem_h |