diff options
Diffstat (limited to 'callbacks.c')
| -rw-r--r-- | callbacks.c | 44 | 
1 files changed, 32 insertions, 12 deletions
| diff --git a/callbacks.c b/callbacks.c index 23c745b..b4cbd17 100644 --- a/callbacks.c +++ b/callbacks.c @@ -38,7 +38,7 @@ if ( (event->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK ) {  }  if (gtk_widget_has_focus(w.bar) && g == GDK_Escape) {	gtk_widget_grab_focus(GTK_WIDGET(w.notebook)); return TRUE; } -if (gtk_widget_has_focus(w.search)) { +if (gtk_widget_has_focus(w.searchbar)) {  		if (g == GDK_Escape) { show_search(FALSE); focus_view(); return TRUE; }  		if ((g == GDK_Return) && (event->state & GDK_MOD1_MASK) == GDK_MOD1_MASK) { search(NULL, FALSE); }  } @@ -67,6 +67,11 @@ w.hide = FALSE;  } +/* link hovering callback */ +void cb_link_hover (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data) { +if(link != NULL) { gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, link);  } +else { gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, ""); } +}  /* go forward or backwards, simple enough */  void cb_go(gboolean b) { @@ -77,16 +82,32 @@ else { webkit_web_view_go_back(t->view); }  /* when the page load is commited, call this function */ -void cb_commit_load (WebKitWebView* page, WebKitWebFrame* frame, tab *t) { - -const gchar* uri = webkit_web_frame_get_uri(frame); - -if (gtk_notebook_get_current_page(w.notebook) ==  gtk_notebook_page_num(w.notebook, t->scroll)) { -gtk_entry_set_text (GTK_ENTRY (w.bar), uri); -} -FILE *history  = fopen(g_build_filename(g_get_home_dir(), DEFAULT_HISTORY_FILE, NULL), "a+"); -fprintf(history, "%s \n", uri); -fclose(history); +void cb_load_status (GObject* object, GParamSpec* pspec, tab *t) { +   +  const gchar* uri = webkit_web_view_get_uri(t->view); +  WebKitLoadStatus status = webkit_web_view_get_load_status(t->view); +  switch(status) { +    case WEBKIT_LOAD_PROVISIONAL: +     break; +    case WEBKIT_LOAD_COMMITTED: +       +      if (gtk_notebook_get_current_page(w.notebook) ==  gtk_notebook_page_num(w.notebook, t->scroll)) { +        gtk_entry_set_text (GTK_ENTRY (w.bar), uri);  +      } +       +      FILE *history  = fopen(g_build_filename(g_get_home_dir(), DEFAULT_HISTORY_FILE, NULL), "a+"); +      fprintf(history, "%s \n", uri); +      fclose(history); +       +      break; +    case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT: +        break; +    case WEBKIT_LOAD_FINISHED: +        break; +    default: +    case WEBKIT_LOAD_FAILED: +        break; +    }  } @@ -94,7 +115,6 @@ fclose(history);  /* title change callback */  void cb_title_changed(WebKitWebView *v, WebKitWebFrame *f, const char *title, tab *t) {  gchar *tabtitle; -  if (gtk_notebook_get_current_page(w.notebook) ==  gtk_notebook_page_num(w.notebook, t->scroll)) {  gtk_window_set_title(GTK_WINDOW(w.win), g_strconcat(title, NULL));  } | 
