diff options
Diffstat (limited to 'sb.c')
-rw-r--r-- | sb.c | 57 |
1 files changed, 32 insertions, 25 deletions
@@ -11,7 +11,7 @@ static struct { GtkWidget *win; GtkWidget *bar; GtkWidget *search; GtkWidget *vb #define get_tab(x, page_idx ) (struct tab*)g_object_get_qdata(G_OBJECT( gtk_notebook_get_nth_page( (GtkNotebook*)w.notebook, page_idx ) ), term_data_id); static GQuark term_data_id = 0; -static void activate_uri_entry_cb(GtkWidget* entry, tab *t); +static void activate_uri_entry_cb(GtkWidget* entry, gpointer data); static void update_title(const gchar* title, gchar* linkhover); static void link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data); static void title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data); @@ -23,8 +23,12 @@ static void new_tab(); static void config(); gboolean key_press_cb(GtkWidget *widget, GdkEventKey *event); -static void activate_uri_entry_cb (GtkWidget* entry, tab *t) { - const gchar* uri = gtk_entry_get_text (GTK_ENTRY (w.bar)); +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)); + webkit_web_view_open (t->view, uri); gtk_widget_grab_focus(GTK_WIDGET(t->view)); } @@ -47,14 +51,15 @@ static void title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, update_title (title, NULL); } -static void progress_change_cb (WebKitWebView* page, gint progress, gpointer data) { +static void progress_change_cb (WebKitWebView* p, gint progress, gpointer data) { /*nothing needed yet*/ } -static void load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) { +static void load_commit_cb (WebKitWebView* p, WebKitWebFrame* frame, gpointer data) { const gchar* uri = webkit_web_frame_get_uri(frame); - if (uri) - gtk_entry_set_text (GTK_ENTRY (w.bar), uri); + //gint page = gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook)); + + gtk_entry_set_text (GTK_ENTRY (w.bar), uri); } static void destroy_cb (GtkWidget* widget, gpointer data) { @@ -68,6 +73,7 @@ static void go_cb (gboolean b) { if (b) { webkit_web_view_go_forward(t->view); } else { webkit_web_view_go_back(t->view); } } + static void new_tab() { /*seperate function so it will be easier to setup the webkit crap*/ tab *t; @@ -86,7 +92,7 @@ static void new_tab() { if ( gtk_notebook_get_n_pages(GTK_NOTEBOOK(w.notebook)) == 1) { } if (index == 0) { - gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), FALSE); + //gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), FALSE); } else { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), TRUE); } @@ -103,49 +109,50 @@ static void new_tab() { g_object_set (G_OBJECT(t->settings), "enable-java-applet", FALSE, NULL); g_object_set (G_OBJECT(t->settings), "print-backgrounds", FALSE, NULL); webkit_web_view_set_settings (WEBKIT_WEB_VIEW(t->view), t->settings); + + gtk_widget_show_all(w.win); } static void config() { - term_data_id = g_quark_from_static_string("mt"); + term_data_id = g_quark_from_static_string("sb"); /*sb is orginized with a vbox. much the simplest way to orginize things*/ + w.vbox = gtk_vbox_new(FALSE, 0); - /*entry bar*/ + w.notebook = gtk_notebook_new(); w.bar = gtk_entry_new (); - gtk_entry_set_has_frame(GTK_ENTRY(w.bar), FALSE); - g_signal_connect (G_OBJECT (w.bar), "activate", G_CALLBACK (activate_uri_entry_cb), NULL); - gtk_box_pack_start (GTK_BOX (w.vbox), w.bar, FALSE, FALSE, 0); + gtk_entry_set_has_frame(GTK_ENTRY(w.bar), FALSE); + gtk_notebook_set_scrollable(GTK_NOTEBOOK(w.notebook), TRUE); + + g_signal_connect (G_OBJECT (w.bar), "activate", G_CALLBACK (activate_uri_entry_cb), NULL); - /*notebook*/ - w.notebook = gtk_notebook_new(); - gtk_box_pack_start(GTK_BOX(w.vbox), w.notebook, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX (w.vbox), w.bar, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(w.vbox), w.notebook, TRUE, TRUE, 0); /* status bar*/ - w.status = gtk_statusbar_new(); - gtk_box_pack_start(GTK_BOX(w.vbox), w.status, FALSE, FALSE, 0); + //w.status = gtk_statusbar_new(); + //gtk_box_pack_start(GTK_BOX(w.vbox), w.status, FALSE, FALSE, 0); - /*window initialization & callbacks*/ w.win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + //gtk_window_set_default_size(GTK_WINDOW(w.win), 800, 800); + g_signal_connect (G_OBJECT (w.win), "destroy", G_CALLBACK (destroy_cb), NULL); g_signal_connect(w.win, "key-press-event", G_CALLBACK(key_press_cb), NULL); gtk_container_add (GTK_CONTAINER (w.win), w.vbox); - gtk_window_set_default_size(GTK_WINDOW(w.win), 800, 800); - - /*open argument, or default page*/ - //gtk_widget_grab_focus (GTK_WIDGET (w.view)); - new_tab(); + new_tab(); gtk_widget_show_all (w.win); } gboolean key_press_cb (GtkWidget *widget, GdkEventKey *event) { if (event->state == GDK_CONTROL_MASK) { - + if (gdk_keyval_to_lower(event->keyval) == GDK_f) { gtk_widget_grab_focus(GTK_WIDGET(w.bar)); return TRUE; } if (gdk_keyval_to_lower(event->keyval) == GDK_l) { gtk_widget_grab_focus(GTK_WIDGET(w.bar)); return TRUE; } 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_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; } |