Summary Files Commits Branches @commit @diff @stats
path: root / badwolf.c
diff options
context:
space:
mode:
Commit800e9ca61f003983ca69046ebe0d67d83572ef57 (patch)
Author
 Haelwenn (lanodan) Monnier <contact@hacktivis.me>
2019-04-05 01:05:04 +0200
Committer
 Haelwenn (lanodan) Monnier <contact@hacktivis.me>
2019-04-05 01:05:04 +0200
Filesec12a7d2d797229592b63550e784e22cf18b2326 /badwolf.c
goodwolf-800e9ca61f003983ca69046ebe0d67d83572ef57.tar
goodwolf-800e9ca61f003983ca69046ebe0d67d83572ef57.tar.gz
goodwolf-800e9ca61f003983ca69046ebe0d67d83572ef57.zip
Parent6944c8422e9b4508f88b747752ebb35d3cbea120 (diff)
Parentf14db688dc911b2720d030becb7482ddd2fcdff4 (diff)
Merge branch 'develop'
1 files changed, 39 insertions, 21 deletions
-rw-r--r--badwolf.c60
diff --git a/badwolf.c b/badwolf.c
index be7aef0..b7ec408 100644
--- a/badwolf.c
+++ b/badwolf.c
@@ -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[])