static void shell_action_new_window_cb (GSimpleAction *action, GVariant *parameter, EShell *shell) { GtkApplication *application; GList *list; const gchar *view_name; application = GTK_APPLICATION (shell); list = gtk_application_get_windows (application); view_name = g_variant_get_string (parameter, NULL); /* Present the first EShellWindow showing 'view_name'. */ while (list != NULL) { GtkWindow *window = GTK_WINDOW (list->data); if (E_IS_SHELL_WINDOW (window)) { const gchar *active_view; active_view = e_shell_window_get_active_view ( E_SHELL_WINDOW (window)); if (g_strcmp0 (active_view, view_name) == 0) { gtk_window_present (window); return; } } list = g_list_next (list); } /* No suitable EShellWindow found, so create one. */ e_shell_create_shell_window (shell, view_name); }
static gboolean idle_cb (const gchar * const *uris) { EShell *shell; shell = e_shell_get_default (); /* These calls do the right thing when another Evolution * process is running. */ if (uris != NULL && *uris != NULL) { if (e_shell_handle_uris (shell, uris, import_uris) == 0) gtk_main_quit (); } else { e_shell_create_shell_window (shell, requested_view); } /* If another Evolution process is running, we're done. */ if (g_application_get_is_remote (G_APPLICATION (shell))) gtk_main_quit (); return FALSE; }