diff options
Diffstat (limited to 'xombrero.c')
-rw-r--r-- | xombrero.c | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/xombrero.c b/xombrero.c index d02d471..53b68f3 100644 --- a/xombrero.c +++ b/xombrero.c @@ -476,6 +476,7 @@ hide_cmd(struct tab *t) history_at = NULL; /* just in case */ search_at = NULL; /* just in case */ + gtk_widget_set_can_focus(t->cmd, FALSE); gtk_widget_hide(t->cmd); } @@ -487,6 +488,7 @@ show_cmd(struct tab *t) history_at = NULL; search_at = NULL; gtk_widget_hide(t->oops); + gtk_widget_set_can_focus(t->cmd, TRUE); gtk_widget_show(t->cmd); } @@ -494,6 +496,7 @@ void hide_buffers(struct tab *t) { gtk_widget_hide(t->buffers); + gtk_widget_set_can_focus(t->buffers, FALSE); gtk_list_store_clear(buffers_store); } @@ -567,6 +570,7 @@ show_buffers(struct tab *t) gtk_tree_path_free(path); gtk_widget_show(t->buffers); + gtk_widget_set_can_focus(t->buffers, TRUE); gtk_widget_grab_focus(GTK_WIDGET(t->buffers)); } @@ -2805,7 +2809,7 @@ struct prompt_sub { int command(struct tab *t, struct karg *args) { - struct karg a; + struct karg a = {0}; int i; char *s = NULL, *sp = NULL, *sl = NULL; gchar **sv; @@ -2851,14 +2855,12 @@ command(struct tab *t, struct karg *args) break; case '.': t->mode = XT_MODE_HINT; - bzero(&a, sizeof a); a.i = 0; hint(t, &a); s = "."; break; case ',': t->mode = XT_MODE_HINT; - bzero(&a, sizeof a); a.i = XT_HINT_NEWTAB; hint(t, &a); s = ","; @@ -4227,6 +4229,15 @@ notify_load_status_cb(WebKitWebView* wview, GParamSpec* pspec, struct tab *t) g_free(base); #endif + /* DOM is changing, unreference the previous focused element */ +#if WEBKIT_CHECK_VERSION(1, 5, 0) + t->active = NULL; + if (t->active_text) { + g_free(t->active_text); + t->active_text = NULL; + } +#endif + /* take focus if we are visible */ focus_webview(t); t->focus_wv = 1; @@ -7000,6 +7011,7 @@ create_browser(struct tab *t) } w = gtk_scrolled_window_new(NULL, NULL); + gtk_widget_set_can_focus(w, FALSE); t->adjust_h = gtk_scrolled_window_get_hadjustment( GTK_SCROLLED_WINDOW(w)); t->adjust_v = gtk_scrolled_window_get_vadjustment( @@ -7115,16 +7127,13 @@ create_toolbar(struct tab *t) gtk_widget_set_sensitive(t->forward, FALSE); g_signal_connect(G_OBJECT(t->forward), "clicked", G_CALLBACK(forward_cb), t); - gtk_box_pack_start(GTK_BOX(b), t->forward, FALSE, - FALSE, 0); + gtk_box_pack_start(GTK_BOX(b), t->forward, FALSE, FALSE, 0); /* stop button */ t->stop = create_button("Stop", GTK_STOCK_STOP, 0); gtk_widget_set_sensitive(t->stop, FALSE); - g_signal_connect(G_OBJECT(t->stop), "clicked", - G_CALLBACK(stop_cb), t); - gtk_box_pack_start(GTK_BOX(b), t->stop, FALSE, - FALSE, 0); + g_signal_connect(G_OBJECT(t->stop), "clicked", G_CALLBACK(stop_cb), t); + gtk_box_pack_start(GTK_BOX(b), t->stop, FALSE, FALSE, 0); /* JS button */ t->js_toggle = create_button("JS-Toggle", enable_scripts ? @@ -7651,13 +7660,19 @@ create_new_tab(char *title, struct undo *u, int focus, int position) t->vbox = gtk_vbox_new(FALSE, 0); b = gtk_hbox_new(FALSE, 0); #endif + gtk_widget_set_can_focus(t->vbox, FALSE); /* label + button for tab */ t->tab_content = b; + gtk_widget_set_can_focus(t->tab_content, FALSE); t->user_agent_id = 0; t->http_accept_id = 0; +#if WEBKIT_CHECK_VERSION(1, 5, 0) + t->active = NULL; +#endif + #if GTK_CHECK_VERSION(2, 20, 0) t->spinner = gtk_spinner_new(); #endif @@ -8068,6 +8083,7 @@ create_button(char *name, char *stockid, int size) g_free(newstyle); #endif button = gtk_button_new(); + gtk_widget_set_can_focus(button, FALSE); gtk_button_set_focus_on_click(GTK_BUTTON(button), FALSE); gtk_icon_size = icon_size_map(size ? size : icon_size); @@ -8107,6 +8123,7 @@ create_canvas(void) vbox = gtk_vbox_new(FALSE, 0); #endif gtk_box_set_spacing(GTK_BOX(vbox), 0); + gtk_widget_set_can_focus(vbox, FALSE); notebook = GTK_NOTEBOOK(gtk_notebook_new()); #if !GTK_CHECK_VERSION(3, 0, 0) /* XXX seems to be needed with gtk+2 */ @@ -8117,6 +8134,7 @@ create_canvas(void) gtk_widget_set_can_focus(GTK_WIDGET(notebook), FALSE); abtn = gtk_button_new(); + gtk_widget_set_can_focus(abtn, FALSE); arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE); gtk_widget_set_name(abtn, "Arrow"); gtk_container_add(GTK_CONTAINER(abtn), arrow); |