diff --git a/src/include/pw3270/window.h b/src/include/pw3270/window.h index 4c5eacc..b01c879 100644 --- a/src/include/pw3270/window.h +++ b/src/include/pw3270/window.h @@ -62,9 +62,6 @@ /// @brief Create a new terminal tab. GtkWidget * pw3270_application_window_new_tab(GtkWidget *window, const gchar *session_file); - /// @brief Get the active terminal widget. - GtkWidget * pw3270_window_get_terminal_widget(GtkWidget *window); - /// @brief Get the active session handle. H3270 * pw3270_window_get_session_handle(GtkWidget *window); diff --git a/src/objects/application/open.c b/src/objects/application/open.c index a3d5754..fd0a755 100644 --- a/src/objects/application/open.c +++ b/src/objects/application/open.c @@ -31,33 +31,45 @@ void pw3270_application_open(GApplication *application, GFile **files, gint n_files, const gchar G_GNUC_UNUSED(*hint)) { - GtkWindow * window = gtk_application_get_active_window(GTK_APPLICATION(application)); + GtkWidget * window = GTK_WIDGET(gtk_application_get_active_window(GTK_APPLICATION(application))); gint file; - gint last = -1; for(file = 0; file < n_files; file++) { + g_autofree gchar *path = g_file_get_path(files[file]); + GtkWidget * terminal = NULL; - } + if(!window) { + window = pw3270_application_window_new(GTK_APPLICATION(application), path); + terminal = gtk_window_get_default_widget(GTK_WINDOW(window)); + } else { + terminal = pw3270_application_window_new_tab(window,path); + } - /* + if(!path) { - debug("%s was called with %d files (active_window=%p)", __FUNCTION__, n_files, window); + // It's not a session file descriptor, is it an URL? + g_autofree gchar * scheme = g_file_get_uri_scheme(files[file]); - if(!window) - window = GTK_WINDOW(pw3270_application_window_new(GTK_APPLICATION(application))); + if(!(g_ascii_strcasecmp(scheme,"tn3270") && g_ascii_strcasecmp(scheme,"tn3270s"))) { - // Add tabs to the window - last = pw3270_window_append_page(GTK_WIDGET(window), files[file]); - } + g_autofree gchar * uri = g_file_get_uri(files[file]); + size_t sz = strlen(uri); + + if(sz > 0 && uri[sz-1] == '/') + uri[sz-1] = 0; + v3270_set_url(terminal,uri); - if(last != -1) - pw3270_window_set_current_page(GTK_WIDGET(window),last); + } + + } + + } - */ + if(window) + gtk_window_present(GTK_WINDOW(window)); - gtk_window_present(window); } diff --git a/src/objects/window/window.c b/src/objects/window/window.c index 16121b3..44af6fe 100644 --- a/src/objects/window/window.c +++ b/src/objects/window/window.c @@ -344,6 +344,7 @@ // gtk_window_set_interactive_debugging(TRUE); + return GTK_WIDGET(window); } -- libgit2 0.21.2