Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commitd0069eee96f62aecb60d029c7ce5e863a0735273 (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-06-13 16:04:53 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-06-13 16:04:53 +0300
Filesc37175a003fcc806b02ecec3304b46a6c8616ceb
goodwolf-d0069eee96f62aecb60d029c7ce5e863a0735273.tar
goodwolf-d0069eee96f62aecb60d029c7ce5e863a0735273.tar.gz
goodwolf-d0069eee96f62aecb60d029c7ce5e863a0735273.zip
Parent760a9dd3288481728b13c6c6d63e7e57dfdef050 (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.c44
diff --git a/badwolf.c b/badwolf.c
index 19353d9..f49ba6c 100644
--- a/badwolf.c
+++ b/badwolf.c
@@ -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);