diff options
| Commit | d0069eee96f62aecb60d029c7ce5e863a0735273 (patch) | |
|---|---|---|
| Author | 2022-06-13 16:04:53 +0300 | |
| Committer | 2022-06-13 16:04:53 +0300 | |
| Files | c37175a003fcc806b02ecec3304b46a6c8616ceb | |
| goodwolf-d0069eee96f62aecb60d029c7ce5e863a0735273.tar goodwolf-d0069eee96f62aecb60d029c7ce5e863a0735273.tar.gz goodwolf-d0069eee96f62aecb60d029c7ce5e863a0735273.zip | ||
| Parent | 760a9dd3288481728b13c6c6d63e7e57dfdef050 (diff) | |
badwolf: Implemented switches -nl for no labels on tabs and -c for constant tabs (no adding or removing of tabs)
1 files changed, 29 insertions, 15 deletions
| -rw-r--r-- | badwolf.c | 44 |
@@ -26,6 +26,9 @@ static gchar *web_extensions_directory; static uint64_t context_id_counter = 0; GtkTreeModel *bookmarks_completion_model; +static gboolean tabs_no_label = false; +static gboolean tabs_constant = false; + static gboolean WebViewCb_close(WebKitWebView *webView, gpointer user_data); static gboolean WebViewCb_web_process_terminated(WebKitWebView *webView, WebKitWebProcessTerminationReason reason, @@ -135,16 +138,21 @@ WebViewCb_notify__uri(WebKitWebView *webView, GParamSpec *pspec, gpointer user_d return TRUE; } -cairo_surface_t* scale_favicon(cairo_surface_t *f, double pixel_size) +cairo_surface_t* scale_favicon(cairo_surface_t *f) { + if (f == NULL) return NULL; + gint pixel_size = 0; + gtk_icon_size_lookup(GTK_ICON_SIZE_SMALL_TOOLBAR, NULL, &pixel_size); + if (pixel_size == 0) return NULL; + cairo_surface_t *result = cairo_surface_create_similar(f, cairo_surface_get_content(f), - (int)pixel_size, - (int)pixel_size); + pixel_size, + pixel_size); cairo_t *cr = cairo_create(result); cairo_scale(cr, - pixel_size/cairo_image_surface_get_width(f), - pixel_size/cairo_image_surface_get_height(f)); + (double)pixel_size/cairo_image_surface_get_width(f), + (double)pixel_size/cairo_image_surface_get_height(f)); cairo_set_source_surface(cr, f, 0, 0); cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); cairo_paint(cr); @@ -167,14 +175,8 @@ badwolf_new_tab_box(const gchar *title, struct Client *browser) GtkWidget *close = gtk_button_new_from_icon_name("window-close-symbolic", GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_widget_set_name(close, "browser__tabbox__close"); - cairo_surface_t *favicon_image = NULL; - if (webkit_web_view_get_favicon(browser->webView) != NULL) - { - gint height = 0; - gtk_icon_size_lookup(GTK_ICON_SIZE_SMALL_TOOLBAR, NULL, &height); - favicon_image = scale_favicon(webkit_web_view_get_favicon(browser->webView), height); - } - GtkWidget *favicon = gtk_image_new_from_surface(favicon_image); + GtkWidget *favicon = + gtk_image_new_from_surface(scale_favicon(webkit_web_view_get_favicon(browser->webView))); gtk_widget_set_name(favicon, "browser__tabbox__favicon"); GtkWidget *favicon_event_box = gtk_event_box_new(); gtk_container_add(GTK_CONTAINER(favicon_event_box), favicon); @@ -213,6 +215,8 @@ badwolf_new_tab_box(const gchar *title, struct Client *browser) gtk_widget_show_all(tab_box); gtk_widget_set_visible(playing, webkit_web_view_is_playing_audio(browser->webView)); + gtk_widget_set_visible(label, !tabs_no_label); + gtk_widget_set_visible(close, !tabs_constant); gtk_widget_set_events(label, GDK_BUTTON_RELEASE_MASK); g_signal_connect( tab_box, "button-release-event", G_CALLBACK(tab_boxCb_button_release_event), browser); @@ -1215,14 +1219,24 @@ main(int argc, char *argv[]) g_signal_connect(window->new_tab, "clicked", G_CALLBACK(new_tabCb_clicked), window); g_signal_connect(window->notebook, "switch-page", G_CALLBACK(notebookCb_switch__page), window); - gtk_widget_show(window->new_tab); + while (argv[1][0] == '-') { + if (argv[1][1] == 'n' && argv[1][2] == 'l') + tabs_no_label = TRUE; + if (argv[1][1] == 'c') + tabs_constant = TRUE; + argv++; + argc--; + } + + if (!tabs_constant) + gtk_widget_show(window->new_tab); gtk_widget_show_all(window->main_window); if(argc == 1) badwolf_new_tab(GTK_NOTEBOOK(window->notebook), new_browser(window, NULL, NULL), FALSE); else for(int i = 1; i < argc; ++i) - badwolf_new_tab(GTK_NOTEBOOK(window->notebook), new_browser(window, argv[i], NULL), FALSE); + badwolf_new_tab(GTK_NOTEBOOK(window->notebook), new_browser(window, argv[i], NULL), FALSE); gtk_notebook_set_current_page(GTK_NOTEBOOK(window->notebook), 1); |