diff --git a/ChangeLog b/ChangeLog
index 4881e38a4b08ac1852b239514b539b34f349823b..c5867b7d1e2ab13ab814819ad261dcc1b61bc331 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2009-05-04	Travis Watkins <amaranth@ubuntu.com>
+
+	* docs/reference/libxfce4menu-sections.txt,
+	  libxfce4menu/xfce-menu-directory.{c,h},
+	  libxfce4menu/xfce-menu-element.{c,h},
+	  libxfce4menu/xfce-menu-item.{c,h}, 
+	  libxfce4menu/xfce-menu-separator.c,
+	  libxfce4menu/xfce-menu.c: Add xfce_menu_element_get_no_display() and
+	  xfce_menu_element_get_visible_in_environment() to the
+	  XfceMenuElement interface. Implement this in XfceMenu, 
+	  XfceMenuDirectory, XfceMenuItem and XfceMenuSeparator. 
+
 2009-05-03	Travis Watkins <amaranth@ubuntu.com>
 
 	* docs/reference/libxfce4menu-sections.txt, libxfce4menu/xfce-menu.c,
diff --git a/docs/reference/libxfce4menu-sections.txt b/docs/reference/libxfce4menu-sections.txt
index c7c616e29babb181d3e3df059bba89987048430e..7c0af6a0e8280bb8ccdef16ae064fb593af8e2d4 100644
--- a/docs/reference/libxfce4menu-sections.txt
+++ b/docs/reference/libxfce4menu-sections.txt
@@ -34,7 +34,7 @@ xfce_menu_directory_set_icon
 xfce_menu_directory_get_no_display
 xfce_menu_directory_set_no_display
 xfce_menu_directory_get_hidden
-xfce_menu_directory_show_in_environment
+xfce_menu_directory_get_show_in_environment
 xfce_menu_directory_get_visible
 xfce_menu_directory_equal
 <SUBSECTION Standard>
@@ -189,6 +189,8 @@ xfce_menu_element_get_name
 xfce_menu_element_get_comment
 xfce_menu_element_get_icon_name
 xfce_menu_element_get_visible
+xfce_menu_element_get_show_in_environment
+xfce_menu_element_get_no_display
 <SUBSECTION Standard>
 XFCE_MENU_ELEMENT
 XFCE_IS_MENU_ELEMENT
@@ -230,7 +232,7 @@ xfce_menu_item_set_supports_startup_notification
 xfce_menu_item_get_categories
 xfce_menu_item_set_categories
 xfce_menu_item_has_category
-xfce_menu_item_show_in_environment
+xfce_menu_item_get_show_in_environment
 xfce_menu_item_only_show_in_environment
 xfce_menu_item_ref
 xfce_menu_item_unref
diff --git a/libxfce4menu/xfce-menu-directory.c b/libxfce4menu/xfce-menu-directory.c
index 450b4ec93448ab32dbad6f83a7e8a985cb869f65..6fe2c1eed086dcdb7579b4474eb6f1830458ad71 100644
--- a/libxfce4menu/xfce-menu-directory.c
+++ b/libxfce4menu/xfce-menu-directory.c
@@ -570,7 +570,7 @@ xfce_menu_directory_get_hidden (XfceMenuDirectory *directory)
 
 
 gboolean
-xfce_menu_directory_show_in_environment (XfceMenuDirectory *directory)
+xfce_menu_directory_get_show_in_environment (XfceMenuDirectory *directory)
 {
   const gchar *env;
   gboolean     show = TRUE;
@@ -628,7 +628,7 @@ xfce_menu_directory_get_visible (XfceMenuDirectory *directory)
 {
   g_return_val_if_fail (XFCE_IS_MENU_DIRECTORY (directory), FALSE);
 
-  if (!xfce_menu_directory_show_in_environment (directory))
+  if (!xfce_menu_directory_get_show_in_environment (directory))
     return FALSE;
   else if (xfce_menu_directory_get_hidden (directory))
     return FALSE;
diff --git a/libxfce4menu/xfce-menu-directory.h b/libxfce4menu/xfce-menu-directory.h
index 7bc71e2e3350794e422f83bcac010cb14f00b47a..8279c3d052dfae183a9d2a70c22e165da2673676 100644
--- a/libxfce4menu/xfce-menu-directory.h
+++ b/libxfce4menu/xfce-menu-directory.h
@@ -42,26 +42,26 @@ typedef struct _XfceMenuDirectory        XfceMenuDirectory;
 #define XFCE_IS_MENU_DIRECTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XFCE_TYPE_MENU_DIRECTORY))
 #define XFCE_MENU_DIRECTORY_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), XFCE_TYPE_MENU_DIRECTORY, XfceMenuDirectoryClass))
 
-GType                    xfce_menu_directory_get_type            (void) G_GNUC_CONST;
+GType                    xfce_menu_directory_get_type                (void) G_GNUC_CONST;
 
-GFile                   *xfce_menu_directory_get_file            (XfceMenuDirectory *directory);
-const gchar             *xfce_menu_directory_get_name            (XfceMenuDirectory *directory);
-void                     xfce_menu_directory_set_name            (XfceMenuDirectory *directory,
-                                                                  const gchar       *name);
-const gchar             *xfce_menu_directory_get_comment         (XfceMenuDirectory *directory);
-void                     xfce_menu_directory_set_comment         (XfceMenuDirectory *directory,
-                                                                  const gchar       *comment);
-const gchar             *xfce_menu_directory_get_icon            (XfceMenuDirectory *directory);
-void                     xfce_menu_directory_set_icon            (XfceMenuDirectory *directory,
-                                                                  const gchar       *icon);
-gboolean                 xfce_menu_directory_get_no_display      (XfceMenuDirectory *directory);
-void                     xfce_menu_directory_set_no_display      (XfceMenuDirectory *directory,
-                                                                  gboolean           no_display);
-gboolean                 xfce_menu_directory_get_hidden          (XfceMenuDirectory *directory);
-gboolean                 xfce_menu_directory_show_in_environment (XfceMenuDirectory *directory);
-gboolean                 xfce_menu_directory_get_visible         (XfceMenuDirectory *directory);
-gboolean                 xfce_menu_directory_equal               (XfceMenuDirectory *directory,
-                                                                  XfceMenuDirectory *other);
+GFile                   *xfce_menu_directory_get_file                (XfceMenuDirectory *directory);
+const gchar             *xfce_menu_directory_get_name                (XfceMenuDirectory *directory);
+void                     xfce_menu_directory_set_name                (XfceMenuDirectory *directory,
+                                                                      const gchar       *name);
+const gchar             *xfce_menu_directory_get_comment             (XfceMenuDirectory *directory);
+void                     xfce_menu_directory_set_comment             (XfceMenuDirectory *directory,
+                                                                      const gchar       *comment);
+const gchar             *xfce_menu_directory_get_icon                (XfceMenuDirectory *directory);
+void                     xfce_menu_directory_set_icon                (XfceMenuDirectory *directory,
+                                                                      const gchar       *icon);
+gboolean                 xfce_menu_directory_get_no_display          (XfceMenuDirectory *directory);
+void                     xfce_menu_directory_set_no_display          (XfceMenuDirectory *directory,
+                                                                      gboolean           no_display);
+gboolean                 xfce_menu_directory_get_hidden              (XfceMenuDirectory *directory);
+gboolean                 xfce_menu_directory_get_show_in_environment (XfceMenuDirectory *directory);
+gboolean                 xfce_menu_directory_get_visible             (XfceMenuDirectory *directory);
+gboolean                 xfce_menu_directory_equal                   (XfceMenuDirectory *directory,
+                                                                      XfceMenuDirectory *other);
 
 #if defined(LIBXFCE4MENU_COMPILATION)
 void _xfce_menu_directory_init     (void) G_GNUC_INTERNAL;
diff --git a/libxfce4menu/xfce-menu-element.c b/libxfce4menu/xfce-menu-element.c
index a7c76598c600bba0c865d54c337d42c12257eb5f..a504a2801919aa75197a50a2c436316bc467fa47 100644
--- a/libxfce4menu/xfce-menu-element.c
+++ b/libxfce4menu/xfce-menu-element.c
@@ -87,27 +87,36 @@ xfce_menu_element_get_comment (XfceMenuElement *element)
 
 
 const gchar*
-xfce_menu_element_get_comment (XfceMenuElement *element)
+xfce_menu_element_get_icon_name (XfceMenuElement *element)
 {
   g_return_val_if_fail (XFCE_IS_MENU_ELEMENT (element), NULL);
-  return (*XFCE_MENU_ELEMENT_GET_IFACE (element)->get_comment) (element);
+  return (*XFCE_MENU_ELEMENT_GET_IFACE (element)->get_icon_name) (element);
 }
 
 
 
-const gchar*
-xfce_menu_element_get_icon_name (XfceMenuElement *element)
+gboolean
+xfce_menu_element_get_visible (XfceMenuElement *element)
 {
-  g_return_val_if_fail (XFCE_IS_MENU_ELEMENT (element), NULL);
-  return (*XFCE_MENU_ELEMENT_GET_IFACE (element)->get_icon_name) (element);
+  g_return_val_if_fail (XFCE_IS_MENU_ELEMENT (element), FALSE);
+  return (*XFCE_MENU_ELEMENT_GET_IFACE (element)->get_visible) (element);
 }
 
 
 
 gboolean
-xfce_menu_element_get_visible (XfceMenuElement *element)
+xfce_menu_element_get_show_in_environment (XfceMenuElement *element)
 {
   g_return_val_if_fail (XFCE_IS_MENU_ELEMENT (element), FALSE);
-  return (*XFCE_MENU_ELEMENT_GET_IFACE (element)->get_visible) (element);
+  return (*XFCE_MENU_ELEMENT_GET_IFACE (element)->get_show_in_environment) (element);
+}
+
+
+
+gboolean
+xfce_menu_element_get_no_display (XfceMenuElement *element)
+{
+  g_return_val_if_fail (XFCE_IS_MENU_ELEMENT (element), FALSE);
+  return (*XFCE_MENU_ELEMENT_GET_IFACE (element)->get_no_display) (element);
 }
 
diff --git a/libxfce4menu/xfce-menu-element.h b/libxfce4menu/xfce-menu-element.h
index 03c72835907a0d3851be4a38e2b8ba42124c5c52..f653c289bd20ec10b31715d015b8b342fd0d2496 100644
--- a/libxfce4menu/xfce-menu-element.h
+++ b/libxfce4menu/xfce-menu-element.h
@@ -44,18 +44,22 @@ struct _XfceMenuElementIface
   GTypeInterface __parent__;
 
   /* Virtual methods */
-  const gchar *(*get_name)      (XfceMenuElement *element);
-  const gchar *(*get_comment)   (XfceMenuElement *element);
-  const gchar *(*get_icon_name) (XfceMenuElement *element);
-  gboolean     (*get_visible)   (XfceMenuElement *element);
+  const gchar *(*get_name)                (XfceMenuElement *element);
+  const gchar *(*get_comment)             (XfceMenuElement *element);
+  const gchar *(*get_icon_name)           (XfceMenuElement *element);
+  gboolean     (*get_visible)             (XfceMenuElement *element);
+  gboolean     (*get_show_in_environment) (XfceMenuElement *element);
+  gboolean     (*get_no_display)          (XfceMenuElement *element);
 };
 
 GType        xfce_menu_element_get_type      (void) G_GNUC_CONST;
 
-const gchar *xfce_menu_element_get_name      (XfceMenuElement *element);
-const gchar *xfce_menu_element_get_comment   (XfceMenuElement *element);
-const gchar *xfce_menu_element_get_icon_name (XfceMenuElement *element);
-gboolean     xfce_menu_element_get_visible   (XfceMenuElement *element);
+const gchar *xfce_menu_element_get_name                (XfceMenuElement *element);
+const gchar *xfce_menu_element_get_comment             (XfceMenuElement *element);
+const gchar *xfce_menu_element_get_icon_name           (XfceMenuElement *element);
+gboolean     xfce_menu_element_get_visible             (XfceMenuElement *element);
+gboolean     xfce_menu_element_get_show_in_environment (XfceMenuElement *element);
+gboolean     xfce_menu_element_get_no_display          (XfceMenuElement *element);
 
 G_END_DECLS
 
diff --git a/libxfce4menu/xfce-menu-item.c b/libxfce4menu/xfce-menu-item.c
index 5adfeb0186ab87ead228f9e417352aec9139e088..9e67adf3a61674e1bb7ba744d25f72bc594ead53 100644
--- a/libxfce4menu/xfce-menu-item.c
+++ b/libxfce4menu/xfce-menu-item.c
@@ -67,11 +67,13 @@ static void         xfce_menu_item_set_property           (GObject
                                                            guint                 prop_id,
                                                            const GValue         *value,
                                                            GParamSpec           *pspec);
-static const gchar *xfce_menu_item_get_element_name       (XfceMenuElement      *element);
-static const gchar *xfce_menu_item_get_element_comment    (XfceMenuElement      *element);
-static const gchar *xfce_menu_item_get_element_icon_name  (XfceMenuElement      *element);
-static gboolean     xfce_menu_item_get_element_visible    (XfceMenuElement      *element);
 
+static const gchar *xfce_menu_item_get_element_name                (XfceMenuElement      *element);
+static const gchar *xfce_menu_item_get_element_comment             (XfceMenuElement      *element);
+static const gchar *xfce_menu_item_get_element_icon_name           (XfceMenuElement      *element);
+static gboolean     xfce_menu_item_get_element_visible             (XfceMenuElement      *element);
+static gboolean     xfce_menu_item_get_element_show_in_environment (XfceMenuElement *element);
+static gboolean     xfce_menu_item_get_element_no_display          (XfceMenuElement *element);
 
 
 struct _XfceMenuItemClass
@@ -366,6 +368,8 @@ xfce_menu_item_element_init (XfceMenuElementIface *iface)
   iface->get_comment = xfce_menu_item_get_element_comment;
   iface->get_icon_name = xfce_menu_item_get_element_icon_name;
   iface->get_visible = xfce_menu_item_get_element_visible;
+  iface->get_show_in_environment = xfce_menu_item_get_element_show_in_environment;
+  iface->get_no_display = xfce_menu_item_get_element_no_display;
 }
 
 
@@ -1099,7 +1103,7 @@ xfce_menu_item_has_category (XfceMenuItem *item,
 
 
 gboolean
-xfce_menu_item_show_in_environment (XfceMenuItem *item)
+xfce_menu_item_get_show_in_environment (XfceMenuItem *item)
 {
   const gchar *env;
   gboolean     show = TRUE;
@@ -1274,7 +1278,7 @@ xfce_menu_item_get_element_visible (XfceMenuElement *element)
 
   item = XFCE_MENU_ITEM (element);
 
-  if (!xfce_menu_item_show_in_environment (item))
+  if (!xfce_menu_item_get_show_in_environment (item))
     return FALSE;
   else if (xfce_menu_item_get_no_display (item))
     return FALSE;
@@ -1284,3 +1288,21 @@ xfce_menu_item_get_element_visible (XfceMenuElement *element)
   return TRUE;
 }
 
+
+
+gboolean
+xfce_menu_item_get_element_show_in_environment (XfceMenuElement *element)
+{
+  g_return_val_if_fail (XFCE_IS_MENU_ITEM (element), FALSE);
+  return xfce_menu_item_get_show_in_environment (XFCE_MENU_ITEM (element));
+}
+
+
+
+gboolean
+xfce_menu_item_get_element_no_display (XfceMenuElement *element)
+{
+  g_return_val_if_fail (XFCE_IS_MENU_ITEM (element), FALSE);
+  return xfce_menu_item_get_no_display (XFCE_MENU_ITEM (element));
+}
+
diff --git a/libxfce4menu/xfce-menu-item.h b/libxfce4menu/xfce-menu-item.h
index 1d56b218ed15406c3b9d3c997ecbaaad4aaf9904..d39c9943865fb6253189937e9666331f7de7f3a2 100644
--- a/libxfce4menu/xfce-menu-item.h
+++ b/libxfce4menu/xfce-menu-item.h
@@ -88,7 +88,7 @@ void          xfce_menu_item_set_categories                    (XfceMenuItem *it
                                                                 GList        *categories);
 gboolean      xfce_menu_item_has_category                      (XfceMenuItem *item,
                                                                 const gchar  *category);
-gboolean      xfce_menu_item_show_in_environment               (XfceMenuItem *item);
+gboolean      xfce_menu_item_get_show_in_environment           (XfceMenuItem *item);
 gboolean      xfce_menu_item_only_show_in_environment          (XfceMenuItem *item);
 void          xfce_menu_item_ref                               (XfceMenuItem *item);
 void          xfce_menu_item_unref                             (XfceMenuItem *item);
diff --git a/libxfce4menu/xfce-menu-separator.c b/libxfce4menu/xfce-menu-separator.c
index 3471cdbcfb6edd2e4252641e5c2744a39550f193..3e9dfcf794107a9aa83eed6349217ee68961f5f9 100644
--- a/libxfce4menu/xfce-menu-separator.c
+++ b/libxfce4menu/xfce-menu-separator.c
@@ -32,11 +32,13 @@ static void         xfce_menu_separator_class_init            (XfceMenuSeparator
 static void         xfce_menu_separator_element_init          (XfceMenuElementIface   *iface);
 static void         xfce_menu_separator_init                  (XfceMenuSeparator      *separator);
 static void         xfce_menu_separator_finalize              (GObject                *object);
-static const gchar *xfce_menu_separator_get_element_name      (XfceMenuElement        *element);
-static const gchar *xfce_menu_separator_get_element_comment   (XfceMenuElement        *element);
-static const gchar *xfce_menu_separator_get_element_icon_name (XfceMenuElement        *element);
-static gboolean     xfce_menu_separator_get_element_visible   (XfceMenuElement        *element);
 
+static const gchar *xfce_menu_separator_get_element_name                (XfceMenuElement *element);
+static const gchar *xfce_menu_separator_get_element_comment             (XfceMenuElement *element);
+static const gchar *xfce_menu_separator_get_element_icon_name           (XfceMenuElement *element);
+static gboolean     xfce_menu_separator_get_element_visible             (XfceMenuElement *element);
+static gboolean     xfce_menu_separator_get_element_show_in_environment (XfceMenuElement *element);
+static gboolean     xfce_menu_separator_get_element_no_display          (XfceMenuElement *element);
 
 
 static XfceMenuSeparator *_xfce_menu_separator = NULL;
@@ -138,6 +140,8 @@ xfce_menu_separator_element_init (XfceMenuElementIface *iface)
   iface->get_comment = xfce_menu_separator_get_element_comment;
   iface->get_icon_name = xfce_menu_separator_get_element_icon_name;
   iface->get_visible = xfce_menu_separator_get_element_visible;
+  iface->get_show_in_environment = xfce_menu_separator_get_element_show_in_environment;
+  iface->get_no_display = xfce_menu_separator_get_element_no_display;
 }
 
 
@@ -195,3 +199,19 @@ xfce_menu_separator_get_element_visible (XfceMenuElement *element)
   return TRUE;
 }
 
+
+
+static gboolean
+xfce_menu_separator_get_element_show_in_environment (XfceMenuElement *element)
+{
+  return TRUE;
+}
+
+
+
+static gboolean
+xfce_menu_separator_get_element_no_display (XfceMenuElement *element)
+{
+  return FALSE;
+}
+
diff --git a/libxfce4menu/xfce-menu.c b/libxfce4menu/xfce-menu.c
index 154cfa21ccf61a470452f4a56fa3e02f542d64a3..61a890d7f838ae02db744d59af75474ec71a4e14 100644
--- a/libxfce4menu/xfce-menu.c
+++ b/libxfce4menu/xfce-menu.c
@@ -135,6 +135,8 @@ static const gchar       *xfce_menu_get_element_name                       (Xfce
 static const gchar       *xfce_menu_get_element_comment                    (XfceMenuElement       *element);
 static const gchar       *xfce_menu_get_element_icon_name                  (XfceMenuElement       *element);
 static gboolean           xfce_menu_get_element_visible                    (XfceMenuElement       *element);
+static gboolean           xfce_menu_get_element_show_in_environment        (XfceMenuElement       *element);
+static gboolean           xfce_menu_get_element_no_display                 (XfceMenuElement       *element);
 static void               xfce_menu_monitor_start                          (XfceMenu              *menu);
 static void               xfce_menu_monitor_stop                           (XfceMenu              *menu);
 
@@ -271,6 +273,8 @@ xfce_menu_element_init (XfceMenuElementIface *iface)
   iface->get_comment = xfce_menu_get_element_comment;
   iface->get_icon_name = xfce_menu_get_element_icon_name;
   iface->get_visible = xfce_menu_get_element_visible;
+  iface->get_show_in_environment = xfce_menu_get_element_show_in_environment;
+  iface->get_no_display = xfce_menu_get_element_no_display;
 }
 
 
@@ -408,7 +412,7 @@ xfce_menu_new (const gchar *filename)
   XfceMenu *menu;
   GFile    *file;
 
-  g_return_val_if_fail (file != NULL, NULL);
+  g_return_val_if_fail (filename != NULL, NULL);
 
   /* Create new menu */
   file = g_file_new_for_unknown_input (filename, NULL);
@@ -1501,6 +1505,40 @@ xfce_menu_get_element_visible (XfceMenuElement *element)
 
 
 
+static gboolean
+xfce_menu_get_element_show_in_environment (XfceMenuElement *element)
+{
+  XfceMenu *menu;
+
+  g_return_val_if_fail (XFCE_IS_MENU (element), FALSE);
+
+  menu = XFCE_MENU (element);
+
+  if (menu->priv->directory == NULL)
+    return FALSE;
+  else
+    return xfce_menu_directory_get_show_in_environment (menu->priv->directory);
+}
+
+
+
+static gboolean
+xfce_menu_get_element_no_display (XfceMenuElement *element)
+{
+  XfceMenu *menu;
+
+  g_return_val_if_fail (XFCE_IS_MENU (element), FALSE);
+
+  menu = XFCE_MENU (element);
+
+  if (menu->priv->directory == NULL)
+    return FALSE;
+  else
+    return xfce_menu_directory_get_no_display (menu->priv->directory);
+}
+
+
+
 static void
 item_monitor_start (const gchar  *desktop_id,
                     XfceMenuItem *item,