+static void
+set_legacy_menu_type (GtkMenu *menu,
+ gboolean set)
+{
+ GdkWindow *gdkwin = GTK_WIDGET (menu->toplevel)->window;
+ GdkAtom property = gdk_atom_intern_static_string (LEGACY_MENU_PROPERTY_NAME);
+ if (set) {
+ GdkAtom type = gdk_x11_xatom_to_atom (XA_ATOM);
+ GdkAtom value = gdk_atom_intern_static_string (LEGACY_MENU_PROPERTY_VALUE);
+ gdk_property_change (gdkwin, property, type, 32,
+ GDK_PROP_MODE_REPLACE, (const guchar *) &value, 1);
+ } else {
+ gdk_property_delete (gdkwin, property);
+ }
+}
+
+static void
+legacy_menu_realized (GtkMenu *menu)
+{
+ set_legacy_menu_type (menu, TRUE);
+ g_signal_handlers_disconnect_by_func (menu, legacy_menu_realized, NULL);
+}
+
+static void
+legacy_menu_unmapped (GtkMenu *menu)
+{
+ set_legacy_menu_type (menu, FALSE);
+ g_signal_handlers_disconnect_by_func (menu, legacy_menu_unmapped, NULL);
+}
+