Adapt inspector handling

The inspector is now easily manageable via API, there's no need for
keeping its state in the Client.
This commit is contained in:
Quentin Rameau 2015-11-20 00:44:29 +01:00
parent 0b5b798eb2
commit c4f01cd18b
2 changed files with 8 additions and 54 deletions

View file

@ -109,7 +109,7 @@ static Key keys[] = {
{ 0, GDK_KEY_F11, togglefullscreen, { 0 } },
{ 0, GDK_KEY_Escape, stop, { 0 } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_o, inspector, { 0 } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_o, toggleinspector, { 0 } },
{ MODKEY, GDK_KEY_g, spawn, SETPROP("_SURF_URI", "_SURF_GO") },
{ MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") },

60
surf.c
View file

@ -65,7 +65,7 @@ typedef struct Client {
const char *needle;
gint progress;
struct Client *next;
gboolean zoomed, fullscreen, isinspecting;
gboolean zoomed, fullscreen;
} Client;
typedef struct {
@ -144,12 +144,7 @@ static void downloadstarted(WebKitWebContext *wc, WebKitDownload *d,
static void responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c);
static void download(Client *c, WebKitURIResponse *r);
static void inspector(Client *c, const Arg *arg);
static WebKitWebView *inspector_new(WebKitWebInspector *i, WebKitWebView *v,
Client *c);
static gboolean inspector_show(WebKitWebInspector *i, Client *c);
static gboolean inspector_close(WebKitWebInspector *i, Client *c);
static void inspector_finished(WebKitWebInspector *i, Client *c);
static void toggleinspector(Client *c, const Arg *a);
static gboolean keypress(GtkAccelGroup *group, GObject *obj, guint key,
GdkModifierType mods, Client *c);
@ -722,60 +717,16 @@ download(Client *c, WebKitURIResponse *r)
}
void
inspector(Client *c, const Arg *arg)
toggleinspector(Client *c, const Arg *a)
{
if (enableinspector) {
if (c->isinspecting)
if (webkit_web_inspector_is_attached(c->inspector))
webkit_web_inspector_close(c->inspector);
else
webkit_web_inspector_show(c->inspector);
}
}
WebKitWebView *
inspector_new(WebKitWebInspector *i, WebKitWebView *v, Client *c)
{
return WEBKIT_WEB_VIEW(webkit_web_view_new());
}
gboolean
inspector_show(WebKitWebInspector *i, Client *c)
{
WebKitWebView *w;
if (c->isinspecting)
return false;
w = webkit_web_inspector_get_web_view(i);
gtk_paned_pack2(GTK_PANED(c->pane), GTK_WIDGET(w), TRUE, TRUE);
gtk_widget_show(GTK_WIDGET(w));
c->isinspecting = true;
return true;
}
gboolean
inspector_close(WebKitWebInspector *i, Client *c)
{
GtkWidget *w;
if (!c->isinspecting)
return false;
w = GTK_WIDGET(webkit_web_inspector_get_web_view(i));
gtk_widget_hide(w);
gtk_widget_destroy(w);
c->isinspecting = false;
return true;
}
void
inspector_finished(WebKitWebInspector *i, Client *c)
{
g_free(c->inspector);
}
gboolean
keypress(GtkAccelGroup *group, GObject *obj, guint key, GdkModifierType mods,
Client *c)
@ -1025,6 +976,9 @@ showview(WebKitWebView *v, Client *c)
c->win = createwindow(c);
if (enableinspector)
c->inspector = webkit_web_view_get_inspector(c->view);
if (!kioskmode)
addaccelgroup(c);