From 33d09ad8109a30bfc6164cbeeda5c38724fa033a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 6 Feb 2013 18:41:31 -0500 Subject: [web-inspector] Add a secret debugging shortcut. Drop the pop-up menu item and instead install a key-press-event handler on all WebKitWebView instances. ++I opens the web inspector. --- modules/web-inspector/evolution-web-inspector.c | 83 +++++++++---------------- 1 file changed, 31 insertions(+), 52 deletions(-) (limited to 'modules/web-inspector') diff --git a/modules/web-inspector/evolution-web-inspector.c b/modules/web-inspector/evolution-web-inspector.c index 8028ec7465..2b960aac43 100644 --- a/modules/web-inspector/evolution-web-inspector.c +++ b/modules/web-inspector/evolution-web-inspector.c @@ -18,6 +18,7 @@ #include #include +#include #include @@ -30,6 +31,14 @@ (G_TYPE_CHECK_INSTANCE_CAST \ ((obj), E_TYPE_WEB_INSPECTOR, EWebInspector)) +/* ++I */ +#define WEB_INSPECTOR_MOD (GDK_CONTROL_MASK | GDK_MOD1_MASK) +#define WEB_INSPECTOR_KEY (GDK_KEY_i) + +#define WEB_INSPECTOR_SHORTCUT_SHOW(event) \ + ((((event)->state & GDK_MODIFIER_MASK) == WEB_INSPECTOR_MOD) && \ + ((event)->keyval == WEB_INSPECTOR_KEY)) + typedef struct _EWebInspector EWebInspector; typedef struct _EWebInspectorClass EWebInspectorClass; @@ -41,15 +50,6 @@ struct _EWebInspectorClass { EExtensionClass parent_class; }; -static const gchar *ui = -"" -" " -" " -" " -" " -" " -""; - /* Module Entry Points */ void e_module_load (GTypeModule *type_module); void e_module_unload (GTypeModule *type_module); @@ -59,42 +59,35 @@ GType e_web_inspector_get_type (void); G_DEFINE_DYNAMIC_TYPE (EWebInspector, e_web_inspector, E_TYPE_EXTENSION) -static EWebView * +static WebKitWebView * web_inspector_get_web_view (EWebInspector *extension) { EExtensible *extensible; extensible = e_extension_get_extensible (E_EXTENSION (extension)); - return E_WEB_VIEW (extensible); + return WEBKIT_WEB_VIEW (extensible); } -static void -web_inspector_action_inspect_cb (GtkAction *action, - EWebInspector *extension) +static gboolean +web_inspector_key_press_event_cb (WebKitWebView *web_view, + GdkEventKey *event) { WebKitWebInspector *inspector; - EWebView *web_view; - - web_view = web_inspector_get_web_view (extension); - inspector = webkit_web_view_get_inspector (WEBKIT_WEB_VIEW (web_view)); + gboolean handled = FALSE; - webkit_web_inspector_show (inspector); -} + inspector = webkit_web_view_get_inspector (web_view); -static GtkActionEntry inspect_entries[] = { + if (WEB_INSPECTOR_SHORTCUT_SHOW (event)) { + webkit_web_inspector_show (inspector); + handled = TRUE; + } - { "inspect", - NULL, - N_("_Inspect..."), - NULL, - N_("Inspect the HTML content (debugging feature)"), - G_CALLBACK (web_inspector_action_inspect_cb) } -}; + return handled; +} static WebKitWebView * -web_inspector_inspect_web_view_cb (WebKitWebInspector *inspector, - EWebInspector *extension) +web_inspector_inspect_web_view_cb (WebKitWebInspector *inspector) { GtkWidget *web_view; GtkWidget *window; @@ -117,38 +110,24 @@ static void web_inspector_constructed (GObject *object) { EWebInspector *extension; + WebKitWebView *web_view; WebKitWebSettings *settings; WebKitWebInspector *inspector; - GtkActionGroup *action_group; - GtkUIManager *ui_manager; - EWebView *web_view; - GError *error = NULL; extension = E_WEB_INSPECTOR (object); web_view = web_inspector_get_web_view (extension); + settings = webkit_web_view_get_settings (web_view); + inspector = webkit_web_view_get_inspector (web_view); - ui_manager = e_web_view_get_ui_manager (web_view); - action_group = e_web_view_get_action_group (web_view, "standard"); - - settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (web_view)); g_object_set (settings, "enable-developer-extras", TRUE, NULL); - inspector = webkit_web_view_get_inspector (WEBKIT_WEB_VIEW (web_view)); + g_signal_connect ( + web_view, "key-press-event", + G_CALLBACK (web_inspector_key_press_event_cb), NULL); g_signal_connect ( inspector, "inspect-web-view", - G_CALLBACK (web_inspector_inspect_web_view_cb), extension); - - gtk_action_group_add_actions ( - action_group, inspect_entries, - G_N_ELEMENTS (inspect_entries), extension); - - /* Because we are loading from a hard-coded string, there is - * no chance of I/O errors. Failure here implies a malformed - * UI definition. Full stop. */ - gtk_ui_manager_add_ui_from_string (ui_manager, ui, -1, &error); - if (error != NULL) - g_error ("%s", error->message); + G_CALLBACK (web_inspector_inspect_web_view_cb), NULL); } static void @@ -161,7 +140,7 @@ e_web_inspector_class_init (EWebInspectorClass *class) object_class->constructed = web_inspector_constructed; extension_class = E_EXTENSION_CLASS (class); - extension_class->extensible_type = E_TYPE_WEB_VIEW; + extension_class->extensible_type = WEBKIT_TYPE_WEB_VIEW; } static void -- cgit v1.2.3