From 760a9dd3288481728b13c6c6d63e7e57dfdef050 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 13 Jun 2022 15:34:58 +0300 Subject: badwolf: Added tray icon --- badwolf.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/badwolf.c b/badwolf.c index 8dad798..19353d9 100644 --- a/badwolf.c +++ b/badwolf.c @@ -1082,6 +1082,28 @@ storeCb_finish(WebKitUserContentFilterStore *store, GAsyncResult *result, gpoint } } +void +tray_icon_on_click(GtkStatusIcon *status_icon, gpointer main_window_ptr) +{ + GtkWidget *main_window = GTK_WIDGET(main_window_ptr); + if (gtk_widget_is_visible(main_window)) + gtk_widget_hide(main_window); + else + gtk_widget_show(main_window); +} + +static GtkStatusIcon *create_tray_icon(const struct Window *window) { + GtkStatusIcon *tray_icon; + + tray_icon = gtk_status_icon_new(); + g_signal_connect(G_OBJECT(tray_icon), "activate", G_CALLBACK(tray_icon_on_click), window->main_window); + gtk_status_icon_set_from_icon_name(tray_icon, "badwolf"); + gtk_status_icon_set_tooltip_text(tray_icon, "Badwolf"); + gtk_status_icon_set_visible(tray_icon, TRUE); + + return tray_icon; +} + int main(int argc, char *argv[]) { @@ -1098,6 +1120,8 @@ main(int argc, char *argv[]) g_application_register(application, NULL, NULL); //g_application_activate(application); + GtkStatusIcon *tray_icon; + gtk_init(&argc, &argv); fprintf(stderr, _("Running Badwolf version: %s\n"), version); @@ -1202,6 +1226,8 @@ main(int argc, char *argv[]) gtk_notebook_set_current_page(GTK_NOTEBOOK(window->notebook), 1); + tray_icon = create_tray_icon(window); + gtk_main(); g_object_unref(bookmarks_completion_model); -- cgit v1.3.1-23-gd82d