Introduction
Introduction Statistics Contact Development Disclaimer Help
tAdd newview() and forward related views - surf - customized build of surf, the…
git clone git://src.adamsgaard.dk/surf
Log
Files
Refs
README
LICENSE
---
commit ad538bb00a38c5df7d7140414756724c1045307d
parent 421486db18ce2de31de71bf0372b6f5c049eb970
Author: Quentin Rameau <[email protected]>
Date: Wed, 18 Nov 2015 16:53:37 +0100
Add newview() and forward related views
View creation is now done in a separate function.
That helps identifying the workflow and let us easily carry related
view (client) when asked by the WebKit for a new one.
Diffstat:
M surf.c | 137 +++++++++++++++++------------…
1 file changed, 77 insertions(+), 60 deletions(-)
---
diff --git a/surf.c b/surf.c
t@@ -155,7 +155,8 @@ static void loadstatuschange(WebKitWebView *view, GParamSp…
Client *c);
static void loaduri(Client *c, const Arg *arg);
static void navigate(Client *c, const Arg *arg);
-static Client *newclient(void);
+static Client *newclient(Client *c);
+static WebKitWebView *newview(Client *c, WebKitWebView *rv);
static void showview(WebKitWebView *v, Client *c);
static void newwindow(Client *c, const Arg *arg, gboolean noembed);
static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d);
t@@ -775,12 +776,10 @@ navigate(Client *c, const Arg *arg)
}
Client *
-newclient(void)
+newclient(Client *rc)
{
Client *c;
- WebKitWebSettings *settings;
gdouble dpi;
- char *ua;
if (!(c = calloc(1, sizeof(Client))))
die("Cannot malloc!\n");
t@@ -788,94 +787,111 @@ newclient(void)
c->title = NULL;
c->progress = 100;
+ c->next = clients;
+ clients = c;
+
+ c->view = newview(c, rc ? rc->view : NULL);
+
+ return c;
+}
+
+WebKitWebView *
+newview(Client *c, WebKitWebView *rv)
+{
+ WebKitWebView *v;
+ WebKitSettings *settings;
+ char *ua;
+
/* Webview */
- c->view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ if (rv) {
+ v = WEBKIT_WEB_VIEW(
+ webkit_web_view_new_with_related_view(rv));
+ } else {
+ v = WEBKIT_WEB_VIEW(webkit_web_view_new());
+
+ settings = webkit_web_view_get_settings(v);
+ if (!(ua = getenv("SURF_USERAGENT")))
+ ua = useragent;
+ g_object_set(G_OBJECT(settings), "user-agent", ua, NULL);
+ g_object_set(G_OBJECT(settings),
+ "auto-load-images", loadimages, NULL);
+ g_object_set(G_OBJECT(settings),
+ "enable-plugins", enableplugins, NULL);
+ g_object_set(G_OBJECT(settings),
+ "enable-scripts", enablescripts, NULL);
+ g_object_set(G_OBJECT(settings),
+ "enable-spatial-navigation", enablespatialbrowsin…
+ g_object_set(G_OBJECT(settings),
+ "enable-developer-extras", enableinspector, NULL);
+ g_object_set(G_OBJECT(settings),
+ "enable-default-context-menu", kioskmode ^ 1, NUL…
+ g_object_set(G_OBJECT(settings),
+ "default-font-size", defaultfontsize, NULL);
+ g_object_set(G_OBJECT(settings),
+ "resizable-text-areas", 1, NULL);
+ if (enablestyle)
+ setstyle(c, getstyle("about:blank"));
+
+ if (enableinspector) {
+ c->inspector = webkit_web_view_get_inspector(v);
+ g_signal_connect(G_OBJECT(c->inspector), "inspect-web-…
+ G_CALLBACK(inspector_new), c);
+ g_signal_connect(G_OBJECT(c->inspector), "show-window",
+ G_CALLBACK(inspector_show), c);
+ g_signal_connect(G_OBJECT(c->inspector), "close-window…
+ G_CALLBACK(inspector_close), c);
+ g_signal_connect(G_OBJECT(c->inspector), "finished",
+ G_CALLBACK(inspector_finished), c);
+ c->isinspecting = false;
+ }
+ }
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"notify::title",
G_CALLBACK(titlechange), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"hovering-over-link",
G_CALLBACK(linkhover), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"geolocation-policy-decision-requested",
G_CALLBACK(geopolicyrequested), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"create-web-view",
G_CALLBACK(createwindow), c);
g_signal_connect(G_OBJECT(v), "ready-to-show",
G_CALLBACK(showview), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"new-window-policy-decision-requested",
G_CALLBACK(decidewindow), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"mime-type-policy-decision-requested",
G_CALLBACK(decidedownload), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"window-object-cleared",
G_CALLBACK(windowobjectcleared), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"notify::load-status",
G_CALLBACK(loadstatuschange), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"notify::progress",
G_CALLBACK(progresschange), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"download-requested",
G_CALLBACK(initdownload), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"button-release-event",
G_CALLBACK(buttonrelease), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"context-menu",
G_CALLBACK(contextmenu), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"resource-request-starting",
G_CALLBACK(beforerequest), c);
- g_signal_connect(G_OBJECT(c->view),
+ g_signal_connect(G_OBJECT(v),
"should-show-delete-interface-for-element",
G_CALLBACK(deletion_interface), c);
- settings = webkit_web_view_get_settings(c->view);
- if (!(ua = getenv("SURF_USERAGENT")))
- ua = useragent;
- g_object_set(G_OBJECT(settings), "user-agent", ua, NULL);
- g_object_set(G_OBJECT(settings),
- "auto-load-images", loadimages, NULL);
- g_object_set(G_OBJECT(settings),
- "enable-plugins", enableplugins, NULL);
- g_object_set(G_OBJECT(settings),
- "enable-scripts", enablescripts, NULL);
- g_object_set(G_OBJECT(settings),
- "enable-spatial-navigation", enablespatialbrowsing, NULL);
- g_object_set(G_OBJECT(settings),
- "enable-developer-extras", enableinspector, NULL);
- g_object_set(G_OBJECT(settings),
- "enable-default-context-menu", kioskmode ^ 1, NULL);
- g_object_set(G_OBJECT(settings),
- "default-font-size", defaultfontsize, NULL);
- g_object_set(G_OBJECT(settings),
- "resizable-text-areas", 1, NULL);
- if (enablestyle)
- setstyle(c, getstyle("about:blank"));
-
- if (enableinspector) {
- c->inspector = webkit_web_view_get_inspector(c->view);
- g_signal_connect(G_OBJECT(c->inspector), "inspect-web-view",
- G_CALLBACK(inspector_new), c);
- g_signal_connect(G_OBJECT(c->inspector), "show-window",
- G_CALLBACK(inspector_show), c);
- g_signal_connect(G_OBJECT(c->inspector), "close-window",
- G_CALLBACK(inspector_close), c);
- g_signal_connect(G_OBJECT(c->inspector), "finished",
- G_CALLBACK(inspector_finished), c);
- c->isinspecting = false;
- }
-
- c->next = clients;
- clients = c;
-
- return c;
+ return v;
}
void
t@@ -1589,7 +1605,8 @@ main(int argc, char *argv[])
arg.v = argv[0];
setup();
- c = newclient();
+ c = newclient(NULL);
+ showview(NULL, c);
if (arg.v)
loaduri(clients, &arg);
else
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.