Hi! Inspired from the suckkless surf browser, I added the patch to show the webinspector in a vertical and resizable pane of the current window. This make the inspection easier in context with tabbed.
Daniel
From ff08cd0de69488d99ef71506f815f18177737b99 Mon Sep 17 00:00:00 2001 From: Daniel Carl <[email protected]> Date: Mon, 28 Jan 2013 21:14:11 +0100 Subject: [PATCH] Open inspector in a pane of current window. --- main.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 60 insertions(+), 21 deletions(-) diff --git a/main.c b/main.c index f6531f7..8f8cc77 100644 --- a/main.c +++ b/main.c @@ -37,7 +37,10 @@ static void inputbox_activate_cb(GtkEntry *entry, gpointer user_data); static gboolean inputbox_keypress_cb(GtkEntry *entry, GdkEventKey *event); static gboolean inputbox_keyrelease_cb(GtkEntry *entry, GdkEventKey *event); static gboolean inputbox_changed_cb(GtkEditable *entry, gpointer user_data); -static WebKitWebView* inspector_inspect_web_view_cb(gpointer inspector, WebKitWebView* web_view); +static WebKitWebView* inspector_new_cb(WebKitWebInspector* inspector, WebKitWebView* web_view); +static gboolean inspector_show_cb(WebKitWebInspector *inspector); +static gboolean inspector_close_cb(WebKitWebInspector *inspector); +static void inspector_finished_cb(WebKitWebInspector *inspector); static gboolean notify_event_cb(GtkWidget *widget, GdkEvent *event, gpointer user_data); static gboolean webview_console_cb(WebKitWebView *webview, char *message, int line, char *source, gpointer user_data); static gboolean webview_download_cb(WebKitWebView *webview, WebKitDownload *download, gpointer user_data); @@ -125,6 +128,7 @@ static GtkAdjustment *adjust_h; static GtkAdjustment *adjust_v; static GtkWidget *inputbox; static GtkWidget *eventbox; +static GtkWidget *pane; static GtkBox *statusbar; static GtkWidget *status_url; static GtkWidget *status_state; @@ -153,6 +157,7 @@ static char followTarget[8] = ""; char *error_msg = NULL; char *config_base = NULL; static gboolean manual_focus = FALSE; +static gboolean is_inspecting = FALSE; GList *activeDownloads, *colon_aliases = NULL; @@ -289,25 +294,46 @@ webview_mimetype_cb(WebKitWebView *webview, WebKitWebFrame *frame, WebKitNetwork } static WebKitWebView* -inspector_inspect_web_view_cb(gpointer inspector, WebKitWebView* web_view) { - gchar* inspector_title; - GtkWidget* inspector_window; - GtkWidget* inspector_view; +inspector_new_cb(WebKitWebInspector *inspector, WebKitWebView* web_view) { + return WEBKIT_WEB_VIEW(webkit_web_view_new()); +} - /* just enough code to show the inspector - no signal handling etc. */ - inspector_title = g_strdup_printf("Inspect page - %s - Vimprobable2", webkit_web_view_get_uri(web_view)); - if (embed) { - inspector_window = gtk_plug_new(embed); - } else { - inspector_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_wmclass(window, "vimprobable2", "Vimprobable2"); +static gboolean +inspector_show_cb(WebKitWebInspector *inspector) { + WebKitWebView *webview; + + if (is_inspecting) { + return FALSE; + } + + webview = webkit_web_inspector_get_web_view(inspector); + gtk_paned_pack2(GTK_PANED(pane), GTK_WIDGET(webview), TRUE, TRUE); + gtk_widget_show(GTK_WIDGET(webview)); + + is_inspecting = TRUE; + + return TRUE; +} + +static gboolean +inspector_close_cb(WebKitWebInspector *inspector) { + GtkWidget *widget; + + if (!is_inspecting) { + return FALSE; } - gtk_window_set_title(GTK_WINDOW(inspector_window), inspector_title); - g_free(inspector_title); - inspector_view = webkit_web_view_new(); - gtk_container_add(GTK_CONTAINER(inspector_window), inspector_view); - gtk_widget_show_all(inspector_window); - return WEBKIT_WEB_VIEW(inspector_view); + widget = GTK_WIDGET(webkit_web_inspector_get_web_view(inspector)); + gtk_widget_hide(widget); + gtk_widget_destroy(widget); + + is_inspecting = FALSE; + + return TRUE; +} + +static void +inspector_finished_cb(WebKitWebInspector *inspector) { + g_free(inspector); } gboolean @@ -1077,7 +1103,11 @@ open_inspector(const Arg * arg) { settings = webkit_web_view_get_settings(webview); g_object_get(G_OBJECT(settings), "enable-developer-extras", &inspect_enabled, NULL); if (inspect_enabled) { - webkit_web_inspector_show(inspector); + if (is_inspecting) { + webkit_web_inspector_close(inspector); + } else { + webkit_web_inspector_show(inspector); + } return TRUE; } else { echo_message(Error, "Webinspector is not enabled"); @@ -2539,6 +2569,9 @@ setup_gui() { GtkWidget *viewport = gtk_scrolled_window_new(adjust_h, adjust_v); #endif + pane = gtk_vpaned_new(); + gtk_paned_pack1(GTK_PANED(pane), GTK_WIDGET(box), TRUE, TRUE); + setup_signals(); gtk_container_add(GTK_CONTAINER(viewport), GTK_WIDGET(webview)); @@ -2560,7 +2593,7 @@ setup_gui() { gtk_box_pack_start(box, eventbox, FALSE, FALSE, 0); gtk_entry_set_has_frame(GTK_ENTRY(inputbox), FALSE); gtk_box_pack_end(box, inputbox, FALSE, FALSE, 0); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(box)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(pane)); gtk_widget_grab_focus(GTK_WIDGET(webview)); gtk_widget_show_all(GTK_WIDGET(window)); set_widget_font_and_color(inputbox, urlboxfont[0], urlboxbgcolor[0], urlboxcolor[0]); @@ -2640,7 +2673,13 @@ setup_signals() { NULL); /* inspector */ g_signal_connect(G_OBJECT(inspector), - "inspect-web-view", G_CALLBACK(inspector_inspect_web_view_cb), NULL); + "inspect-web-view", G_CALLBACK(inspector_new_cb), NULL); + g_signal_connect(G_OBJECT(inspector), + "show-window", G_CALLBACK(inspector_show_cb), NULL); + g_signal_connect(G_OBJECT(inspector), + "close-window", G_CALLBACK(inspector_close_cb), NULL); + g_signal_connect(G_OBJECT(inspector), + "finished", G_CALLBACK(inspector_finished_cb), NULL); } #ifdef ENABLE_USER_SCRIPTFILE -- 1.7.9.5
signature.asc
Description: Digital signature
------------------------------------------------------------------------------ Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft MVPs and experts. ON SALE this month only -- learn more at: http://p.sf.net/sfu/learnnow-d2d
_______________________________________________ Vimprobable-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/vimprobable-users
