Changeset 121771 in webkit
- Timestamp:
- Jul 3, 2012 8:43:42 AM (12 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r121770 r121771 1 2012-07-03 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Add WebKitWebView::context-menu-dismissed signal to WebKit2 GTK+ API 4 https://bugs.webkit.org/show_bug.cgi?id=90386 5 6 Reviewed by Martin Robinson. 7 8 * UIProcess/API/gtk/WebKitWebView.cpp: 9 (webkit_web_view_class_init): Add context-menu-dismissed signal. 10 (contextMenuDismissed): Emit context-menu-dismissed signal. 11 (webkitWebViewPopulateContextMenu): Connect to deactivate signal 12 of the GtkMenu and emit WebKitWebView::context-menu-dismissed when 13 the gtk menu is deactivated. 14 * UIProcess/API/gtk/WebKitWebView.h: 15 (_WebKitWebViewClass): Add virtual methos for 16 context-menu-dismissed signal. 17 * UIProcess/API/gtk/tests/TestContextMenu.cpp: 18 (testContextMenuDismissed): 19 (beforeAll): 20 * UIProcess/gtk/WebContextMenuProxyGtk.h: 21 (WebKit::WebContextMenuProxyGtk::gtkMenu): Get the GtkMenu built 22 for the context menu proxy. 23 1 24 2012-07-03 Piotr Roguski <p.roguski@samsung.com> 2 25 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp
r121097 r121771 89 89 90 90 CONTEXT_MENU, 91 CONTEXT_MENU_DISMISSED, 91 92 92 93 LAST_SIGNAL … … 1044 1045 GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE, 1045 1046 WEBKIT_TYPE_HIT_TEST_RESULT); 1047 1048 /** 1049 * WebKitWebView::context-menu-dismissed: 1050 * @web_view: the #WebKitWebView on which the signal is emitted 1051 * 1052 * Emitted after #WebKitWebView::context-menu signal, if the context menu is shown, 1053 * to notify that the context menu is dismissed. 1054 */ 1055 signals[CONTEXT_MENU_DISMISSED] = 1056 g_signal_new("context-menu-dismissed", 1057 G_TYPE_FROM_CLASS(webViewClass), 1058 G_SIGNAL_RUN_LAST, 1059 G_STRUCT_OFFSET(WebKitWebViewClass, context_menu_dismissed), 1060 0, 0, 1061 g_cclosure_marshal_VOID__VOID, 1062 G_TYPE_NONE, 0); 1046 1063 } 1047 1064 … … 1339 1356 } 1340 1357 1358 static void contextMenuDismissed(GtkMenuShell*, WebKitWebView* webView) 1359 { 1360 g_signal_emit(webView, signals[CONTEXT_MENU_DISMISSED], 0, NULL); 1361 } 1362 1341 1363 void webkitWebViewPopulateContextMenu(WebKitWebView* webView, WKArrayRef wkProposedMenu, WKHitTestResultRef wkHitTestResult) 1342 1364 { … … 1360 1382 webkitContextMenuPopulate(contextMenu.get(), contextMenuItems); 1361 1383 contextMenuProxy->populate(contextMenuItems); 1384 1385 g_signal_connect(contextMenuProxy->gtkMenu(), "deactivate", G_CALLBACK(contextMenuDismissed), webView); 1362 1386 1363 1387 // Clear the menu to make sure it's useless after signal emission. -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h
r121093 r121771 128 128 WebKitWebViewBaseClass parent; 129 129 130 void (* load_changed) (WebKitWebView *web_view, 131 WebKitLoadEvent load_event); 132 gboolean (* load_failed) (WebKitWebView *web_view, 133 WebKitLoadEvent load_event, 134 const gchar *failing_uri, 135 GError *error); 136 137 GtkWidget *(* create) (WebKitWebView *web_view); 138 void (* ready_to_show) (WebKitWebView *web_view); 139 void (* run_as_modal) (WebKitWebView *web_view); 140 void (* close) (WebKitWebView *web_view); 141 142 gboolean (* script_dialog) (WebKitWebView *web_view, 143 WebKitScriptDialog *dialog); 144 145 gboolean (* decide_policy) (WebKitWebView *web_view, 146 WebKitPolicyDecision *decision, 147 WebKitPolicyDecisionType type); 148 gboolean (* permission_request) (WebKitWebView *web_view, 149 WebKitPermissionRequest *permission_request); 150 void (* mouse_target_changed) (WebKitWebView *web_view, 151 WebKitHitTestResult *hit_test_result, 152 guint modifiers); 153 gboolean (* print_requested) (WebKitWebView *web_view, 154 WebKitPrintOperation *print_operation); 155 void (* resource_load_started) (WebKitWebView *web_view, 156 WebKitWebResource *resource, 157 WebKitURIRequest *request); 158 gboolean (* enter_fullscreen) (WebKitWebView *web_view); 159 gboolean (* leave_fullscreen) (WebKitWebView *web_view); 160 gboolean (* run_file_chooser) (WebKitWebView *web_view, 161 WebKitFileChooserRequest *request); 162 gboolean (* context_menu) (WebKitWebView *web_view, 163 WebKitContextMenu *context_menu, 164 GdkEvent *event, 165 WebKitHitTestResult *hit_test_result); 130 void (* load_changed) (WebKitWebView *web_view, 131 WebKitLoadEvent load_event); 132 gboolean (* load_failed) (WebKitWebView *web_view, 133 WebKitLoadEvent load_event, 134 const gchar *failing_uri, 135 GError *error); 136 137 GtkWidget *(* create) (WebKitWebView *web_view); 138 void (* ready_to_show) (WebKitWebView *web_view); 139 void (* run_as_modal) (WebKitWebView *web_view); 140 void (* close) (WebKitWebView *web_view); 141 142 gboolean (* script_dialog) (WebKitWebView *web_view, 143 WebKitScriptDialog *dialog); 144 145 gboolean (* decide_policy) (WebKitWebView *web_view, 146 WebKitPolicyDecision *decision, 147 WebKitPolicyDecisionType type); 148 gboolean (* permission_request) (WebKitWebView *web_view, 149 WebKitPermissionRequest *permission_request); 150 void (* mouse_target_changed) (WebKitWebView *web_view, 151 WebKitHitTestResult *hit_test_result, 152 guint modifiers); 153 gboolean (* print_requested) (WebKitWebView *web_view, 154 WebKitPrintOperation *print_operation); 155 void (* resource_load_started) (WebKitWebView *web_view, 156 WebKitWebResource *resource, 157 WebKitURIRequest *request); 158 gboolean (* enter_fullscreen) (WebKitWebView *web_view); 159 gboolean (* leave_fullscreen) (WebKitWebView *web_view); 160 gboolean (* run_file_chooser) (WebKitWebView *web_view, 161 WebKitFileChooserRequest *request); 162 gboolean (* context_menu) (WebKitWebView *web_view, 163 WebKitContextMenu *context_menu, 164 GdkEvent *event, 165 WebKitHitTestResult *hit_test_result); 166 void (* context_menu_dismissed) (WebKitWebView *web_view); 166 167 167 168 /* Padding for future expansion */ -
trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestContextMenu.cpp
r121093 r121771 50 50 } 51 51 52 static void contextMenuDismissedCallback(WebKitWebView*, ContextMenuTest* test) 53 { 54 test->contextMenuDismissed(); 55 } 56 52 57 ContextMenuTest() 53 58 : m_menuPositionX(0) … … 55 60 { 56 61 g_signal_connect(m_webView, "context-menu", G_CALLBACK(contextMenuCallback), this); 62 g_signal_connect(m_webView, "context-menu-dismissed", G_CALLBACK(contextMenuDismissedCallback), this); 57 63 } 58 64 … … 63 69 64 70 virtual bool contextMenu(WebKitContextMenu*, GdkEvent*, WebKitHitTestResult*) = 0; 71 72 virtual void contextMenuDismissed() 73 { 74 quitMainLoop(); 75 } 65 76 66 77 bool shouldShowInputMethodsMenu() … … 182 193 { 183 194 showContextMenuAtPositionAndWaitUntilFinished(0, 0); 195 } 196 197 static gboolean simulateEscKeyIdleCallback(ContextMenuTest* test) 198 { 199 test->keyStroke(GDK_KEY_Escape); 200 return FALSE; 201 } 202 203 void dismissContextMenuAndWaitUntilFinished() 204 { 205 g_idle_add(reinterpret_cast<GSourceFunc>(simulateEscKeyIdleCallback), this); 206 g_main_loop_run(m_mainLoop); 184 207 } 185 208 … … 406 429 gtk_menu_shell_activate_item(GTK_MENU_SHELL(menu), GTK_WIDGET(item), TRUE); 407 430 m_itemToActivateLabel = 0; 408 quitMainLoop();409 431 } 410 432 … … 658 680 } 659 681 682 class ContextMenuDismissedTest: public ContextMenuTest { 683 public: 684 MAKE_GLIB_TEST_FIXTURE(ContextMenuDismissedTest); 685 686 ContextMenuDismissedTest() 687 : m_dismissed(false) 688 { 689 } 690 691 bool contextMenu(WebKitContextMenu* contextMenu, GdkEvent*, WebKitHitTestResult*) 692 { 693 quitMainLoop(); 694 // Show the default context menu. 695 return false; 696 } 697 698 void contextMenuDismissed() 699 { 700 m_dismissed = true; 701 ContextMenuTest::contextMenuDismissed(); 702 } 703 704 void showContextMenuAndWaitUntilDismissed() 705 { 706 showContextMenuAndWaitUntilFinished(); 707 dismissContextMenuAndWaitUntilFinished(); 708 } 709 710 bool m_dismissed; 711 }; 712 713 static void testContextMenuDismissed(ContextMenuDismissedTest* test, gconstpointer) 714 { 715 test->showInWindowAndWaitUntilMapped(); 716 717 test->loadHtml("<html><body>WebKitGTK+ Context menu tests</body></html>", "file:///"); 718 test->waitUntilLoadFinished(); 719 720 test->showContextMenuAndWaitUntilDismissed(); 721 g_assert(test->m_dismissed); 722 } 723 660 724 void beforeAll() 661 725 { … … 665 729 ContextMenuDisabledTest::add("WebKitWebView", "disable-menu", testContextMenuDisableMenu); 666 730 ContextMenuSubmenuTest::add("WebKitWebView", "submenu", testContextMenuSubMenu); 731 ContextMenuDismissedTest::add("WebKitWebView", "menu-dismissed", testContextMenuDismissed); 667 732 } 668 733 -
trunk/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h
r120305 r121771 50 50 51 51 void populate(Vector<WebCore::ContextMenuItem>&); 52 GtkMenu* gtkMenu() const { return m_menu.platformDescription(); } 52 53 53 54 private:
Note: See TracChangeset
for help on using the changeset viewer.