diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fr-init.c | 1 | ||||
| -rw-r--r-- | src/fr-init.h | 1 | ||||
| -rw-r--r-- | src/fr-window.c | 10 | ||||
| -rw-r--r-- | src/main.c | 52 | 
4 files changed, 34 insertions, 30 deletions
| diff --git a/src/fr-init.c b/src/fr-init.c index 170a613..8a81786 100644 --- a/src/fr-init.c +++ b/src/fr-init.c @@ -164,7 +164,6 @@ FrExtensionType file_ext_type[] = {  }; -GList        *WindowList;  GList        *CommandList;  gint          ForceDirectoryCreation;  GHashTable   *ProgramsCache; diff --git a/src/fr-init.h b/src/fr-init.h index b89e9c8..8c28de9 100644 --- a/src/fr-init.h +++ b/src/fr-init.h @@ -43,7 +43,6 @@ typedef struct {  	char      *temp_dir;  } CommandData; -extern GList                 *WindowList;  extern GList                 *CommandList;  extern gint                   ForceDirectoryCreation;  extern GHashTable            *ProgramsCache; diff --git a/src/fr-window.c b/src/fr-window.c index 1ddc30e..17941db 100644 --- a/src/fr-window.c +++ b/src/fr-window.c @@ -654,11 +654,7 @@ fr_window_finalize (GObject *object)  		window->priv = NULL;  	} -	WindowList = g_list_remove (WindowList, window); - -	G_OBJECT_CLASS (parent_class)->finalize (object); - -	if (WindowList == NULL) { +	if (gtk_application_get_windows (GTK_APPLICATION (g_application_get_default ())) == NULL) {  		if (pixbuf_hash != NULL) {  			g_hash_table_foreach (pixbuf_hash,  					      gh_unref_pixbuf, @@ -674,6 +670,8 @@ fr_window_finalize (GObject *object)  			tree_pixbuf_hash = NULL;  		}  	} + +	G_OBJECT_CLASS (parent_class)->finalize (object);  } @@ -812,8 +810,6 @@ fr_window_init (FrWindow *window)  			  "unrealize",  			  G_CALLBACK (fr_window_unrealized),  			  NULL); - -	WindowList = g_list_prepend (WindowList, window);  } @@ -33,7 +33,6 @@  #include "fr-init.h" -GList        *WindowList = NULL;  gint          ForceDirectoryCreation;  static char **remaining_args; @@ -241,9 +240,11 @@ activate_cb (GApplication *application)  {  	GList *link; -	for (link = WindowList; link; link = link->next) { -		FrWindow *window = link->data; -		gtk_widget_show (GTK_WIDGET (window)); +	for (link = gtk_application_get_windows (GTK_APPLICATION (application)); +	     link != NULL; +	     link = link->next) +	{ +		gtk_widget_show (GTK_WIDGET (link->data));  	}  } @@ -253,9 +254,9 @@ fr_save_state (EggSMClient *client, GKeyFile *state, gpointer user_data)  {  	/* discard command is automatically set by EggSMClient */ -	GList *window; -	const char *argv[2] = { NULL }; -	guint i; +	const char   *argv[2] = { NULL }; +	GApplication *application; +	guint         i = 0;  	/* restart command */  	argv[0] = program_argv0; @@ -264,21 +265,30 @@ fr_save_state (EggSMClient *client, GKeyFile *state, gpointer user_data)  	egg_sm_client_set_restart_command (client, 1, argv);  	/* state */ -	for (window = WindowList, i = 0; window; window = window->next, i++) { -		FrWindow *session = window->data; -		gchar *key; - -		key = g_strdup_printf ("archive%d", i); -		if ((session->archive == NULL) || (session->archive->file == NULL)) { -			g_key_file_set_string (state, "Session", key, ""); -		} else { -			gchar *uri; - -			uri = g_file_get_uri (session->archive->file); -			g_key_file_set_string (state, "Session", key, uri); -			g_free (uri); +	application = g_application_get_default (); +	if (application != NULL) { +		GList *window; + +		for (window = gtk_application_get_windows (GTK_APPLICATION (application)), i = 0; +		     window != NULL; +		     window = window->next, i++) +		{ +			FrWindow *session = window->data; +			gchar *key; + +			key = g_strdup_printf ("archive%d", i); +			if ((session->archive == NULL) || (session->archive->file == NULL)) { +				g_key_file_set_string (state, "Session", key, ""); +			} +			else { +				gchar *uri; + +				uri = g_file_get_uri (session->archive->file); +				g_key_file_set_string (state, "Session", key, uri); +				g_free (uri); +			} +			g_free (key);  		} -		g_free (key);  	}  	g_key_file_set_integer (state, "Session", "archives", i); | 
