]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkrecentmanager.c
Improve AtkAction implementations
[~andy/gtk] / gtk / gtkrecentmanager.c
index a33b58a012f7d25be43dd606fa767057c557df55..d6b23e7c2e52b977f6db58ce0e715efea040d9e9 100644 (file)
@@ -14,8 +14,7 @@
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /**
@@ -281,7 +280,7 @@ gtk_recent_manager_class_init (GtkRecentManagerClass *klass)
   gobject_class->finalize = gtk_recent_manager_finalize;
   
   /**
-   * GtkRecentManager:filename
+   * GtkRecentManager:filename:
    *
    * The full path to the file to be used to store and read the recently
    * used resources list
@@ -297,7 +296,7 @@ gtk_recent_manager_class_init (GtkRecentManagerClass *klass)
                                                        (G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)));
 
   /**
-   * GtkRecentManager:size
+   * GtkRecentManager:size:
    * 
    * The size of the recently used resources list.
    *
@@ -314,7 +313,7 @@ gtk_recent_manager_class_init (GtkRecentManagerClass *klass)
                                                     G_PARAM_READABLE));
   
   /**
-   * GtkRecentManager::changed
+   * GtkRecentManager::changed:
    * @recent_manager: the recent manager
    *
    * Emitted when the current recently used resources manager changes its
@@ -540,6 +539,18 @@ gtk_recent_manager_monitor_changed (GFileMonitor      *monitor,
 static gchar *
 get_default_filename (void)
 {
+  if (g_mkdir_with_parents (g_get_user_data_dir (), 0755) == -1)
+    {
+      int saved_errno = errno;
+
+      g_critical ("Unable to create user data directory '%s' for storing "
+                  "the recently used files list: %s",
+                  g_get_user_data_dir (),
+                  g_strerror (saved_errno));
+
+      return NULL;
+    }
+
   return g_build_filename (g_get_user_data_dir (),
                            GTK_RECENTLY_USED_FILE,
                            NULL);
@@ -729,21 +740,11 @@ gtk_recent_manager_add_item_query_info (GObject      *source_object,
   GtkRecentManager *manager = user_data;
   GtkRecentData recent_data;
   GFileInfo *file_info;
-  gchar *uri;
-  GError *error;
+  gchar *uri, *basename;
 
   uri = g_file_get_uri (file);
 
-  error = NULL;
-  file_info = g_file_query_info_finish (file, res, &error);
-  if (error)
-    {
-      g_warning ("Unable to retrieve the file info for `%s': %s",
-                 uri,
-                 error->message);
-      g_error_free (error);
-      goto out;
-    }
+  file_info = g_file_query_info_finish (file, res, NULL); /* NULL-GError */
 
   recent_data.display_name = NULL;
   recent_data.description = NULL;
@@ -763,7 +764,11 @@ gtk_recent_manager_add_item_query_info (GObject      *source_object,
       g_object_unref (file_info);
     }
   else
-    recent_data.mime_type = g_strdup (GTK_RECENT_DEFAULT_MIME);
+    {
+      basename = g_file_get_basename (file);
+      recent_data.mime_type = g_content_type_guess (basename, NULL, 0, NULL);
+      g_free (basename);
+    }
 
   recent_data.app_name = g_strdup (g_get_application_name ());
   recent_data.app_exec = g_strjoin (" ", g_get_prgname (), "%u", NULL);
@@ -785,7 +790,6 @@ gtk_recent_manager_add_item_query_info (GObject      *source_object,
   g_free (recent_data.app_name);
   g_free (recent_data.app_exec);
 
-out:
   g_object_unref (manager);
   g_free (uri);
 }
@@ -1539,7 +1543,7 @@ gtk_recent_info_unref (GtkRecentInfo *info)
  *
  * Since: 2.10
  */
-G_CONST_RETURN gchar *
+const gchar *
 gtk_recent_info_get_uri (GtkRecentInfo *info)
 {
   g_return_val_if_fail (info != NULL, NULL);
@@ -1559,7 +1563,7 @@ gtk_recent_info_get_uri (GtkRecentInfo *info)
  *
  * Since: 2.10
  */
-G_CONST_RETURN gchar *
+const gchar *
 gtk_recent_info_get_display_name (GtkRecentInfo *info)
 {
   g_return_val_if_fail (info != NULL, NULL);
@@ -1581,7 +1585,7 @@ gtk_recent_info_get_display_name (GtkRecentInfo *info)
  *
  * Since: 2.10
  **/
-G_CONST_RETURN gchar *
+const gchar *
 gtk_recent_info_get_description (GtkRecentInfo *info)
 {
   g_return_val_if_fail (info != NULL, NULL);
@@ -1600,7 +1604,7 @@ gtk_recent_info_get_description (GtkRecentInfo *info)
  *
  * Since: 2.10
  */
-G_CONST_RETURN gchar *
+const gchar *
 gtk_recent_info_get_mime_type (GtkRecentInfo *info)
 {
   g_return_val_if_fail (info != NULL, NULL);
@@ -2037,7 +2041,7 @@ gboolean
 gtk_recent_info_exists (GtkRecentInfo *info)
 {
   gchar *filename;
-  struct stat stat_buf;
+  GStatBuf stat_buf;
   gboolean retval = FALSE;
   
   g_return_val_if_fail (info != NULL, FALSE);
@@ -2049,7 +2053,7 @@ gtk_recent_info_exists (GtkRecentInfo *info)
   filename = g_filename_from_uri (info->uri, NULL, NULL);
   if (filename)
     {
-      if (stat (filename, &stat_buf) == 0)
+      if (g_stat (filename, &stat_buf) == 0)
         retval = TRUE;
      
       g_free (filename);