/** * add handlers to factory widgets * \param g the scaffolding to attach handlers to * \param i the toolbar item id */ void nsgtk_toolbar_set_handler(nsgtk_scaffolding *g, nsgtk_toolbar_button i) { switch(i){ case URL_BAR_ITEM: nsgtk_scaffolding_update_url_bar_ref(g); g_signal_connect(GTK_WIDGET(nsgtk_scaffolding_urlbar(g)), "activate", G_CALLBACK( nsgtk_window_url_activate_event), g); g_signal_connect(GTK_WIDGET(nsgtk_scaffolding_urlbar(g)), "changed", G_CALLBACK( nsgtk_window_url_changed), g); break; case THROBBER_ITEM: nsgtk_scaffolding_update_throbber_ref(g); break; case WEBSEARCH_ITEM: nsgtk_scaffolding_update_websearch_ref(g); g_signal_connect(GTK_WIDGET(nsgtk_scaffolding_websearch(g)), "activate", G_CALLBACK( nsgtk_websearch_activate), g); g_signal_connect(GTK_WIDGET(nsgtk_scaffolding_websearch(g)), "button-press-event", G_CALLBACK( nsgtk_websearch_clear), g); break; default: if ((nsgtk_scaffolding_button(g, i)->bhandler != NULL) && (nsgtk_scaffolding_button(g, i)->button != NULL)) g_signal_connect(nsgtk_scaffolding_button(g, i)-> button, "clicked", G_CALLBACK(nsgtk_scaffolding_button(g, i)->bhandler), g); break; } }
gboolean nsgtk_websearch_clear(GtkWidget *widget, GdkEventFocus *f, gpointer data) { struct nsgtk_scaffolding *g = (struct nsgtk_scaffolding *)data; gtk_editable_select_region(GTK_EDITABLE( nsgtk_scaffolding_websearch(g)), 0, -1); gtk_widget_grab_focus(GTK_WIDGET(nsgtk_scaffolding_websearch(g))); return TRUE; }
gboolean nsgtk_websearch_activate(GtkWidget *widget, gpointer data) { struct nsgtk_scaffolding *g = data; nserror ret; nsurl *url; ret = search_web_omni( gtk_entry_get_text(GTK_ENTRY(nsgtk_scaffolding_websearch(g))), SEARCH_WEB_OMNI_SEARCHONLY, &url); if (ret == NSERROR_OK) { temp_open_background = 0; ret = browser_window_create( BW_CREATE_HISTORY | BW_CREATE_TAB, url, NULL, nsgtk_get_browser_window(nsgtk_scaffolding_top_level(g)), NULL); temp_open_background = -1; nsurl_unref(url); } if (ret != NSERROR_OK) { nsgtk_warning(messages_get_errorcode(ret), 0); } return TRUE; }