aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sb.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/sb.c b/sb.c
index adef01b..dfb50f8 100644
--- a/sb.c
+++ b/sb.c
@@ -20,19 +20,26 @@ static void load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer
static void destroy_cb (GtkWidget* widget, gpointer data);
static void go_cb(gboolean b);
static void new_tab();
+static void close_tab();
static void config();
gboolean key_press_cb(GtkWidget *widget, GdkEventKey *event);
static void activate_uri_entry_cb (GtkWidget* entry, gpointer data) {
- struct tab *t;
- gint page = gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook));
- t = get_tab(NULL, page);
+
const gchar* uri = gtk_entry_get_text (GTK_ENTRY (w.bar));
-
+ struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook)));
webkit_web_view_open (t->view, uri);
gtk_widget_grab_focus(GTK_WIDGET(t->view));
}
+static void close_tab() {
+ struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook)));
+ gtk_notebook_remove_page(GTK_NOTEBOOK(w.notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook)));
+ g_free(t);
+
+ if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(w.notebook)) == 1) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), FALSE); gtk_widget_grab_focus(gtk_notebook_get_nth_page(GTK_NOTEBOOK(w.notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook)))); }
+ if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(w.notebook)) == 0) { gtk_main_quit(); }
+ }
static void update_title (const gchar* title, gchar* linkhover) {
if (linkhover) title = g_strdup(linkhover);
@@ -68,9 +75,7 @@ static void destroy_cb (GtkWidget* widget, gpointer data) {
}
static void go_cb (gboolean b) {
- gint page = gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook));
- struct tab *t;
- t = get_tab(NULL, page);
+ struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook)));
if (b) { webkit_web_view_go_forward(t->view); }
else { webkit_web_view_go_back(t->view); }
}
@@ -154,6 +159,7 @@ if (event->state == GDK_CONTROL_MASK) {
if (gdk_keyval_to_lower(event->keyval) == GDK_j) { go_cb(FALSE); return TRUE; }
if (gdk_keyval_to_lower(event->keyval) == GDK_k) { go_cb(TRUE); return TRUE; }
if (gdk_keyval_to_lower(event->keyval) == GDK_t) { new_tab(); return TRUE; }
+ if (gdk_keyval_to_lower(event->keyval) == GDK_w) { close_tab(); return TRUE; }
//if (gdk_keyval_to_lower(event->keyval) == GDK_bracketright) { webkit_web_view_set_zoom_level(t->view, (webkit_web_view_get_zoom_level(t->view) + .05)); return TRUE; }
//if (gdk_keyval_to_lower(event->keyval) == GDK_bracketleft) { webkit_web_view_set_zoom_level(t->view, (webkit_web_view_get_zoom_level(t->view) - .05)); return TRUE; }
else { return FALSE; }