diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/callbacks.c | 55 | ||||
-rw-r--r-- | src/callbacks.h | 5 | ||||
-rw-r--r-- | src/cookie-jar.c | 2 | ||||
-rw-r--r-- | src/events.c | 91 | ||||
-rw-r--r-- | src/events.h | 8 | ||||
-rw-r--r-- | src/uzbl-core.c | 131 | ||||
-rw-r--r-- | src/uzbl-core.h | 5 |
7 files changed, 200 insertions, 97 deletions
diff --git a/src/callbacks.c b/src/callbacks.c index de814a3..14748c4 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -12,21 +12,17 @@ void set_proxy_url() { - SoupURI *suri; + const gchar *url = uzbl.net.proxy_url; + SoupSession *session = uzbl.net.soup_session; + SoupURI *soup_uri = NULL; - if (uzbl.net.proxy_url == NULL || *uzbl.net.proxy_url == ' ') { - soup_session_remove_feature_by_type(uzbl.net.soup_session, - (GType) SOUP_SESSION_PROXY_URI); - } - else { - suri = soup_uri_new(uzbl.net.proxy_url); - g_object_set(G_OBJECT(uzbl.net.soup_session), - SOUP_SESSION_PROXY_URI, - suri, NULL); - soup_uri_free(suri); - } + if (url != NULL || *url != 0 || *url != ' ') + soup_uri = soup_uri_new(url); - return; + g_object_set(G_OBJECT(session), SOUP_SESSION_PROXY_URI, soup_uri, NULL); + + if(soup_uri) + soup_uri_free(soup_uri); } @@ -348,16 +344,9 @@ cmd_javascript_windows() { void cmd_scrollbars_visibility() { - if(uzbl.gui.scrollbars_visible) { - uzbl.gui.bar_h = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (uzbl.gui.scrolled_win)); - uzbl.gui.bar_v = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (uzbl.gui.scrolled_win)); - } - else { - uzbl.gui.bar_v = gtk_range_get_adjustment (GTK_RANGE (uzbl.gui.scbar_v)); - uzbl.gui.bar_h = gtk_range_get_adjustment (GTK_RANGE (uzbl.gui.scbar_h)); - } + GtkPolicyType policy = uzbl.gui.scrollbars_visible ? GTK_POLICY_AUTOMATIC : GTK_POLICY_NEVER; - set_webview_scroll_adjustments(); + gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW (uzbl.gui.scrolled_win), policy, policy ); } /* requires webkit >=1.1.14 */ @@ -478,7 +467,7 @@ load_status_change_cb (WebKitWebView* web_view, GParamSpec param_spec) { } } -void +gboolean load_error_cb (WebKitWebView* page, WebKitWebFrame* frame, gchar *uri, gpointer web_err, gpointer ud) { (void) page; (void) frame; (void) ud; GError *err = web_err; @@ -488,6 +477,8 @@ load_error_cb (WebKitWebView* page, WebKitWebFrame* frame, gchar *uri, gpointer TYPE_INT, err->code, TYPE_STR, err->message, NULL); + + return FALSE; } void @@ -549,7 +540,7 @@ key_press_cb (GtkWidget* window, GdkEventKey* event) { (void) window; if(event->type == GDK_KEY_PRESS) - key_to_event(event->keyval, GDK_KEY_PRESS); + key_to_event(event->keyval, event->state, event->is_modifier, GDK_KEY_PRESS); return uzbl.behave.forward_keys ? FALSE : TRUE; } @@ -559,7 +550,7 @@ key_release_cb (GtkWidget* window, GdkEventKey* event) { (void) window; if(event->type == GDK_KEY_RELEASE) - key_to_event(event->keyval, GDK_KEY_RELEASE); + key_to_event(event->keyval, event->state, event->is_modifier, GDK_KEY_RELEASE); return uzbl.behave.forward_keys ? FALSE : TRUE; } @@ -826,6 +817,11 @@ download_cb(WebKitWebView *web_view, WebKitDownload *download, gpointer user_dat /* get the URI being downloaded */ const gchar *uri = webkit_download_get_uri(download); + /* get the destination path, if specified. + * this is only intended to be set when this function is trigger by an + * explicit download using uzbl's 'download' action. */ + const gchar *destination = user_data; + if (uzbl.state.verbose) printf("Download requested -> %s\n", uri); @@ -872,6 +868,9 @@ download_cb(WebKitWebView *web_view, WebKitDownload *download, gpointer user_dat gchar *total_size_s = g_strdup_printf("%d", total_size); g_array_append_val(a, total_size_s); + if(destination) + g_array_append_val(a, destination); + GString *result = g_string_new (""); run_parsed_command(c, a, result); @@ -1043,4 +1042,10 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c) { } } +gboolean +scrollbars_policy_cb(WebKitWebView *view) { + (void) view; + return TRUE; +} + /* vi: set et ts=4: */ diff --git a/src/callbacks.h b/src/callbacks.h index d34b9fa..20eaa92 100644 --- a/src/callbacks.h +++ b/src/callbacks.h @@ -157,7 +157,7 @@ progress_change_cb (WebKitWebView* web_view, GParamSpec param_spec); void load_status_change_cb (WebKitWebView* web_view, GParamSpec param_spec); -void +gboolean load_error_cb (WebKitWebView* page, WebKitWebFrame* frame, gchar *uri, gpointer web_err, gpointer ud); void @@ -222,3 +222,6 @@ scroll_vert_cb(GtkAdjustment *adjust, void *w); gboolean scroll_horiz_cb(GtkAdjustment *adjust, void *w); + +gboolean +scrollbars_policy_cb(WebKitWebView *view); diff --git a/src/cookie-jar.c b/src/cookie-jar.c index bc7d022..c2ccd62 100644 --- a/src/cookie-jar.c +++ b/src/cookie-jar.c @@ -43,7 +43,7 @@ changed(SoupCookieJar *jar, SoupCookie *old_cookie, SoupCookie *new_cookie) { gchar *expires = NULL; if(cookie->expires) - expires = g_strdup_printf ("%d", soup_date_to_time_t (cookie->expires)); + expires = g_strdup_printf ("%ld", (long)soup_date_to_time_t (cookie->expires)); send_event (new_cookie ? ADD_COOKIE : DELETE_COOKIE, NULL, TYPE_STR, cookie->domain, diff --git a/src/events.c b/src/events.c index 58dddfc..62d6414 100644 --- a/src/events.c +++ b/src/events.c @@ -23,6 +23,8 @@ const char *event_table[LAST_EVENT] = { "REQUEST_STARTING" , "KEY_PRESS" , "KEY_RELEASE" , + "MOD_PRESS" , + "MOD_RELEASE" , "COMMAND_EXECUTED" , "LINK_HOVER" , "TITLE_CHANGED" , @@ -158,11 +160,13 @@ vsend_event(int type, const gchar *custom_event, va_list vargs) { g_string_append_printf (event_message, "%d", va_arg (vargs, int)); break; case TYPE_STR: + /* a string that needs to be escaped */ g_string_append_c (event_message, '\''); append_escaped (event_message, va_arg (vargs, char*)); g_string_append_c (event_message, '\''); break; case TYPE_FORMATTEDSTR: + /* a string has already been escaped */ g_string_append (event_message, va_arg (vargs, char*)); break; case TYPE_NAME: @@ -200,31 +204,106 @@ send_event(int type, const gchar *custom_event, ...) { va_end (vargs); } +gchar * +get_modifier_mask(guint state) { + GString *modifiers = g_string_new(""); + + if(state & GDK_MODIFIER_MASK) { + if(state & GDK_SHIFT_MASK) + g_string_append(modifiers, "Shift|"); + if(state & GDK_LOCK_MASK) + g_string_append(modifiers, "ScrollLock|"); + if(state & GDK_CONTROL_MASK) + g_string_append(modifiers, "Ctrl|"); + if(state & GDK_MOD1_MASK) + g_string_append(modifiers,"Mod1|"); + if(state & GDK_MOD2_MASK) + g_string_append(modifiers,"Mod2|"); + if(state & GDK_MOD3_MASK) + g_string_append(modifiers,"Mod3|"); + if(state & GDK_MOD4_MASK) + g_string_append(modifiers,"Mod4|"); + if(state & GDK_MOD5_MASK) + g_string_append(modifiers,"Mod5|"); + if(state & GDK_BUTTON1_MASK) + g_string_append(modifiers,"Button1|"); + if(state & GDK_BUTTON2_MASK) + g_string_append(modifiers,"Button2|"); + if(state & GDK_BUTTON3_MASK) + g_string_append(modifiers,"Button3|"); + if(state & GDK_BUTTON4_MASK) + g_string_append(modifiers,"Button4|"); + if(state & GDK_BUTTON5_MASK) + g_string_append(modifiers,"Button5|"); + + if(modifiers->str[modifiers->len-1] == '|') + g_string_truncate(modifiers, modifiers->len-1); + } + + return g_string_free(modifiers, FALSE); +} + +guint key_to_modifier(guint keyval) { + /* FIXME + * Should really use XGetModifierMapping and/or Xkb to get actual mod keys + */ + switch(keyval) { + case GDK_KEY_Shift_L: + case GDK_KEY_Shift_R: + return GDK_SHIFT_MASK; + case GDK_KEY_Control_L: + case GDK_KEY_Control_R: + return GDK_CONTROL_MASK; + case GDK_KEY_Alt_L: + case GDK_KEY_Alt_R: + return GDK_MOD1_MASK; + case GDK_KEY_Super_L: + case GDK_KEY_Super_R: + return GDK_MOD4_MASK; + case GDK_KEY_ISO_Level3_Shift: + return GDK_MOD5_MASK; + default: + return 0; + } +} + /* Transform gdk key events to our own events */ void -key_to_event(guint keyval, gint mode) { +key_to_event(guint keyval, guint state, guint is_modifier, gint mode) { gchar ucs[7]; gint ulen; gchar *keyname; guint32 ukval = gdk_keyval_to_unicode(keyval); + gchar *modifiers = NULL; + guint mod = key_to_modifier (keyval); + /* Get modifier state including this key press/release */ + modifiers = get_modifier_mask(mode == GDK_KEY_PRESS ? state | mod : state & ~mod); + + if(is_modifier && mod) { + send_event(mode == GDK_KEY_PRESS ? MOD_PRESS : MOD_RELEASE, NULL, + TYPE_STR, modifiers, + TYPE_NAME, get_modifier_mask (mod), + NULL); + } /* check for printable unicode char */ /* TODO: Pass the keyvals through a GtkIMContext so that * we also get combining chars right */ - if(g_unichar_isgraph(ukval)) { + else if(g_unichar_isgraph(ukval)) { ulen = g_unichar_to_utf8(ukval, ucs); ucs[ulen] = 0; - send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, - NULL, TYPE_FORMATTEDSTR, ucs, NULL); + send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, NULL, + TYPE_STR, modifiers, TYPE_STR, ucs, NULL); } /* send keysym for non-printable chars */ else if((keyname = gdk_keyval_name(keyval))){ - send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, - NULL, TYPE_NAME, keyname , NULL); + send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, NULL, + TYPE_STR, modifiers, TYPE_NAME, keyname, NULL); } + g_free(modifiers); } /* vi: set et ts=4: */ diff --git a/src/events.h b/src/events.h index bd519a6..0c40206 100644 --- a/src/events.h +++ b/src/events.h @@ -13,7 +13,8 @@ enum event_type { LOAD_START, LOAD_COMMIT, LOAD_FINISH, LOAD_ERROR, REQUEST_STARTING, - KEY_PRESS, KEY_RELEASE, COMMAND_EXECUTED, + KEY_PRESS, KEY_RELEASE, MOD_PRESS, MOD_RELEASE, + COMMAND_EXECUTED, LINK_HOVER, TITLE_CHANGED, GEOMETRY_CHANGED, WEBINSPECTOR, NEW_WINDOW, SELECTION_CHANGED, VARIABLE_SET, FIFO_SET, SOCKET_SET, @@ -41,7 +42,10 @@ vsend_event(int type, const gchar *custom_event, va_list vargs); void send_event(int type, const gchar *custom_event, ...) G_GNUC_NULL_TERMINATED; +gchar * +get_modifier_mask(guint state); + void -key_to_event(guint keyval, gint mode); +key_to_event(guint keyval, guint state, guint is_modifier, int mode); #endif diff --git a/src/uzbl-core.c b/src/uzbl-core.c index e498762..046f596 100644 --- a/src/uzbl-core.c +++ b/src/uzbl-core.c @@ -47,12 +47,15 @@ GOptionEntry entries[] = { "Uri to load at startup (equivalent to 'uzbl <uri>' or 'set uri = URI' after uzbl has launched)", "URI" }, { "verbose", 'v', 0, G_OPTION_ARG_NONE, &uzbl.state.verbose, "Whether to print all messages or just errors.", NULL }, - { "name", 'n', 0, G_OPTION_ARG_STRING, &uzbl.state.instance_name, + { "named", 'n', 0, G_OPTION_ARG_STRING, &uzbl.state.instance_name, "Name of the current instance (defaults to Xorg window id or random for GtkSocket mode)", "NAME" }, { "config", 'c', 0, G_OPTION_ARG_STRING, &uzbl.state.config_file, "Path to config file or '-' for stdin", "FILE" }, + /* TODO: explain the difference between these two options */ { "socket", 's', 0, G_OPTION_ARG_INT, &uzbl.state.socket_id, - "Xembed Socket ID", "SOCKET" }, + "Xembed socket ID, this window should embed itself", "SOCKET" }, + { "embed", 'e', 0, G_OPTION_ARG_NONE, &uzbl.state.embed, + "Whether this window should expect to be embedded", NULL }, { "connect-socket", 0, 0, G_OPTION_ARG_STRING_ARRAY, &uzbl.state.connect_socket_names, "Connect to server socket for event managing", "CSOCKET" }, { "print-events", 'p', 0, G_OPTION_ARG_NONE, &uzbl.state.events_stdout, @@ -134,7 +137,10 @@ const struct var_name_to_ptr_t { { "current_encoding", PTR_V_STR(uzbl.behave.current_encoding, 1, set_current_encoding)}, { "enforce_96_dpi", PTR_V_INT(uzbl.behave.enforce_96dpi, 1, cmd_enforce_96dpi)}, { "caret_browsing", PTR_V_INT(uzbl.behave.caret_browsing, 1, cmd_caret_browsing)}, + +#if !GTK_CHECK_VERSION(3,0,0) { "scrollbars_visible", PTR_V_INT(uzbl.gui.scrollbars_visible, 1, cmd_scrollbars_visibility)}, +#endif /* constants (not dumpable or writeable) */ { "WEBKIT_MAJOR", PTR_C_INT(uzbl.info.webkit_major, NULL)}, @@ -464,30 +470,25 @@ scroll_cmd(WebKitWebView* page, GArray *argv, GString *result) { (void) page; (void) result; gchar *direction = g_array_index(argv, gchar*, 0); gchar *argv1 = g_array_index(argv, gchar*, 1); + GtkAdjustment *bar = NULL; if (g_strcmp0(direction, "horizontal") == 0) - { - if (g_strcmp0(argv1, "begin") == 0) - gtk_adjustment_set_value(uzbl.gui.bar_h, gtk_adjustment_get_lower(uzbl.gui.bar_h)); - else if (g_strcmp0(argv1, "end") == 0) - gtk_adjustment_set_value (uzbl.gui.bar_h, gtk_adjustment_get_upper(uzbl.gui.bar_h) - - gtk_adjustment_get_page_size(uzbl.gui.bar_h)); - else - scroll(uzbl.gui.bar_h, argv1); - } + bar = uzbl.gui.bar_h; else if (g_strcmp0(direction, "vertical") == 0) - { - if (g_strcmp0(argv1, "begin") == 0) - gtk_adjustment_set_value(uzbl.gui.bar_v, gtk_adjustment_get_lower(uzbl.gui.bar_v)); - else if (g_strcmp0(argv1, "end") == 0) - gtk_adjustment_set_value (uzbl.gui.bar_v, gtk_adjustment_get_upper(uzbl.gui.bar_v) - - gtk_adjustment_get_page_size(uzbl.gui.bar_v)); - else - scroll(uzbl.gui.bar_v, argv1); + bar = uzbl.gui.bar_v; + else { + if(uzbl.state.verbose) + puts("Unrecognized scroll format"); + return; } + + if (g_strcmp0(argv1, "begin") == 0) + gtk_adjustment_set_value(bar, gtk_adjustment_get_lower(bar)); + else if (g_strcmp0(argv1, "end") == 0) + gtk_adjustment_set_value (bar, gtk_adjustment_get_upper(bar) - + gtk_adjustment_get_page_size(bar)); else - if(uzbl.state.verbose) - puts("Unrecognized scroll format"); + scroll(bar, argv1); } @@ -552,7 +553,8 @@ CommandInfo cmdlist[] = { "show_inspector", show_inspector, 0 }, { "add_cookie", add_cookie, 0 }, { "delete_cookie", delete_cookie, 0 }, - { "clear_cookies", clear_cookies, 0 } + { "clear_cookies", clear_cookies, 0 }, + { "download", download, 0 } }; void @@ -741,6 +743,28 @@ clear_cookies(WebKitWebView *page, GArray *argv, GString *result) { } void +download(WebKitWebView *web_view, GArray *argv, GString *result) { + (void) result; + + const gchar *uri = argv_idx(argv, 0); + const gchar *destination = NULL; + if(argv->len > 1) + destination = argv_idx(argv, 1); + + WebKitNetworkRequest *req = webkit_network_request_new(uri); + WebKitDownload *download = webkit_download_new(req); + + download_cb(web_view, download, (gpointer)destination); + + if(webkit_download_get_destination_uri(download)) + webkit_download_start(download); + else + g_object_unref(download); + + g_object_unref(req); +} + +void act_dump_config() { dump_config(); } @@ -1233,8 +1257,7 @@ parse_command(const char *cmd, const char *params, GString *result) { void move_statusbar() { - if (!uzbl.gui.scrolled_win && - !uzbl.gui.mainbar) + if (!uzbl.gui.scrolled_win && !uzbl.gui.mainbar) return; g_object_ref(uzbl.gui.scrolled_win); @@ -1419,12 +1442,13 @@ create_scrolled_win() { g->web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); g->scrolled_win = gtk_scrolled_window_new(NULL, NULL); + WebKitWebFrame *wf = webkit_web_view_get_main_frame (g->web_view); - gtk_scrolled_window_set_policy( - GTK_SCROLLED_WINDOW(g->scrolled_win), - GTK_POLICY_NEVER, - GTK_POLICY_NEVER - ); +#if !GTK_CHECK_VERSION(3,0,0) + /* hide the scrollbars by default */ + uzbl.gui.scrollbars_visible = 0; + cmd_scrollbars_visibility(); +#endif gtk_container_add( GTK_CONTAINER(g->scrolled_win), @@ -1454,6 +1478,10 @@ create_scrolled_win() { "signal::focus-in-event", (GCallback)focus_cb, NULL, "signal::focus-out-event", (GCallback)focus_cb, NULL, NULL); + + g_object_connect (G_OBJECT (wf), + "signal::scrollbars-policy-changed", (GCallback)scrollbars_policy_cb, NULL, + NULL); } @@ -1498,7 +1526,7 @@ create_window() { gtk_window_set_title(GTK_WINDOW(window), "Uzbl browser"); #if GTK_CHECK_VERSION(3,0,0) - gtk_window_set_has_resize_grip (window, FALSE); + gtk_window_set_has_resize_grip (GTK_WINDOW (window), FALSE); #endif /* if the window has been made small, it shouldn't try to resize itself due @@ -1517,6 +1545,7 @@ create_window() { GtkPlug* create_plug() { + if(uzbl.state.embed) uzbl.state.socket_id = 0; GtkPlug* plug = GTK_PLUG (gtk_plug_new (uzbl.state.socket_id)); g_signal_connect (G_OBJECT (plug), "destroy", G_CALLBACK (destroy_cb), NULL); g_signal_connect (G_OBJECT (plug), "key-press-event", G_CALLBACK (key_press_cb), NULL); @@ -1667,28 +1696,6 @@ retrieve_geometry() { uzbl.gui.geometry = g_string_free(buf, FALSE); } -void -set_webview_scroll_adjustments() { -#if GTK_CHECK_VERSION(2,91,0) - gtk_scrollable_set_hadjustment (GTK_SCROLLABLE(uzbl.gui.web_view), uzbl.gui.bar_h); - gtk_scrollable_set_vadjustment (GTK_SCROLLABLE(uzbl.gui.web_view), uzbl.gui.bar_v); -#else - gtk_widget_set_scroll_adjustments (GTK_WIDGET (uzbl.gui.web_view), - uzbl.gui.bar_h, uzbl.gui.bar_v); -#endif - - g_object_connect((GObject*)uzbl.gui.bar_v, - "signal::value-changed", (GCallback)scroll_vert_cb, NULL, - "signal::changed", (GCallback)scroll_vert_cb, NULL, - NULL); - - g_object_connect((GObject*)uzbl.gui.bar_h, - "signal::value-changed", (GCallback)scroll_horiz_cb, NULL, - "signal::changed", (GCallback)scroll_horiz_cb, NULL, - NULL); -} - - /* Set up gtk, gobject, variable defaults and other things that tests and other * external applications need to do anyhow */ void @@ -1723,7 +1730,7 @@ initialize(int argc, char** argv) { } /* Embedded mode */ - if (uzbl.state.socket_id) + if (uzbl.state.socket_id || uzbl.state.embed) uzbl.state.plug_mode = TRUE; if (!g_thread_supported()) @@ -1834,12 +1841,18 @@ main (int argc, char* argv[]) { } /* Scrolling */ - uzbl.gui.scbar_v = (GtkScrollbar*) gtk_vscrollbar_new (NULL); - uzbl.gui.bar_v = gtk_range_get_adjustment((GtkRange*) uzbl.gui.scbar_v); - uzbl.gui.scbar_h = (GtkScrollbar*) gtk_hscrollbar_new (NULL); - uzbl.gui.bar_h = gtk_range_get_adjustment((GtkRange*) uzbl.gui.scbar_h); + uzbl.gui.bar_h = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (uzbl.gui.scrolled_win)); + uzbl.gui.bar_v = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (uzbl.gui.scrolled_win)); + + g_object_connect(G_OBJECT (uzbl.gui.bar_v), + "signal::value-changed", (GCallback)scroll_vert_cb, NULL, + "signal::changed", (GCallback)scroll_vert_cb, NULL, + NULL); - set_webview_scroll_adjustments(); + g_object_connect(G_OBJECT (uzbl.gui.bar_h), + "signal::value-changed", (GCallback)scroll_horiz_cb, NULL, + "signal::changed", (GCallback)scroll_horiz_cb, NULL, + NULL); gchar *xwin = g_strdup_printf("%d", (int)uzbl.xwin); g_setenv("UZBL_XID", xwin, TRUE); @@ -1899,7 +1912,7 @@ main (int argc, char* argv[]) { if (uzbl.state.verbose) { printf("Uzbl start location: %s\n", argv[0]); if (uzbl.state.socket_id) - printf("plug_id %i\n", gtk_plug_get_id(uzbl.gui.plug)); + printf("plug_id %i\n", (int)gtk_plug_get_id(uzbl.gui.plug)); else printf("window_id %i\n",(int) uzbl.xwin); printf("pid %i\n", getpid ()); diff --git a/src/uzbl-core.h b/src/uzbl-core.h index affd334..3fde5dc 100644 --- a/src/uzbl-core.h +++ b/src/uzbl-core.h @@ -67,8 +67,6 @@ typedef struct { GtkWidget* mainbar_label_right; /* Scrolling */ - GtkScrollbar* scbar_v; /* Horizontal and Vertical Scrollbar */ - GtkScrollbar* scbar_h; /* (These are still hidden) */ GtkAdjustment* bar_v; /* Information about document length */ GtkAdjustment* bar_h; /* and scrolling position */ int scrollbars_visible; @@ -109,6 +107,7 @@ typedef struct { gchar* executable_path; gchar* searchtx; gboolean verbose; + gboolean embed; GdkEventButton* last_button; gchar* last_result; gboolean plug_mode; @@ -313,7 +312,6 @@ void dump_config(); void dump_config_as_events(); void retrieve_geometry(); -void set_webview_scroll_adjustments(); void event(WebKitWebView *page, GArray *argv, GString *result); void init_connect_socket(); gboolean remove_socket_from_array(GIOChannel *chan); @@ -325,6 +323,7 @@ void show_inspector(WebKitWebView *page, GArray *argv, GString *result); void add_cookie(WebKitWebView *page, GArray *argv, GString *result); void delete_cookie(WebKitWebView *page, GArray *argv, GString *result); void clear_cookies(WebKitWebView *pag, GArray *argv, GString *result); +void download(WebKitWebView *pag, GArray *argv, GString *result); void builtins(); typedef void (*Command)(WebKitWebView*, GArray *argv, GString *result); |