View | Details | Raw Unified | Return to bug 48040
Collapse All | Expand All

(-)a/glib/gio/gdesktopappinfo.c (+19 lines)
Lines 758-763 merge_directory_results (void) Link Here
758
  static_search_results_size = 0;
758
  static_search_results_size = 0;
759
}
759
}
760
760
761
static void
762
apps_merge (gchar      *key,
763
            gchar      *value,
764
            GHashTable *user_data)
765
{
766
  if (!g_hash_table_lookup(user_data, key))
767
    {
768
      g_hash_table_insert (user_data, key, g_strdup (value));
769
      return;
770
    }
771
}
772
761
/* Support for unindexed DesktopFileDirs {{{2 */
773
/* Support for unindexed DesktopFileDirs {{{2 */
762
static void
774
static void
763
get_apps_from_dir (GHashTable **apps,
775
get_apps_from_dir (GHashTable **apps,
Lines 772-777 get_apps_from_dir (GHashTable **apps, Link Here
772
  if (dir == NULL)
784
  if (dir == NULL)
773
    return;
785
    return;
774
786
787
  GHashTable *apps_fake = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
788
775
  while ((basename = g_dir_read_name (dir)) != NULL)
789
  while ((basename = g_dir_read_name (dir)) != NULL)
776
    {
790
    {
777
      gchar *filename;
791
      gchar *filename;
Lines 788-793 get_apps_from_dir (GHashTable **apps, Link Here
788
            *apps = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
802
            *apps = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
789
803
790
          g_hash_table_insert (*apps, app_name, g_strdup (filename));
804
          g_hash_table_insert (*apps, app_name, g_strdup (filename));
805
806
          g_hash_table_insert (apps_fake, g_strdup (basename), g_strdup (filename));
791
        }
807
        }
792
      else if (g_file_test (filename, G_FILE_TEST_IS_DIR))
808
      else if (g_file_test (filename, G_FILE_TEST_IS_DIR))
793
        {
809
        {
Lines 801-806 get_apps_from_dir (GHashTable **apps, Link Here
801
      g_free (filename);
817
      g_free (filename);
802
    }
818
    }
803
819
820
  g_hash_table_foreach (apps_fake, (GHFunc) apps_merge, *apps);
821
  g_free (apps_fake);
822
804
  g_dir_close (dir);
823
  g_dir_close (dir);
805
}
824
}
806
825

Return to bug 48040