about summary refs log tree commit diff stats
path: root/xxxterm.c
diff options
context:
space:
mode:
Diffstat (limited to 'xxxterm.c')
-rw-r--r--xxxterm.c30
1 files changed, 23 insertions, 7 deletions
diff --git a/xxxterm.c b/xxxterm.c
index 61254e8..2efff3d 100644
--- a/xxxterm.c
+++ b/xxxterm.c
@@ -148,6 +148,8 @@ TAILQ_HEAD(command_list, command_entry);
 #define XT_MARK_SET		(0)
 #define XT_MARK_GOTO		(1)
 
+#define XT_GO_UP_ROOT		(999)
+
 #define XT_TAB_LAST		(-4)
 #define XT_TAB_FIRST		(-3)
 #define XT_TAB_PREV		(-2)
@@ -588,6 +590,9 @@ buffers_make_list(void)
 void
 show_buffers(struct tab *t)
 {
+	if (gtk_widget_get_visible(GTK_WIDGET(t->buffers)))
+		return;
+
 	buffers_make_list();
 	gtk_widget_show(t->buffers);
 	gtk_widget_grab_focus(GTK_WIDGET(t->buffers));
@@ -4763,17 +4768,21 @@ qmark(struct tab *t, struct karg *arg)
 int
 go_up(struct tab *t, struct karg *args)
 {
-	int		 levels;
+	int		levels;
 	char		*uri;
 	char		*tmp;
+	char		*p;
 
-	levels = atoi(args->s);
-	if (levels == 0)
+	if (args->i == XT_GO_UP_ROOT)
+		levels = XT_GO_UP_ROOT;
+	else if ((levels = atoi(args->s)) == 0)
 		levels = 1;
 
-	uri = g_strdup(webkit_web_view_get_uri(t->wv));
+	uri = g_strdup(get_uri(t));
+
 	if ((tmp = strstr(uri, XT_PROTO_DELIM)) == NULL)
 		return (1);
+
 	tmp += strlen(XT_PROTO_DELIM);
 
 	/* if an uri starts with a slash, leave it alone (for file:///) */
@@ -4781,8 +4790,6 @@ go_up(struct tab *t, struct karg *args)
 		tmp++;
 
 	while (levels--) {
-		char	*p;
-
 		p = strrchr(tmp, '/');
 		if (p != NULL)
 			*p = '\0';
@@ -4858,6 +4865,7 @@ struct buffercmd {
 	regex_t		cregex;
 } buffercmds[] = {
 	{ "^[0-9]*gu$",		XT_PRE_MAYBE,	"gu",	go_up,		0 },
+	{ "^gU$",		XT_PRE_NO,	"gU",	go_up,		XT_GO_UP_ROOT },
 	{ "^gg$",		XT_PRE_NO,	"gg",	move,		XT_MOVE_TOP },
 	{ "^gG$",		XT_PRE_NO,	"gG",	move,		XT_MOVE_BOTTOM },
 	{ "^[0-9]+%$",		XT_PRE_YES,	"%",	move,		XT_MOVE_PERCENT },
@@ -4927,6 +4935,11 @@ buffercmd_addkey(struct tab *t, guint keyval)
 	int			i, c, match ;
 	char			s[XT_BUFCMD_SZ];
 
+	if (gtk_widget_get_visible(GTK_WIDGET(t->buffers))) {
+		buffercmd_abort(t);
+		return (XT_CB_PASSTHROUGH);
+	}
+
 	if (keyval == GDK_Escape) {
 		buffercmd_abort(t);
 		return (XT_CB_HANDLED);
@@ -5924,7 +5937,10 @@ create_window(const gchar *name)
 	GtkWidget		*w;
 
 	w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-	gtk_window_set_default_size(GTK_WINDOW(w), window_width, window_height);
+	if (window_maximize)
+		gtk_window_maximize(GTK_WINDOW(w));
+	else
+		gtk_window_set_default_size(GTK_WINDOW(w), window_width, window_height);
 	gtk_widget_set_name(w, name);
 	gtk_window_set_wmclass(GTK_WINDOW(w), name, "XXXTerm");
 
703999f8a54'>d339004f ^
894360dc ^
3b0f7e10 ^

13f0166a ^
dd11334b ^
3b0f7e10 ^



13f0166a ^
3b0f7e10 ^
5ce97728 ^
f8de2823 ^
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