about summary refs log tree commit diff stats
path: root/xombrero.c
diff options
context:
space:
mode:
authorJosh Rickmar <jrick@devio.us>2012-07-27 10:19:33 -0400
committerJosh Rickmar <jrick@devio.us>2012-07-27 10:19:33 -0400
commit4d311b35bf6bca1b210ffe4a3f16842d444f432e (patch)
tree0ee8fa471e861bff7774a87051f5d025e4ac4385 /xombrero.c
parent0c240f728d489408cda135786cf29244c1cd4d83 (diff)
downloadxombrero-4d311b35bf6bca1b210ffe4a3f16842d444f432e.tar.gz
More focus improvements. Disable the can-focus property for a lot of
widgets that should not be receiving focus, and try focusing the HTML
body to try to prevent some of the focus bugs that have been popping
up.  No idea if this will solve our problems but they can't hurt.
Diffstat (limited to 'xombrero.c')
-rw-r--r--xombrero.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/xombrero.c b/xombrero.c
index b215e32..e6c50e0 100644
--- a/xombrero.c
+++ b/xombrero.c
@@ -475,6 +475,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);
 }
 
@@ -486,6 +487,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);
 }
 
@@ -493,6 +495,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);
 }
 
@@ -566,6 +569,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));
 }
 
@@ -2798,7 +2802,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;
@@ -2844,14 +2848,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 = ",";
@@ -6886,6 +6888,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(
@@ -6999,16 +7002,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 ?
@@ -7529,9 +7529,11 @@ 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;
@@ -7945,6 +7947,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);
 
@@ -7984,7 +7987,9 @@ 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());
+	gtk_widget_set_name(notebook, "notebook");
 #if !GTK_CHECK_VERSION(3, 0, 0)
 	/* XXX seems to be needed with gtk+2 */
 	g_object_set(G_OBJECT(notebook), "tab-border", 0, NULL);
@@ -7994,6 +7999,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);