diff options
author | Josh Rickmar <jrick@devio.us> | 2012-07-13 11:34:24 -0400 |
---|---|---|
committer | Josh Rickmar <jrick@devio.us> | 2012-07-13 11:34:24 -0400 |
commit | df94016aeecc4512fbc28f1e9d79c7751d6a9488 (patch) | |
tree | a3fbe6b217c38ecaae63c56d92daa254d42e5cac | |
parent | d4352ad1c354e854d7dd5f7991f8dc42224d4985 (diff) | |
download | xombrero-df94016aeecc4512fbc28f1e9d79c7751d6a9488.tar.gz |
Always create the items in the toolbar, even if they aren't going to
be immediatelly shown due to fancy_bar = 0 or an empty search_string. We need these to be created in case they are shown again by changing these gui settings at runtime later. This also prevents a lot of Gtk-CRITICAL warnings due to trying to set various widgets active or inactive based on the current page status (for example, stop and the js toggle button). While here, kill some useless boxes around both the uri and search entries in the toolbar.
-rw-r--r-- | settings.c | 16 | ||||
-rw-r--r-- | xombrero.c | 109 |
2 files changed, 61 insertions, 64 deletions
diff --git a/settings.c b/settings.c index 31923b8..a0e73b8 100644 --- a/settings.c +++ b/settings.c @@ -653,12 +653,19 @@ set_home(char *value) int set_search_string(char *value) { + struct tab *t; + if (search_string) g_free(search_string); - if (value == NULL || strlen(value) == 0) - search_string = g_strdup(XT_DS_SEARCH_STRING); - else + if (value == NULL || strlen(value) == 0) { + search_string = NULL; + TAILQ_FOREACH(t, &tabs, entry) + gtk_widget_hide(t->search_entry); + } else { search_string = g_strdup(value); + TAILQ_FOREACH(t, &tabs, entry) + gtk_widget_show(t->search_entry); + } return (0); } @@ -2199,7 +2206,8 @@ set_fancy_bar(char *value) gtk_widget_show(t->forward); gtk_widget_show(t->stop); gtk_widget_show(t->js_toggle); - gtk_widget_show(t->search_entry); + if (search_string && strlen(search_string)) + gtk_widget_show(t->search_entry); } else { gtk_widget_hide(t->backward); gtk_widget_hide(t->forward); diff --git a/xombrero.c b/xombrero.c index b4e07cb..ab54bdb 100644 --- a/xombrero.c +++ b/xombrero.c @@ -6965,7 +6965,7 @@ create_kiosk_toolbar(struct tab *t) GtkWidget * create_toolbar(struct tab *t) { - GtkWidget *toolbar = NULL, *b, *eb1; + GtkWidget *toolbar = NULL, *b; #if GTK_CHECK_VERSION(3, 0, 0) b = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); @@ -6976,74 +6976,54 @@ create_toolbar(struct tab *t) toolbar = b; gtk_container_set_border_width(GTK_CONTAINER(toolbar), 0); - if (fancy_bar) { - /* backward button */ - t->backward = create_button("Back", GTK_STOCK_GO_BACK, 0); - gtk_widget_set_sensitive(t->backward, FALSE); - g_signal_connect(G_OBJECT(t->backward), "clicked", - G_CALLBACK(backward_cb), t); - gtk_box_pack_start(GTK_BOX(b), t->backward, FALSE, FALSE, 0); - - /* forward button */ - t->forward = create_button("Forward",GTK_STOCK_GO_FORWARD, 0); - 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); - - /* 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); - - /* JS button */ - t->js_toggle = create_button("JS-Toggle", enable_scripts ? - GTK_STOCK_MEDIA_PLAY : GTK_STOCK_MEDIA_PAUSE, 0); - gtk_widget_set_sensitive(t->js_toggle, TRUE); - g_signal_connect(G_OBJECT(t->js_toggle), "clicked", - G_CALLBACK(js_toggle_cb), t); - gtk_box_pack_start(GTK_BOX(b), t->js_toggle, FALSE, FALSE, 0); - } + /* backward button */ + t->backward = create_button("Back", GTK_STOCK_GO_BACK, 0); + gtk_widget_set_sensitive(t->backward, FALSE); + g_signal_connect(G_OBJECT(t->backward), "clicked", + G_CALLBACK(backward_cb), t); + gtk_box_pack_start(GTK_BOX(b), t->backward, FALSE, FALSE, 0); + + /* forward button */ + t->forward = create_button("Forward",GTK_STOCK_GO_FORWARD, 0); + 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); + + /* 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); + + /* JS button */ + t->js_toggle = create_button("JS-Toggle", enable_scripts ? + GTK_STOCK_MEDIA_PLAY : GTK_STOCK_MEDIA_PAUSE, 0); + gtk_widget_set_sensitive(t->js_toggle, TRUE); + g_signal_connect(G_OBJECT(t->js_toggle), "clicked", + G_CALLBACK(js_toggle_cb), t); + gtk_box_pack_start(GTK_BOX(b), t->js_toggle, FALSE, FALSE, 0); t->uri_entry = gtk_entry_new(); - gtk_widget_set_name(GTK_WIDGET(t->uri_entry), "url-red"); g_signal_connect(G_OBJECT(t->uri_entry), "activate", G_CALLBACK(activate_uri_entry_cb), t); g_signal_connect(G_OBJECT(t->uri_entry), "key-press-event", G_CALLBACK(entry_key_cb), t); completion_add(t); -#if GTK_CHECK_VERSION(3, 0, 0) - eb1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); -#else - eb1 = gtk_hbox_new(FALSE, 0); -#endif - gtk_container_set_border_width(GTK_CONTAINER(eb1), 1); - gtk_box_pack_start(GTK_BOX(eb1), t->uri_entry, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(b), eb1, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(b), t->uri_entry, TRUE, TRUE, 0); /* search entry */ - if (fancy_bar && search_string != NULL && strlen(search_string) != 0) { - GtkWidget *eb2; - t->search_entry = gtk_entry_new(); - gtk_entry_set_width_chars(GTK_ENTRY(t->search_entry), 30); - g_signal_connect(G_OBJECT(t->search_entry), "activate", - G_CALLBACK(activate_search_entry_cb), t); - g_signal_connect(G_OBJECT(t->search_entry), "key-press-event", - G_CALLBACK(entry_key_cb), t); -#if GTK_CHECK_VERSION(3, 0, 0) - eb2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); -#else - eb2 = gtk_hbox_new(FALSE, 0); -#endif - gtk_container_set_border_width(GTK_CONTAINER(eb2), 1); - gtk_box_pack_start(GTK_BOX(eb2), t->search_entry, TRUE, TRUE, - 0); - gtk_box_pack_start(GTK_BOX(b), eb2, FALSE, FALSE, 0); - } + t->search_entry = gtk_entry_new(); + gtk_entry_set_width_chars(GTK_ENTRY(t->search_entry), 30); + g_signal_connect(G_OBJECT(t->search_entry), "activate", + G_CALLBACK(activate_search_entry_cb), t); + g_signal_connect(G_OBJECT(t->search_entry), "key-press-event", + G_CALLBACK(entry_key_cb), t); + gtk_box_pack_start(GTK_BOX(b), t->search_entry, FALSE, FALSE, 0); + #if !GTK_CHECK_VERSION(3, 0, 0) t->default_style = gtk_rc_get_style(t->uri_entry); #endif @@ -7618,6 +7598,15 @@ create_new_tab(char *title, struct undo *u, int focus, int position) gtk_widget_show_all(b); gtk_widget_show_all(t->vbox); + if (!fancy_bar) { + gtk_widget_hide(t->backward); + gtk_widget_hide(t->forward); + gtk_widget_hide(t->stop); + gtk_widget_hide(t->js_toggle); + } + if (!fancy_bar || (search_string == NULL || strlen(search_string) == 0)) + gtk_widget_hide(t->search_entry); + /* compact tab bar */ t->tab_elems.label = gtk_label_new(title); t->tab_elems.favicon = gtk_image_new(); |