- if (!kioskmode)
- addaccelgroup(c);
-
- /* Pane */
- c->pane = gtk_vpaned_new();
-
- /* VBox */
- c->vbox = gtk_vbox_new(FALSE, 0);
- gtk_paned_pack1(GTK_PANED(c->pane), c->vbox, TRUE, TRUE);
-
- /* Webview */
- c->view = WEBKIT_WEB_VIEW(webkit_web_view_new());
-
- g_signal_connect(G_OBJECT(c->view),
- "notify::title",
- G_CALLBACK(titlechange), c);
- g_signal_connect(G_OBJECT(c->view),
- "hovering-over-link",
- G_CALLBACK(linkhover), c);
- g_signal_connect(G_OBJECT(c->view),
- "geolocation-policy-decision-requested",
- G_CALLBACK(geopolicyrequested), c);
- g_signal_connect(G_OBJECT(c->view),
- "create-web-view",
- G_CALLBACK(createwindow), c);
- g_signal_connect(G_OBJECT(c->view),
- "new-window-policy-decision-requested",
- G_CALLBACK(decidewindow), c);
- g_signal_connect(G_OBJECT(c->view),
- "mime-type-policy-decision-requested",
- G_CALLBACK(decidedownload), c);
- g_signal_connect(G_OBJECT(c->view),
- "window-object-cleared",
- G_CALLBACK(windowobjectcleared), c);
- g_signal_connect(G_OBJECT(c->view),
- "notify::load-status",
- G_CALLBACK(loadstatuschange), c);
- g_signal_connect(G_OBJECT(c->view),
- "notify::progress",
- G_CALLBACK(progresschange), c);
- g_signal_connect(G_OBJECT(c->view),
- "download-requested",
- G_CALLBACK(initdownload), c);
- g_signal_connect(G_OBJECT(c->view),
- "button-release-event",
- G_CALLBACK(buttonrelease), c);
- g_signal_connect(G_OBJECT(c->view),
- "context-menu",
- G_CALLBACK(contextmenu), c);
- g_signal_connect(G_OBJECT(c->view),
- "resource-request-starting",
- G_CALLBACK(beforerequest), c);
- g_signal_connect(G_OBJECT(c->view),
- "should-show-delete-interface-for-element",
- G_CALLBACK(deletion_interface), c);
-
- /* Scrolled Window */
- c->scroll = gtk_scrolled_window_new(NULL, NULL);
-
- frame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(c->view));
- g_signal_connect(G_OBJECT(frame), "scrollbars-policy-changed",
- G_CALLBACK(gtk_true), NULL);
-
- if (!enablescrollbars) {
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll),
- GTK_POLICY_NEVER,
- GTK_POLICY_NEVER);
- } else {
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- }
-
- /* Arranging */
- gtk_container_add(GTK_CONTAINER(c->scroll), GTK_WIDGET(c->view));
- gtk_container_add(GTK_CONTAINER(c->win), c->pane);
- gtk_container_add(GTK_CONTAINER(c->vbox), c->scroll);
-
- /* Setup */
- gtk_box_set_child_packing(GTK_BOX(c->vbox), c->scroll, TRUE, TRUE, 0,
- GTK_PACK_START);
- gtk_widget_grab_focus(GTK_WIDGET(c->view));
- gtk_widget_show(c->pane);
- gtk_widget_show(c->vbox);
- gtk_widget_show(c->scroll);
- gtk_widget_show(GTK_WIDGET(c->view));
- gtk_widget_show(c->win);
- gtk_window_set_geometry_hints(GTK_WINDOW(c->win), NULL, &hints,
- GDK_HINT_MIN_SIZE);
- gdk_window_set_events(GTK_WIDGET(c->win)->window, GDK_ALL_EVENTS_MASK);
- gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c);
- webkit_web_view_set_full_content_zoom(c->view, TRUE);
-
- runscript(frame);
-
- 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"));
-
- /*
- * While stupid, CSS specifies that a pixel represents 1/96 of an inch.
- * This ensures websites are not unusably small with a high DPI screen.
- * It is equivalent to firefox's "layout.css.devPixelsPerPx" setting.
- */
- if (zoomto96dpi) {
- screen = gdk_window_get_screen(GTK_WIDGET(c->win)->window);
- dpi = gdk_screen_get_resolution(screen);
- if (dpi != -1) {
- g_object_set(G_OBJECT(settings),
- "enforce-96-dpi", true, NULL);
- webkit_web_view_set_zoom_level(c->view, dpi/96);
- }
- }
- /* This might conflict with _zoomto96dpi_. */
- if (zoomlevel != 1.0)
- webkit_web_view_set_zoom_level(c->view, zoomlevel);
-
- if (enableinspector) {