--- /dev/null
+diff -urN aa/desktop-file-utils-0.7/src/menu-entries.c desktop-file-utils-0.7/src/menu-entries.c
+--- aa/desktop-file-utils-0.7/src/menu-entries.c 2004-07-28 21:48:48.387936296 +0200
++++ desktop-file-utils-0.7/src/menu-entries.c 2004-07-28 22:03:14.458273592 +0200
+@@ -1938,6 +1938,56 @@
+
+ /* End checking for NoDisplay */
+
++ if (!show)
++ {
++ e = entry_new (ENTRY_DIRECTORY, basename, filename, show);
++ g_free (str);
++ return e;
++ }
++
++ /* Check for OnlyShowIn */
++ char *onlyshowin;
++
++ show = TRUE;
++
++ onlyshowin = find_value (str, "OnlyShowIn");
++
++ if (onlyshowin != NULL)
++ {
++ char **split;
++ int i;
++
++ show = FALSE;
++
++ split = string_list_from_desktop_value (onlyshowin);
++ i = 0;
++ while (split[i] != NULL)
++ {
++ if (strcmp (split[i], "GNOME") == 0)
++ {
++ show = TRUE;
++ break;
++ }
++
++ ++i;
++ }
++
++ if (!show)
++ menu_verbose ("Not showing \"%s\" due to OnlyShowIn=%s\n",
++ filename, onlyshowin);
++
++ g_strfreev (split);
++ g_free (onlyshowin);
++ }
++ /* End checking for OnlyShowIn */
++
++ if (!show)
++ {
++ e = entry_new (ENTRY_DIRECTORY, basename, filename, show);
++ g_free (str);
++ return e;
++ }
++
+ e = entry_new (ENTRY_DIRECTORY, basename, filename, show);
+
+ g_free (str);