diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:41 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:41 -0800 |
commit | 648161bb0edfc3d43db63caed5cc5213bc6cb78f (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /WebCore/platform/gtk/ContextMenuItemGtk.cpp | |
parent | a65af38181ac7d34544586bdb5cd004de93897ad (diff) | |
download | external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.zip external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.gz external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'WebCore/platform/gtk/ContextMenuItemGtk.cpp')
-rw-r--r-- | WebCore/platform/gtk/ContextMenuItemGtk.cpp | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/WebCore/platform/gtk/ContextMenuItemGtk.cpp b/WebCore/platform/gtk/ContextMenuItemGtk.cpp deleted file mode 100644 index 84f78c0..0000000 --- a/WebCore/platform/gtk/ContextMenuItemGtk.cpp +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright (C) 2007 Holger Hans Peter Freyther - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" -#include "ContextMenu.h" -#include "ContextMenuItem.h" -#include "CString.h" -#include "NotImplemented.h" - -#include <gtk/gtk.h> - -#define WEBKIT_CONTEXT_MENU_ACTION "webkit-context-menu" - -namespace WebCore { - -static const char* gtkStockIDFromContextMenuAction(const ContextMenuAction& action) -{ - switch (action) { - case ContextMenuItemTagCopyLinkToClipboard: - case ContextMenuItemTagCopyImageToClipboard: - case ContextMenuItemTagCopy: - return GTK_STOCK_COPY; - case ContextMenuItemTagOpenLinkInNewWindow: - case ContextMenuItemTagOpenImageInNewWindow: - case ContextMenuItemTagOpenFrameInNewWindow: - return GTK_STOCK_OPEN; - case ContextMenuItemTagDownloadLinkToDisk: - case ContextMenuItemTagDownloadImageToDisk: - return GTK_STOCK_SAVE; - case ContextMenuItemTagGoBack: - return GTK_STOCK_GO_BACK; - case ContextMenuItemTagGoForward: - return GTK_STOCK_GO_FORWARD; - case ContextMenuItemTagStop: - return GTK_STOCK_STOP; - case ContextMenuItemTagReload: - return GTK_STOCK_REFRESH; - case ContextMenuItemTagCut: - return GTK_STOCK_CUT; - case ContextMenuItemTagPaste: - return GTK_STOCK_PASTE; - case ContextMenuItemTagDelete: - return GTK_STOCK_DELETE; -#if GTK_CHECK_VERSION(2, 10, 0) - case ContextMenuItemTagSelectAll: - return GTK_STOCK_SELECT_ALL; -#endif - case ContextMenuItemTagSpellingGuess: - return GTK_STOCK_INFO; - case ContextMenuItemTagIgnoreSpelling: - return GTK_STOCK_NO; - case ContextMenuItemTagLearnSpelling: - return GTK_STOCK_OK; - case ContextMenuItemTagOther: - return GTK_STOCK_MISSING_IMAGE; - case ContextMenuItemTagSearchInSpotlight: - return GTK_STOCK_FIND; - case ContextMenuItemTagSearchWeb: - return GTK_STOCK_FIND; - case ContextMenuItemTagOpenWithDefaultApplication: - return GTK_STOCK_OPEN; - case ContextMenuItemPDFZoomIn: - return GTK_STOCK_ZOOM_IN; - case ContextMenuItemPDFZoomOut: - return GTK_STOCK_ZOOM_OUT; - case ContextMenuItemPDFAutoSize: - return GTK_STOCK_ZOOM_FIT; - case ContextMenuItemPDFNextPage: - return GTK_STOCK_GO_FORWARD; - case ContextMenuItemPDFPreviousPage: - return GTK_STOCK_GO_BACK; - // New tags, not part of API - case ContextMenuItemTagOpenLink: - return GTK_STOCK_OPEN; - case ContextMenuItemTagCheckSpelling: - return GTK_STOCK_SPELL_CHECK; - case ContextMenuItemTagFontMenu: - return GTK_STOCK_SELECT_FONT; - case ContextMenuItemTagShowFonts: - return GTK_STOCK_SELECT_FONT; - case ContextMenuItemTagBold: - return GTK_STOCK_BOLD; - case ContextMenuItemTagItalic: - return GTK_STOCK_ITALIC; - case ContextMenuItemTagUnderline: - return GTK_STOCK_UNDERLINE; - case ContextMenuItemTagShowColors: - return GTK_STOCK_SELECT_COLOR; - default: - return NULL; - } -} - -// Extract the ActionType from the menu item -ContextMenuItem::ContextMenuItem(GtkMenuItem* item) - : m_platformDescription() -{ - if (GTK_IS_SEPARATOR_MENU_ITEM(item)) - m_platformDescription.type = SeparatorType; - else if (gtk_menu_item_get_submenu(item)) - m_platformDescription.type = SubmenuType; - else if (GTK_IS_CHECK_MENU_ITEM(item)) { - m_platformDescription.type = CheckableActionType; - m_platformDescription.checked = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)); - } else - m_platformDescription.type = ActionType; - - m_platformDescription.action = *static_cast<ContextMenuAction*>(g_object_get_data(G_OBJECT(item), WEBKIT_CONTEXT_MENU_ACTION)); - - m_platformDescription.subMenu = GTK_MENU(gtk_menu_item_get_submenu(item)); - if (m_platformDescription.subMenu) - g_object_ref(m_platformDescription.subMenu); -} - -ContextMenuItem::ContextMenuItem(ContextMenu*) -{ - notImplemented(); -} - -ContextMenuItem::ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String& title, ContextMenu* subMenu) -{ - m_platformDescription.type = type; - m_platformDescription.action = action; - m_platformDescription.title = title; - - setSubMenu(subMenu); -} - -ContextMenuItem::~ContextMenuItem() -{ - if (m_platformDescription.subMenu) - g_object_unref(m_platformDescription.subMenu); -} - -GtkMenuItem* ContextMenuItem::createNativeMenuItem(const PlatformMenuItemDescription& menu) -{ - GtkMenuItem* item = 0; - if (menu.type == SeparatorType) - item = GTK_MENU_ITEM(gtk_separator_menu_item_new()); - else { - if (menu.type == CheckableActionType) { - item = GTK_MENU_ITEM(gtk_check_menu_item_new_with_mnemonic(menu.title.utf8().data())); - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), menu.checked); - } else { - if (const gchar* stockID = gtkStockIDFromContextMenuAction(menu.action)) { - item = GTK_MENU_ITEM(gtk_image_menu_item_new_with_mnemonic(menu.title.utf8().data())); - GtkWidget* image = gtk_image_new_from_stock(stockID, GTK_ICON_SIZE_MENU); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image); - } else - item = GTK_MENU_ITEM(gtk_menu_item_new_with_mnemonic(menu.title.utf8().data())); - } - - ContextMenuAction* menuAction = static_cast<ContextMenuAction*>(malloc(sizeof(ContextMenuAction*))); - *menuAction = menu.action; - g_object_set_data(G_OBJECT(item), WEBKIT_CONTEXT_MENU_ACTION, menuAction); - - gtk_widget_set_sensitive(GTK_WIDGET(item), menu.enabled); - - if (menu.subMenu) - gtk_menu_item_set_submenu(item, GTK_WIDGET(menu.subMenu)); - } - - return item; -} - -PlatformMenuItemDescription ContextMenuItem::releasePlatformDescription() -{ - PlatformMenuItemDescription description = m_platformDescription; - m_platformDescription = PlatformMenuItemDescription(); - return description; -} - -ContextMenuItemType ContextMenuItem::type() const -{ - return m_platformDescription.type; -} - -void ContextMenuItem::setType(ContextMenuItemType type) -{ - m_platformDescription.type = type; -} - -ContextMenuAction ContextMenuItem::action() const -{ - return m_platformDescription.action; -} - -void ContextMenuItem::setAction(ContextMenuAction action) -{ - m_platformDescription.action = action; -} - -String ContextMenuItem::title() const -{ - notImplemented(); - return String(); -} - -void ContextMenuItem::setTitle(const String&) -{ - notImplemented(); -} - -PlatformMenuDescription ContextMenuItem::platformSubMenu() const -{ - return m_platformDescription.subMenu; -} - -void ContextMenuItem::setSubMenu(ContextMenu* menu) -{ - if (m_platformDescription.subMenu) - g_object_unref(m_platformDescription.subMenu); - - if (!menu) - return; - - m_platformDescription.subMenu = menu->releasePlatformDescription(); - m_platformDescription.type = SubmenuType; - -#if GLIB_CHECK_VERSION(2,10,0) - g_object_ref_sink(G_OBJECT(m_platformDescription.subMenu)); -#else - g_object_ref(G_OBJECT(m_platformDescription.subMenu)); - gtk_object_sink(GTK_OBJECT(m_platformDescription.subMenu)); -#endif -} - -void ContextMenuItem::setChecked(bool shouldCheck) -{ - m_platformDescription.checked = shouldCheck; -} - -void ContextMenuItem::setEnabled(bool shouldEnable) -{ - m_platformDescription.enabled = shouldEnable; -} - -} |