diff options
author | mutantturkey <crazycal00@gmail.com> | 2010-05-06 17:43:21 -0400 |
---|---|---|
committer | mutantturkey <crazycal00@gmail.com> | 2010-05-06 17:43:21 -0400 |
commit | 0d891bed50a361c09e688778f87101c056623dbb (patch) | |
tree | 88ee65b60d8d13651d9fe952d9093a68c114e6b9 | |
parent | 1f12114dee12a95d17baa631ce43029a2de483db (diff) |
close tab
-rw-r--r-- | sb.c | 20 |
1 files changed, 13 insertions, 7 deletions
@@ -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; } |