void cmd_set_zoom_type () { if(uzbl.behave.zoom_type) webkit_web_view_set_full_content_zoom (uzbl.gui.web_view, TRUE); else webkit_web_view_set_full_content_zoom (uzbl.gui.web_view, FALSE); }
void toggle_zoom_type (WebKitWebView* page, GArray *argv, GString *result) { (void)argv; (void)result; webkit_web_view_set_full_content_zoom (page, !webkit_web_view_get_full_content_zoom (page)); }
Win* win_create(void) { Win *w; GdkGeometry g; GtkPolicyType h, v; w = emalloc(sizeof(Win)); w->win = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)); w->scroll = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL)); w->web = WEBKIT_WEB_VIEW(webkit_web_view_new()); w->ignore = w->zoom = FALSE; g.min_width = g.min_height = 1; data.wins = g_list_append(data.wins, w); webkit_web_view_set_full_content_zoom(w->web, TRUE); webkit_web_view_set_zoom_level(w->web, ZOOM); gtk_window_set_geometry_hints(w->win, NULL, &g, GDK_HINT_MIN_SIZE); gtk_window_set_default_size(w->win, WIDTH, HEIGHT); gtk_container_add(GTK_CONTAINER(w->scroll), GTK_WIDGET(w->web)); gtk_container_add(GTK_CONTAINER(w->win), GTK_WIDGET(w->scroll)); gtk_widget_show_all(GTK_WIDGET(w->win)); gdk_window_set_events(GWIN(w), GDK_PROPERTY_CHANGE_MASK); gdk_window_add_filter(GWIN(w), atom_propertynotify, w); event_init(w); h = SHOW_HSCROLL ? GTK_POLICY_AUTOMATIC : GTK_POLICY_NEVER; v = SHOW_VSCROLL ? GTK_POLICY_AUTOMATIC : GTK_POLICY_NEVER; gtk_scrolled_window_set_policy(w->scroll, h, v); gtk_widget_grab_focus(GTK_WIDGET(w->web)); return w; }
static void zoomOut(gboolean fullContentsZoom) { WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); if (!view) return; webkit_web_view_set_full_content_zoom(view, fullContentsZoom); gfloat currentZoom = webkit_web_view_get_zoom_level(view); webkit_web_view_set_zoom_level(view, currentZoom / zoomMultiplierRatio); }
static GtkScrolledWindow* create_browser () { scrolled_window = (GtkScrolledWindow*)gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); g_web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ()); webkit_web_view_set_transparent(g_web_view, true); gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (g_web_view)); webkit_web_view_set_full_content_zoom(g_web_view, true); g_signal_connect (g_web_view, "notify::load-status", G_CALLBACK (notify_load_status_cb), g_web_view); g_signal_connect (g_web_view, "hovering-over-link", G_CALLBACK (link_hover_cb), g_web_view); g_signal_connect (g_web_view, "focus-out-event", G_CALLBACK (focus_out_cb), g_web_view); g_signal_connect (g_web_view, "document-load-finished", G_CALLBACK (document_load_finished_cb), g_web_view); g_signal_connect (g_web_view, "window_object_cleared", G_CALLBACK (window_object_cleared_cb), g_web_view); return scrolled_window; }
void wxWebViewWebKit::SetZoomType(wxWebViewZoomType type) { webkit_web_view_set_full_content_zoom(WEBKIT_WEB_VIEW(web_view), (type == wxWEB_VIEW_ZOOM_TYPE_LAYOUT ? TRUE : FALSE)); }
Client * newclient(void) { int i; Client *c; WebKitWebSettings *settings; GdkGeometry hints = { 1, 1 }; char *uri, *ua; if(!(c = calloc(1, sizeof(Client)))) die("Cannot malloc!\n"); /* Window */ if(embed) { c->win = gtk_plug_new(embed); } else { c->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); /* TA: 20091214: Despite what the GNOME docs say, the ICCCM * is always correct, so we should still call this function. * But when doing so, we *must* differentiate between a * WM_CLASS and a resource on the window. By convention, the * window class (WM_CLASS) is capped, while the resource is in * lowercase. Both these values come as a pair. */ gtk_window_set_wmclass(GTK_WINDOW(c->win), "surf", "surf"); /* TA: 20091214: And set the role here as well -- so that * sessions can pick this up. */ gtk_window_set_role(GTK_WINDOW(c->win), "Surf"); } gtk_window_set_default_size(GTK_WINDOW(c->win), 800, 600); g_signal_connect(G_OBJECT(c->win), "destroy", G_CALLBACK(destroywin), c); g_signal_connect(G_OBJECT(c->win), "key-press-event", G_CALLBACK(keypress), c); g_signal_connect(G_OBJECT(c->win), "size-allocate", G_CALLBACK(resize), c); if(!(c->items = calloc(1, sizeof(GtkWidget *) * LENGTH(items)))) die("Cannot malloc!\n"); /* contextmenu */ for(i = 0; i < LENGTH(items); i++) { c->items[i] = gtk_menu_item_new_with_label(items[i].label); g_signal_connect(G_OBJECT(c->items[i]), "activate", G_CALLBACK(itemclick), c); } /* VBox */ c->vbox = gtk_vbox_new(FALSE, 0); /* Scrolled Window */ c->scroll = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll), GTK_POLICY_NEVER, GTK_POLICY_NEVER); /* Webview */ c->view = WEBKIT_WEB_VIEW(webkit_web_view_new()); g_signal_connect(G_OBJECT(c->view), "title-changed", G_CALLBACK(titlechange), c); g_signal_connect(G_OBJECT(c->view), "load-progress-changed", G_CALLBACK(progresschange), c); g_signal_connect(G_OBJECT(c->view), "load-committed", G_CALLBACK(loadcommit), c); g_signal_connect(G_OBJECT(c->view), "load-started", G_CALLBACK(loadstart), c); g_signal_connect(G_OBJECT(c->view), "hovering-over-link", G_CALLBACK(linkhover), 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), "download-requested", G_CALLBACK(initdownload), c); g_signal_connect(G_OBJECT(c->view), "window-object-cleared", G_CALLBACK(windowobjectcleared), c); g_signal_connect(G_OBJECT(c->view), "populate-popup", G_CALLBACK(context), c); /* Indicator */ c->indicator = gtk_drawing_area_new(); gtk_widget_set_size_request(c->indicator, 0, 2); g_signal_connect (G_OBJECT (c->indicator), "expose_event", G_CALLBACK (exposeindicator), c); /* Arranging */ gtk_container_add(GTK_CONTAINER(c->scroll), GTK_WIDGET(c->view)); gtk_container_add(GTK_CONTAINER(c->win), c->vbox); gtk_container_add(GTK_CONTAINER(c->vbox), c->scroll); gtk_container_add(GTK_CONTAINER(c->vbox), c->indicator); /* Setup */ gtk_box_set_child_packing(GTK_BOX(c->vbox), c->indicator, FALSE, FALSE, 0, GTK_PACK_START); 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->vbox); gtk_widget_show(c->indicator); 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); 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); uri = g_strconcat("file://", stylefile, NULL); g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL); g_free(uri); setatom(c, findprop, ""); c->download = NULL; c->title = NULL; c->next = clients; clients = c; if(showxid) { gdk_display_sync(gtk_widget_get_display(c->win)); printf("%u\n", (guint)GDK_WINDOW_XID(GTK_WIDGET(c->win)->window)); fflush(NULL); } return c; }
int main(int argc, char* argv[]) { // Initialize GTK+ gtk_init(&argc, &argv); gdk_threads_init(); GtkWidget *main_window; GdkWindow *gdk_window; createDrawContext(&main_window, &gdk_window); // Create a browser instance WebKitWebView *webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); // make sure the background of the main window is black plz GdkColor blaaack; gdk_color_parse("#000000", &blaaack); gtk_widget_modify_bg(main_window, GTK_STATE_NORMAL, &blaaack); // Put the browser area into the main window gtk_container_add(GTK_CONTAINER(main_window), GTK_WIDGET(webView)); // necessary for ensuring positioning relative to xscreensaver-demo is right gtk_widget_show_all(main_window); // Set up callbacks so that if either the main window or the browser instance is // closed, the program will exit g_signal_connect(main_window, "destroy", G_CALLBACK(destroyWindow), NULL); g_signal_connect(main_window, "delete-event", G_CALLBACK(destroyWindow), NULL); // transparent background so we dont have any white flashes webkit_web_view_set_transparent(webView, true); int height; int width; gdk_window_get_geometry(gdk_window, NULL, NULL, &width, &height, NULL); if (height < 480 && width < 640) { // make the tiny preview windows look reasonable webkit_web_view_set_full_content_zoom(webView, true); webkit_web_view_set_zoom_level(webView, 0.4); } // set up some webkit settings WebKitWebSettings *settings = webkit_web_view_get_settings(webView); g_object_set (G_OBJECT(settings), "enable-webgl", true, NULL); // accelerated-compositing chokes on my machine, but maybe its my shitty nvidia drivers g_object_set (G_OBJECT(settings), "enable-accelerated-compositing", false, NULL); // select tag and format url wordexp_t exp_result; wordexp(CONFIG_PATH, &exp_result, 0); printf("Loading tags file at %s\n", exp_result.we_wordv[0]); char* tags_path = exp_result.we_wordv[0]; char url[MAX_URL_LENGTH]; char tags[MAX_NUMBER_TAGS][MAX_TAG_LENGTH]; int tags_length = 0; FILE* tags_file; if (tags_path == NULL || (tags_file = fopen(tags_path, "r")) == NULL) { printf("No tag file found. using defaults\n"); int default_tags_length = sizeof(DEFAULT_TAGS) / sizeof(char*); for (int i = 0; i < default_tags_length; ++i) { printf("%d\n", i); strcpy(tags[i], DEFAULT_TAGS[i]); } tags_length = default_tags_length; } else { int i = 0; printf("Iterating through file\n"); while (i < MAX_NUMBER_TAGS && fgets(tags[i], sizeof(tags[0]), tags_file)) { tags[i][strlen(tags[i]) - 1] = '\0'; printf("Got %s!\n", tags[i]); ++i; } tags_length = i; } printf("%d tags found. selecting one.\n", tags_length); srand(time(0)); int index = rand() % tags_length; printf("%d is our index...\n", index); printf("%s selected!\n", tags[index]); sprintf(url, URL_FORMAT, tags[index]); printf("Loading %s\n", url); webkit_web_view_load_uri(webView, url); // Make sure that when the browser area becomes visible, it will get mouse // and keyboard events gtk_widget_grab_focus(GTK_WIDGET(webView)); // hit our callback whenever load-status changes g_signal_connect(G_OBJECT(webView), "notify::load-status", G_CALLBACK(load_status_cb), &url); g_signal_connect(G_OBJECT(webView), "load-error", G_CALLBACK(load_error_cb), &url); // Run the main GTK+ event loop gtk_main(); return 0; }
Client * newclient(void) { Client *c; WebKitWebSettings *settings; gchar *uri; if(!(c = calloc(1, sizeof(Client)))) die("Cannot malloc!\n"); /* Window */ if(embed) { c->win = gtk_plug_new(embed); } else { c->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_wmclass(GTK_WINDOW(c->win), "surf", "surf"); } gtk_window_set_default_size(GTK_WINDOW(c->win), 800, 600); g_signal_connect(G_OBJECT(c->win), "destroy", G_CALLBACK(destroywin), c); g_signal_connect(G_OBJECT(c->win), "key-press-event", G_CALLBACK(keypress), c); /* VBox */ c->vbox = gtk_vbox_new(FALSE, 0); /* scrolled window */ c->scroll = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll), GTK_POLICY_NEVER, GTK_POLICY_NEVER); /* webview */ c->view = WEBKIT_WEB_VIEW(webkit_web_view_new()); g_signal_connect(G_OBJECT(c->view), "title-changed", G_CALLBACK(titlechange), c); g_signal_connect(G_OBJECT(c->view), "load-progress-changed", G_CALLBACK(progresschange), c); g_signal_connect(G_OBJECT(c->view), "load-finished", G_CALLBACK(loadfinished), c); g_signal_connect(G_OBJECT(c->view), "load-committed", G_CALLBACK(loadcommit), c); g_signal_connect(G_OBJECT(c->view), "load-started", G_CALLBACK(loadstart), c); g_signal_connect(G_OBJECT(c->view), "hovering-over-link", G_CALLBACK(linkhover), c); g_signal_connect(G_OBJECT(c->view), "create-web-view", G_CALLBACK(newwindow), c); g_signal_connect(G_OBJECT(c->view), "download-requested", G_CALLBACK(initdownload), c); g_signal_connect(G_OBJECT(c->view), "window-object-cleared", G_CALLBACK(windowobjectcleared), c); g_signal_connect_after(session, "request-started", G_CALLBACK(request), c); /* urlbar */ c->urlbar = gtk_entry_new(); gtk_entry_set_has_frame(GTK_ENTRY(c->urlbar), FALSE); g_signal_connect(G_OBJECT(c->urlbar), "focus-out-event", G_CALLBACK(unfocusbar), c); /* searchbar */ c->searchbar = gtk_entry_new(); gtk_entry_set_has_frame(GTK_ENTRY(c->searchbar), FALSE); g_signal_connect(G_OBJECT(c->searchbar), "focus-out-event", G_CALLBACK(unfocusbar), c); /* indicator */ c->indicator = gtk_drawing_area_new(); gtk_widget_set_size_request(c->indicator, 0, 2); g_signal_connect (G_OBJECT (c->indicator), "expose_event", G_CALLBACK (exposeindicator), c); /* Arranging */ gtk_container_add(GTK_CONTAINER(c->scroll), GTK_WIDGET(c->view)); gtk_container_add(GTK_CONTAINER(c->win), c->vbox); gtk_container_add(GTK_CONTAINER(c->vbox), c->scroll); gtk_container_add(GTK_CONTAINER(c->vbox), c->searchbar); gtk_container_add(GTK_CONTAINER(c->vbox), c->urlbar); gtk_container_add(GTK_CONTAINER(c->vbox), c->indicator); /* Setup */ gtk_box_set_child_packing(GTK_BOX(c->vbox), c->urlbar, FALSE, FALSE, 0, GTK_PACK_START); gtk_box_set_child_packing(GTK_BOX(c->vbox), c->searchbar, FALSE, FALSE, 0, GTK_PACK_START); gtk_box_set_child_packing(GTK_BOX(c->vbox), c->indicator, FALSE, FALSE, 0, GTK_PACK_START); 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_hide_all(c->searchbar); gtk_widget_hide_all(c->urlbar); gtk_widget_show(c->vbox); gtk_widget_show(c->indicator); gtk_widget_show(c->scroll); gtk_widget_show(GTK_WIDGET(c->view)); gtk_widget_show(c->win); 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); settings = webkit_web_view_get_settings(c->view); g_object_set(G_OBJECT(settings), "user-agent", "surf", NULL); uri = g_strconcat("file://", stylefile, NULL); g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL); g_free(uri); c->download = NULL; c->title = NULL; c->next = clients; clients = c; if(showxid) { gdk_display_sync(gtk_widget_get_display(c->win)); printf("%u\n", (guint)GDK_WINDOW_XID(GTK_WIDGET(c->win)->window)); fflush(NULL); } return c; }
static void activateEntry(GtkWidget* entry, gpointer* gdata) { WebKitWebView* webView = g_object_get_data(G_OBJECT(entry), "webView"); const gchar* entry_str = gtk_entry_get_text(GTK_ENTRY(entry)); WebKitWebSettings* settings = webkit_web_view_get_settings( WEBKIT_WEB_VIEW(webView)); gfloat current_zoom = webkit_web_view_get_zoom_level(webView); gboolean fz = webkit_web_view_get_full_content_zoom(webView); if (entry_str[0] != 0) { if (strncmp(entry_str, "?", 1) == 0) { gchar* s = g_strdup(entry_str); s++; gtk_entry_set_text(GTK_ENTRY(entry), g_strjoin(NULL, search_str, s, NULL)); if ((startpage == TRUE) && (fz == TRUE) && (current_zoom != 1.0)) { fz = FALSE; webkit_web_view_set_full_content_zoom(webView, fz); GtkWidget* window = g_object_get_data(G_OBJECT(entry), "window"); setZbutton(window, fz); } } else if (strncmp(entry_str, "=", 1) == 0) { gchar* s = g_strdup(entry_str); s++; searchText(webView, s); return; } else if (strncmp(entry_str, "#", 1) == 0) { int r = 0; r = fork(); if (r == 0) { execl("/usr/local/bin/kwebhelper.py", "kwebhelper.py", "cmd", entry_str, NULL); } return; } else if (strncmp(entry_str, "!", 1) == 0) { gchar* s = g_strdup(entry_str); s++; if (strlen(s) > 1) { g_object_set(G_OBJECT(settings), "spell-checking-languages", s, NULL); gtk_entry_set_text(GTK_ENTRY(entry), g_strjoin(NULL, "Spell checking language has been set to: ", s, NULL)); } return; } else if (strncmp(entry_str, "&", 1) == 0) { gchar* s = g_strdup(entry_str); s++; g_object_set(G_OBJECT(settings), "user-stylesheet-uri", s, NULL); gtk_entry_set_text(GTK_ENTRY(entry), g_strjoin(NULL, "User style sheet: ", s, NULL)); return; } else if (strncmp(entry_str, "$", 1) == 0) { gchar* s = g_strdup(entry_str); s++; g_object_set(G_OBJECT(settings), "user-agent", s, NULL); const gchar* t = webkit_web_settings_get_user_agent(settings); gtk_entry_set_text(GTK_ENTRY(entry), g_strjoin(NULL, "User agent: ", t, NULL)); return; } else if (strcmp(entry_str, ":c") == 0) { gtk_entry_set_text(GTK_ENTRY(entry), g_strjoin(NULL, "file://", homedir, "/kweb_about_c.html", NULL)); } else if (strncmp(entry_str, ":", 1) == 0) { gchar* s = g_strdup(entry_str); s++; gchar* fname = g_strjoin(NULL, "/usr/local/share/kweb/kweb_about_", s, ".html", NULL); struct stat stbc; if (stat(fname, &stbc) == 0) { gtk_entry_set_text(GTK_ENTRY(entry), g_strjoin(NULL, "file://", fname, NULL)); } else { gtk_entry_set_text(GTK_ENTRY(entry), g_strjoin(NULL, "file:///usr/local/share/kweb/kweb_about_e.html", NULL)); } } else if (strstr(entry_str, "://") == NULL) { if (strncmp(entry_str, "/", 1) == 0) { gtk_entry_set_text(GTK_ENTRY(entry), g_strjoin(NULL, "file://", entry_str, NULL)); } else { gtk_entry_set_text(GTK_ENTRY(entry), g_strjoin(NULL, "http://", entry_str, NULL)); } } const gchar* uri = gtk_entry_get_text(GTK_ENTRY(entry)); webkit_web_view_stop_loading(webView); webkit_web_view_load_uri(webView, uri); gtk_widget_grab_focus(GTK_WIDGET(webView)); } }
static void toggleZoom(GtkWidget* item, WebKitWebView* webView) { gboolean fz; fz = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(item)); webkit_web_view_set_full_content_zoom(webView, fz); }