[webkit-reviews] review denied: [Bug 54827] [GTK] Add context menu support for Webkit2 : [Attachment 89347] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Apr 13 09:14:26 PDT 2011
Martin Robinson <mrobinson at webkit.org> has denied Carlos Garcia Campos
<cgarcia at igalia.com>'s request for review:
Bug 54827: [GTK] Add context menu support for Webkit2
https://bugs.webkit.org/show_bug.cgi?id=54827
Attachment 89347: Patch
https://bugs.webkit.org/attachment.cgi?id=89347&action=review
------- Additional Comments from Martin Robinson <mrobinson at webkit.org>
View in context: https://bugs.webkit.org/attachment.cgi?id=89347&action=review
Great work. I have a few minor quibbles, but very minor.
> Source/WebCore/platform/gtk/ContextMenuItemGtk.cpp:208
> + return action ? String::fromUTF8(gtk_action_get_label(action)) :
String();
Nice.
> Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:37
> +#define WEBKIT_CONTEXT_MENU_ACTION "webkit-context-menu"
Please use a static const instead of a define and use WebKit naming style.
> Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:116
> + case WebCore::ContextMenuItemTagCopyImageUrlToClipboard:
This shouldn't be GTK_STOCK_COPY?
> Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:154
> + GtkAction* action = 0;
> + GOwnPtr<char>
actionName(g_strdup_printf("context-menu-action-%d", item.action()));
> +
> + if (item.type() == WebCore::CheckableActionType) {
> + action = GTK_ACTION(gtk_toggle_action_new(actionName.get(),
item.title().utf8().data(), 0,
gtkStockIDFromContextMenuAction(item.action())));
> + gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action),
item.checked());
> + } else
> + action = gtk_action_new(actionName.get(),
item.title().utf8().data(), 0, gtkStockIDFromContextMenuAction(item.action()));
> +
> + gtk_action_set_sensitive(action, item.enabled());
Would you consider splitting this out into a helper? Something like
getActionForWebContextMenuItem. You could use early returns and it would make
this for loop easier to read.
> Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:160
> + g_object_unref(action);
Perhaps a GRefPtr?
> Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:179
> + GtkMenu* menu = GTK_MENU(gtk_menu_new());
> + populateMenu(menu, items);
I think it would simplify things to change populateMenu to createGtkMenu and
have it responsible for creating the GtkMenu itself. You could change this to:
GtkMenu* menu = createGtkMenu(items);
and simplify the submenu case above.
> Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:180
> + webkitWebViewBaseShowContextMenu(WEBKIT_WEB_VIEW_BASE(m_webView), menu,
position);
I'd much rather have the logic for showing the menu be in this class? Do you
have a particular reason for having it in the WebView GObject?
More information about the webkit-reviews
mailing list