Commit 22a59d7e6576150651548f2dd9e96bf7385ed487

Authored by Perry Werneck
1 parent b962a055

Still working on command line parser.

Showing 1 changed file with 18 additions and 9 deletions   Show diff stats
src/objects/application/open.c
@@ -71,16 +71,24 @@ gchar * v3270_keyfile_find(const gchar *name) { @@ -71,16 +71,24 @@ gchar * v3270_keyfile_find(const gchar *name) {
71 } 71 }
72 72
73 /// @brief Open session file 73 /// @brief Open session file
74 -static void open(GtkApplication *application, const gchar *filename) { 74 +static void open(GtkApplication *application, GtkWindow **window, const gchar *filename) {
75 75
76 g_message("Opening '%s'",filename); 76 g_message("Opening '%s'",filename);
77 77
78 - GtkWindow *window = GTK_WINDOW(pw3270_application_window_new(application, filename));  
79 - gtk_window_present(window); 78 + if(*window) {
  79 +
  80 + // Already open a window, open in new tab.
  81 + pw3270_application_window_new_tab(GTK_WIDGET(*window), filename);
  82 +
  83 + } else {
  84 + // It's a new window
  85 + *window = GTK_WINDOW(pw3270_application_window_new(application, filename));
  86 +
  87 + }
80 88
81 } 89 }
82 90
83 -void pw3270_application_open_file(GtkApplication *application, GFile *file) { 91 +void pw3270_application_open_file(GtkApplication *application, GtkWindow **window, GFile *file) {
84 92
85 // GtkWidget * window = gtk_application_get_active_window(application); 93 // GtkWidget * window = gtk_application_get_active_window(application);
86 g_autofree gchar * scheme = g_file_get_uri_scheme(file); 94 g_autofree gchar * scheme = g_file_get_uri_scheme(file);
@@ -92,7 +100,7 @@ void pw3270_application_open_file(GtkApplication *application, GFile *file) { @@ -92,7 +100,7 @@ void pw3270_application_open_file(GtkApplication *application, GFile *file) {
92 100
93 // The file exists, load it. 101 // The file exists, load it.
94 g_autofree gchar *filename = g_file_get_path(file); 102 g_autofree gchar *filename = g_file_get_path(file);
95 - open(application,filename); 103 + open(application,window,filename);
96 104
97 } else { 105 } else {
98 106
@@ -101,7 +109,7 @@ void pw3270_application_open_file(GtkApplication *application, GFile *file) { @@ -101,7 +109,7 @@ void pw3270_application_open_file(GtkApplication *application, GFile *file) {
101 g_autofree gchar * filename = v3270_keyfile_find(basename); 109 g_autofree gchar * filename = v3270_keyfile_find(basename);
102 110
103 if(filename) { 111 if(filename) {
104 - open(application,filename); 112 + open(application,window,filename);
105 } else { 113 } else {
106 g_warning("Cant find session '%s'",basename); 114 g_warning("Cant find session '%s'",basename);
107 } 115 }
@@ -124,13 +132,14 @@ void pw3270_application_open_file(GtkApplication *application, GFile *file) { @@ -124,13 +132,14 @@ void pw3270_application_open_file(GtkApplication *application, GFile *file) {
124 void pw3270_application_open(GApplication *application, GFile **files, gint n_files, const gchar G_GNUC_UNUSED(*hint)) { 132 void pw3270_application_open(GApplication *application, GFile **files, gint n_files, const gchar G_GNUC_UNUSED(*hint)) {
125 133
126 gint file; 134 gint file;
  135 + GtkWindow *window = NULL;
127 136
128 debug("\n\n%s files=%d",__FUNCTION__,n_files); 137 debug("\n\n%s files=%d",__FUNCTION__,n_files);
129 138
130 for(file = 0; file < n_files; file++) { 139 for(file = 0; file < n_files; file++) {
131 140
132 debug("%s(%d,%p)",__FUNCTION__,file,files[file]); 141 debug("%s(%d,%p)",__FUNCTION__,file,files[file]);
133 - pw3270_application_open_file(GTK_APPLICATION(application),files[file]); 142 + pw3270_application_open_file(GTK_APPLICATION(application),&window,files[file]);
134 143
135 /* 144 /*
136 145
@@ -209,8 +218,8 @@ void pw3270_application_open(GApplication *application, GFile **files, gint n_fi @@ -209,8 +218,8 @@ void pw3270_application_open(GApplication *application, GFile **files, gint n_fi
209 */ 218 */
210 } 219 }
211 220
212 -// if(window)  
213 -// gtk_window_present(GTK_WINDOW(window)); 221 + if(window)
  222 + gtk_window_present(GTK_WINDOW(window));
214 223
215 } 224 }
216 225