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 71 }
72 72  
73 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 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 93 // GtkWidget * window = gtk_application_get_active_window(application);
86 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 100  
93 101 // The file exists, load it.
94 102 g_autofree gchar *filename = g_file_get_path(file);
95   - open(application,filename);
  103 + open(application,window,filename);
96 104  
97 105 } else {
98 106  
... ... @@ -101,7 +109,7 @@ void pw3270_application_open_file(GtkApplication *application, GFile *file) {
101 109 g_autofree gchar * filename = v3270_keyfile_find(basename);
102 110  
103 111 if(filename) {
104   - open(application,filename);
  112 + open(application,window,filename);
105 113 } else {
106 114 g_warning("Cant find session '%s'",basename);
107 115 }
... ... @@ -124,13 +132,14 @@ void pw3270_application_open_file(GtkApplication *application, GFile *file) {
124 132 void pw3270_application_open(GApplication *application, GFile **files, gint n_files, const gchar G_GNUC_UNUSED(*hint)) {
125 133  
126 134 gint file;
  135 + GtkWindow *window = NULL;
127 136  
128 137 debug("\n\n%s files=%d",__FUNCTION__,n_files);
129 138  
130 139 for(file = 0; file < n_files; file++) {
131 140  
132 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 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  
... ...