diff options
Merge branch 'develop'
1 files changed, 39 insertions, 21 deletions
| -rw-r--r-- | badwolf.c | 60 |
@@ -22,14 +22,16 @@ struct Client GtkWidget *toolbar; GtkWidget *javascript; GtkWidget *location; - GtkWidget *search; - GtkWidget *statusbar; WebKitWebView *webView; struct Window *window; + + GtkWidget *statusbar; + GtkWidget *statuslabel; + GtkWidget *search; }; -static gboolean WebViewCb_close(WebKitWebView *webView, GtkWidget *window); +static gboolean WebViewCb_close(WebKitWebView *webView, gpointer user_data); static gboolean WebViewCb_web_process_terminated(WebKitWebView *webView, WebKitWebProcessTerminationReason reason); static gboolean @@ -63,10 +65,22 @@ int badwolf_new_tab(GtkNotebook *notebook, struct Client *browser); GtkWidget *badwolf_new_tab_box(const gchar *title, struct Client *browser); int main(int argc, char *argv[]); -static gboolean WebViewCb_close(WebKitWebView *webView, GtkWidget *window) +static gboolean WebViewCb_close(WebKitWebView *webView, gpointer user_data) { (void)webView; - gtk_widget_destroy(window); + struct Client *browser = (struct Client *)user_data; + GtkNotebook *notebook = GTK_NOTEBOOK(browser->window->notebook); + GValue position = G_VALUE_INIT; + g_value_init(&position, G_TYPE_INT); + + gtk_container_child_get_property(GTK_CONTAINER(notebook), browser->box, "position", &position); + + gtk_notebook_remove_page(notebook, g_value_get_int(&position)); + + gtk_widget_destroy(browser->box); + + free(browser); + return TRUE; } @@ -201,7 +215,7 @@ static gboolean WebViewCb_mouse_target_changed(WebKitWebView *webView, struct Client *browser = (struct Client *)user_data; const gchar *link_uri = webkit_hit_test_result_get_link_uri(hit); - gtk_label_set_text(GTK_LABEL(browser->statusbar), link_uri); + gtk_label_set_text(GTK_LABEL(browser->statuslabel), link_uri); return TRUE; } @@ -304,9 +318,11 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web browser->box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); browser->toolbar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); browser->location = gtk_entry_new(); - browser->search = gtk_search_entry_new(); browser->javascript = gtk_check_button_new(); - browser->statusbar = gtk_label_new(NULL); + + browser->statusbar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + browser->statuslabel = gtk_label_new(NULL); + browser->search = gtk_search_entry_new(); WebKitWebContext *web_context = webkit_web_context_new_ephemeral(); webkit_web_context_set_process_model(web_context, @@ -335,21 +351,29 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web TRUE, TRUE, BADWOLF_TOOLBAR_PADDING); - gtk_box_pack_start(GTK_BOX(browser->toolbar), - GTK_WIDGET(browser->search), - FALSE, - FALSE, - BADWOLF_TOOLBAR_PADDING); gtk_box_pack_start( GTK_BOX(browser->box), GTK_WIDGET(browser->toolbar), FALSE, FALSE, BADWOLF_BOX_PADDING); gtk_box_pack_start( GTK_BOX(browser->box), GTK_WIDGET(browser->webView), TRUE, TRUE, BADWOLF_BOX_PADDING); + gtk_box_pack_start( GTK_BOX(browser->box), GTK_WIDGET(browser->statusbar), FALSE, FALSE, BADWOLF_BOX_PADDING); + gtk_box_pack_start(GTK_BOX(browser->statusbar), + GTK_WIDGET(browser->search), + FALSE, + FALSE, + BADWOLF_STATUSBAR_PADDING); + gtk_box_pack_start(GTK_BOX(browser->statusbar), + GTK_WIDGET(browser->statuslabel), + FALSE, + FALSE, + BADWOLF_STATUSBAR_PADDING); + gtk_widget_set_halign(browser->statusbar, GTK_ALIGN_START); - gtk_label_set_single_line_mode(GTK_LABEL(browser->statusbar), TRUE); + + gtk_label_set_single_line_mode(GTK_LABEL(browser->statuslabel), TRUE); gtk_entry_set_text(GTK_ENTRY(browser->location), target_url); gtk_entry_set_has_frame(GTK_ENTRY(browser->location), FALSE); @@ -428,14 +452,8 @@ void closeCb_clicked(GtkButton *close, gpointer user_data) { (void)close; struct Client *browser = (struct Client *)user_data; - GtkNotebook *notebook = GTK_NOTEBOOK(browser->window->notebook); - GValue position = G_VALUE_INIT; - g_value_init(&position, G_TYPE_INT); - gtk_container_child_get_property(GTK_CONTAINER(notebook), browser->box, "position", &position); - - gtk_notebook_remove_page(notebook, g_value_get_int(&position)); - free(browser); + webkit_web_view_try_close(browser->webView); } int main(int argc, char *argv[]) |