void document_manager_switch_to_file_or_open(DocumentManager *docmg, gchar *filename, gint line_number) { gphpedit_debug(DEBUG_DOC_MANAGER); if (!docmg) return ; DocumentManagerDetails *docmgdet = DOCUMENT_MANAGER_GET_PRIVATE(docmg); Document *document; GSList *walk; /* need to check if filename is local before adding to the list */ filename = g_strdup(filename); for (walk = docmgdet->editors; walk!=NULL; walk = g_slist_next(walk)) { document = walk->data; gchar *docfilename; GFile *file; g_object_get(document, "GFile", &file, NULL); docfilename = g_file_get_uri(file); gchar *filename_uri = filename_get_uri(filename); if (g_strcmp0(docfilename, filename_uri)==0) { GtkWidget *document_widget; g_object_get(document, "editor_widget", &document_widget, NULL); gtk_notebook_set_current_page( GTK_NOTEBOOK(main_window.notebook_editor), gtk_notebook_page_num(GTK_NOTEBOOK(main_window.notebook_editor), document_widget)); documentable_goto_line(DOCUMENTABLE(docmgdet->current_document), line_number); g_free(docfilename); return ; } g_free(filename_uri); g_free(docfilename); } document_manager_add_new_document(docmg, TAB_FILE, filename, line_number); register_file_opened(filename); g_free(filename); return ; }
static void goto_line(gchar *text) { Documentable *doc = document_manager_get_current_documentable(main_window.docmg); if (doc) documentable_goto_line(doc, atoi(text)); }