about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--xxxterm.13
-rw-r--r--xxxterm.c151
2 files changed, 100 insertions, 54 deletions
diff --git a/xxxterm.1 b/xxxterm.1
index c6faf64..e6897fa 100644
--- a/xxxterm.1
+++ b/xxxterm.1
@@ -131,6 +131,9 @@ validates that during startup.
 .It Cm fancy_bar
 Enables a backward, forward and stop button to the toolbar.
 Additionally if search_string is set it'll enable an entry box for searches.
+.It Cm icon_size
+Permits icon sizes to be changed if fancy_bar is enabled.
+Size 1 is small, 2 is normal, 3 and 4 are progressively larger.
 .It Cm refresh_interval
 Refresh interval while in the download manager.
 Default is 10.
diff --git a/xxxterm.c b/xxxterm.c
index 039f2b7..9cf3ec6 100644
--- a/xxxterm.c
+++ b/xxxterm.c
@@ -157,10 +157,10 @@ struct tab {
 	GtkWidget		*toolbar;
 	GtkWidget		*browser_win;
 	GtkWidget		*cmd;
-	GtkToolItem		*backward;
-	GtkToolItem		*forward;
-	GtkToolItem		*stop;
-	GtkToolItem		*js_toggle;
+	GtkWidget		*backward;
+	GtkWidget		*forward;
+	GtkWidget		*stop;
+	GtkWidget		*js_toggle;
 	guint			tab_id;
 	WebKitWebView		*wv;
 
@@ -399,6 +399,7 @@ int		enable_plugins = 0;
 int		default_font_size = 12;
 int		window_height = 768;
 int		window_width = 1024;
+int		icon_size = 2; /* 1 = smallest, 2+ = bigger */
 unsigned	refresh_interval = 10; /* download refresh interval */
 int		enable_cookie_whitelist = 1;
 int		enable_js_whitelist = 1;
@@ -424,6 +425,8 @@ int		add_alias(struct settings *, char *);
 int		add_mime_type(struct settings *, char *);
 int		add_cookie_wl(struct settings *, char *);
 int		add_js_wl(struct settings *, char *);
+void		button_set_stockid(GtkWidget *, char *);
+GtkWidget *	create_button(char *, char *, int);
 
 char		*get_cookie_policy(struct settings *);
 
@@ -511,6 +514,7 @@ struct settings {
 	{ "fancy_bar", XT_S_INT, XT_SF_RESTART , &fancy_bar, NULL, NULL },
 	{ "home", XT_S_STR, 0 , NULL, &home, NULL },
 	{ "http_proxy", XT_S_STR, 0 , NULL, &http_proxy, NULL },
+	{ "icon_size", XT_S_INT, 0 , &icon_size, NULL, NULL },
 	{ "read_only_cookies", XT_S_INT, 0 , &read_only_cookies, NULL, NULL },
 	{ "refresh_interval", XT_S_INT, 0 , &refresh_interval, NULL, NULL },
 	{ "resource_dir", XT_S_STR, 0 , NULL, &resource_dir, NULL },
@@ -1711,15 +1715,13 @@ toggle_js(struct tab *t, struct karg *args)
 		dom_toggle = dom;
 
 	if (es) {
-		gtk_tool_button_set_stock_id( GTK_TOOL_BUTTON(t->js_toggle),
-		    GTK_STOCK_MEDIA_PLAY);
+		button_set_stockid(t->js_toggle, GTK_STOCK_MEDIA_PLAY);
 		wl_add(dom_toggle, &js_wl, 0 /* session */);
 	} else {
 		d = wl_find(dom_toggle, &js_wl);
 		if (d)
 			RB_REMOVE(domain_list, &js_wl, d);
-		gtk_tool_button_set_stock_id( GTK_TOOL_BUTTON(t->js_toggle),
-		    GTK_STOCK_MEDIA_PAUSE);
+		button_set_stockid(t->js_toggle, GTK_STOCK_MEDIA_PAUSE);
 	}
 	g_object_set((GObject *)t->settings,
 	    "enable-scripts", es, (char *)NULL);
@@ -4167,7 +4169,7 @@ check_and_set_js(gchar *uri, struct tab *t)
 	    "enable-scripts", es, (char *)NULL);
 	webkit_web_view_set_settings(t->wv, t->settings);
 
-	gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(t->js_toggle),
+	button_set_stockid(t->js_toggle,
 	    es ? GTK_STOCK_MEDIA_PLAY : GTK_STOCK_MEDIA_PAUSE);
 }
 
@@ -5025,50 +5027,43 @@ create_window(void)
 GtkWidget *
 create_toolbar(struct tab *t)
 {
-	GtkWidget		*toolbar = NULL, *b;
+	GtkWidget		*toolbar = NULL, *b, *eb1;
 
 	b = gtk_hbox_new(FALSE, 0);
 	toolbar = b;
+	gtk_container_set_border_width(GTK_CONTAINER(toolbar), 0);
 
 	if (fancy_bar) {
 		/* backward button */
-		t->backward = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
-		gtk_widget_set_sensitive(GTK_WIDGET(t->backward), FALSE);
+		t->backward = create_button("go-back", GTK_STOCK_GO_BACK, 0);
+		gtk_widget_set_sensitive(t->backward, FALSE);
 		g_signal_connect(G_OBJECT(t->backward), "clicked",
 		    G_CALLBACK(backward_cb), t);
-		gtk_widget_set_size_request(GTK_WIDGET(t->backward), -1, -1);
-		gtk_box_pack_start(GTK_BOX(b), GTK_WIDGET(t->backward), FALSE,
-		    FALSE, 0);
+		gtk_box_pack_start(GTK_BOX(b), t->backward, FALSE, FALSE, 0);
 
 		/* forward button */
-		t->forward =
-		    gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
-		gtk_widget_set_sensitive(GTK_WIDGET(t->forward), FALSE);
+		t->forward = create_button("go-forward",GTK_STOCK_GO_FORWARD, 0);
+		gtk_widget_set_sensitive(t->forward, FALSE);
 		g_signal_connect(G_OBJECT(t->forward), "clicked",
 		    G_CALLBACK(forward_cb), t);
-		gtk_widget_set_size_request(GTK_WIDGET(t->forward), -1, -1);
-		gtk_box_pack_start(GTK_BOX(b), GTK_WIDGET(t->forward), FALSE,
+		gtk_box_pack_start(GTK_BOX(b), t->forward, FALSE,
 		    FALSE, 0);
 
 		/* stop button */
-		t->stop = gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
-		gtk_widget_set_sensitive(GTK_WIDGET(t->stop), FALSE);
+		t->stop = create_button("stop", GTK_STOCK_STOP, 0);
+		gtk_widget_set_sensitive(t->stop, FALSE);
 		g_signal_connect(G_OBJECT(t->stop), "clicked",
 		    G_CALLBACK(stop_cb), t);
-		gtk_widget_set_size_request(GTK_WIDGET(t->stop), -1, -1);
-		gtk_box_pack_start(GTK_BOX(b), GTK_WIDGET(t->stop), FALSE,
+		gtk_box_pack_start(GTK_BOX(b), t->stop, FALSE,
 		    FALSE, 0);
 
 		/* JS button */
-		t->js_toggle =
-		    gtk_tool_button_new_from_stock(enable_scripts ?
-		        GTK_STOCK_MEDIA_PLAY : GTK_STOCK_MEDIA_PAUSE);
-		gtk_widget_set_sensitive(GTK_WIDGET(t->js_toggle), TRUE);
+		t->js_toggle = create_button("js-toggle", enable_scripts ?
+		        GTK_STOCK_MEDIA_PLAY : GTK_STOCK_MEDIA_PAUSE, 0);
+		gtk_widget_set_sensitive(t->js_toggle, TRUE);
 		g_signal_connect(G_OBJECT(t->js_toggle), "clicked",
 		    G_CALLBACK(js_toggle_cb), t);
-		gtk_widget_set_size_request(GTK_WIDGET(t->js_toggle), -1, -1);
-		gtk_box_pack_start(GTK_BOX(b), GTK_WIDGET(t->js_toggle), FALSE,
-		    FALSE, 0);
+		gtk_box_pack_start(GTK_BOX(b), t->js_toggle, FALSE, FALSE, 0);
 	}
 
 	t->uri_entry = gtk_entry_new();
@@ -5076,11 +5071,14 @@ create_toolbar(struct tab *t)
 	    G_CALLBACK(activate_uri_entry_cb), t);
 	g_signal_connect(G_OBJECT(t->uri_entry), "key-press-event",
 	    (GCallback)entry_key_cb, t);
-	gtk_box_pack_start(GTK_BOX(b), t->uri_entry, TRUE, TRUE, 0);
-	gtk_widget_set_size_request(GTK_WIDGET(b), -1, 32);
+	eb1 = gtk_hbox_new(FALSE, 0);
+	gtk_container_set_border_width(GTK_CONTAINER(eb1), 1);
+	gtk_box_pack_start(GTK_BOX(eb1), t->uri_entry, TRUE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(b), eb1, TRUE, TRUE, 0);
 
 	/* search entry */
 	if (fancy_bar && search_string) {
+		GtkWidget *eb2;
 		t->search_entry = gtk_entry_new();
 		gtk_entry_set_width_chars(GTK_ENTRY(t->search_entry), 30);
 		g_signal_connect(G_OBJECT(t->search_entry), "activate",
@@ -5088,9 +5086,12 @@ create_toolbar(struct tab *t)
 		g_signal_connect(G_OBJECT(t->search_entry), "key-press-event",
 		    (GCallback)entry_key_cb, t);
 		gtk_widget_set_size_request(t->search_entry, -1, -1);
-		gtk_box_pack_start(GTK_BOX(b), t->search_entry, FALSE, FALSE, 0);
+		eb2 = gtk_hbox_new(FALSE, 0);
+		gtk_container_set_border_width(GTK_CONTAINER(eb2), 1);
+		gtk_box_pack_start(GTK_BOX(eb2), t->search_entry, TRUE, TRUE,
+		    0);
+		gtk_box_pack_start(GTK_BOX(b), eb2, FALSE, FALSE, 0);
 	}
-
 	return (toolbar);
 }
 
@@ -5225,7 +5226,7 @@ create_new_tab(char *title, struct undo *u, int focus)
 	struct tab			*t, *tt;
 	int				load = 1, id, notfound;
 	char				*newuri = NULL;
-	GtkWidget			*image, *b, *bb;
+	GtkWidget			*b, *bb;
 	WebKitWebHistoryItem		*item;
 	GList				*items;
 	WebKitWebBackForwardList	*bfl;
@@ -5252,15 +5253,6 @@ create_new_tab(char *title, struct undo *u, int focus)
 	t->vbox = gtk_vbox_new(FALSE, 0);
 
 	/* label + button for tab */
-	gtk_rc_parse_string(
-	    "style \"my-button-style\"\n"
-	    "{\n"
-	    "  GtkWidget::focus-padding = 0\n"
-	    "  GtkWidget::focus-line-width = 0\n"
-	    "  xthickness = 0\n"
-	    "  ythickness = 0\n"
-	    "}\n"
-	    "widget \"*.my-close-button\" style \"my-button-style\"");
 	b = gtk_hbox_new(FALSE, 0);
 	t->tab_content = b;
 
@@ -5268,12 +5260,7 @@ create_new_tab(char *title, struct undo *u, int focus)
 	t->spinner = gtk_spinner_new ();
 #endif
 	t->label = gtk_label_new(title);
-	bb = gtk_button_new();
-	gtk_button_set_focus_on_click(GTK_BUTTON(bb), FALSE);
-	image = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
-	gtk_widget_set_size_request(GTK_WIDGET(image), -1, -1);
-	gtk_container_add(GTK_CONTAINER(bb), GTK_WIDGET(image));
-	gtk_widget_set_name(bb, "my-close-button");
+	bb = create_button("my-close-button", GTK_STOCK_CLOSE, 1);
 	gtk_widget_set_size_request(t->label, 100, 0);
 	gtk_widget_set_size_request(b, 130, 0);
 	gtk_notebook_set_homogeneous_tabs(notebook, TRUE);
@@ -5479,6 +5466,55 @@ arrow_cb(GtkWidget *w, GdkEventButton *event, gpointer user_data)
 	return (FALSE /* propagate */);
 }
 
+int
+icon_size_map(int icon_size)
+{
+	if (icon_size <= GTK_ICON_SIZE_INVALID ||
+	    icon_size > GTK_ICON_SIZE_DIALOG)
+		return (GTK_ICON_SIZE_SMALL_TOOLBAR);
+
+	return (icon_size);
+}
+
+GtkWidget *
+create_button(char *name, char *stockid, int size)
+{
+	GtkWidget *button, *image;
+	char *rcstring;
+	int gtk_icon_size;
+	asprintf(&rcstring,
+	    "style \"%s-style\"\n"
+	    "{\n"
+	    "  GtkWidget::focus-padding = 0\n"
+	    "  GtkWidget::focus-line-width = 0\n"
+	    "  xthickness = 0\n"
+	    "  ythickness = 0\n"
+	    "}\n"
+	    "widget \"*.%s\" style \"%s-style\"",name,name,name);
+	gtk_rc_parse_string(rcstring);
+	free(rcstring);
+	button = gtk_button_new();
+	gtk_button_set_focus_on_click(GTK_BUTTON(button), FALSE);
+	gtk_icon_size = icon_size_map(size?size:icon_size);
+
+	image = gtk_image_new_from_stock(stockid, gtk_icon_size);
+	gtk_widget_set_size_request(GTK_WIDGET(image), -1, -1);
+	gtk_container_set_border_width(GTK_CONTAINER(button), 1);
+	gtk_container_add(GTK_CONTAINER(button), GTK_WIDGET(image));
+	gtk_widget_set_name(button, name);
+
+	return button;
+}
+
+void
+button_set_stockid(GtkWidget *button, char *stockid)
+{
+	GtkWidget *image;
+	image = gtk_image_new_from_stock(stockid, icon_size_map(icon_size));
+	gtk_widget_set_size_request(GTK_WIDGET(image), -1, -1);
+	gtk_button_set_image(GTK_BUTTON(button), image);
+}
+
 void
 create_canvas(void)
 {
@@ -5489,21 +5525,28 @@ create_canvas(void)
 	int			i;
 
 	vbox = gtk_vbox_new(FALSE, 0);
+	gtk_box_set_spacing(GTK_BOX(vbox), 0);
 	notebook = GTK_NOTEBOOK(gtk_notebook_new());
 	if (showtabs == 0)
-		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE);
+		gtk_notebook_set_show_tabs(notebook, FALSE);
+	else {
+		gtk_notebook_set_tab_hborder(notebook, 0);
+		gtk_notebook_set_tab_vborder(notebook, 0);
+	}
+	gtk_notebook_set_show_border(notebook, FALSE);
 	gtk_notebook_set_scrollable(notebook, TRUE);
 	gtk_widget_set_can_focus(GTK_WIDGET(notebook), FALSE);
 
 	abtn = gtk_button_new();
 	arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE);
-	gtk_widget_set_size_request(arrow, -1, 0);
+	gtk_widget_set_size_request(arrow, -1, -1);
 	gtk_container_add(GTK_CONTAINER(abtn), arrow);
 	gtk_widget_set_size_request(abtn, -1, 20);
 	gtk_notebook_set_action_widget(notebook, abtn, GTK_PACK_END);
 
-	gtk_widget_set_size_request(vbox, -1, 0);
+	gtk_widget_set_size_request(GTK_WIDGET(notebook), -1, -1);
 	gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(notebook), TRUE, TRUE, 0);
+	gtk_widget_set_size_request(vbox, -1, -1);
 
 	g_object_connect((GObject*)notebook,
 	    "signal::switch-page", (GCallback)notebook_switchpage_cb, NULL,
rtik Agaram <vc@akkartik.com> 2021-03-23 17:31:08 -0700 committer Kartik Agaram <vc@akkartik.com> 2021-03-23 17:31:08 -0700 .' href='/akkartik/mu/commit/html/linux/404stream.mu.html?h=main&id=3350c34a74844e21ea69077e01efff3bae64bdcd'>3350c34a ^
2c56af2d ^
3350c34a ^
91a5f3e1 ^
3350c34a ^
91a5f3e1 ^





3350c34a ^
2c56af2d ^
3350c34a ^
91a5f3e1 ^

3350c34a ^
91a5f3e1 ^


828bc320 ^



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131