Index: src/display.c
===================================================================
--- src/display.c	(revision 3188)
+++ src/display.c	(working copy)
@@ -334,7 +334,9 @@ meta_display_open (void)
     "_METACITY_VERSION",
     "_NET_WM_VISIBLE_NAME",
     "_NET_WM_VISIBLE_ICON_NAME",
-    "_NET_WM_USER_TIME_WINDOW"
+    "_NET_WM_USER_TIME_WINDOW",
+    "_NET_WM_ACTION_ABOVE",
+    "_NET_WM_ACTION_BELOW"
   };
   Atom atoms[G_N_ELEMENTS(atom_names)];
   
@@ -494,6 +496,8 @@ meta_display_open (void)
   display->atom_net_wm_visible_name = atoms[92];
   display->atom_net_wm_visible_icon_name = atoms[93];
   display->atom_net_wm_user_time_window = atoms[94];
+  display->atom_net_wm_action_above = atoms[95];
+  display->atom_net_wm_action_below = atoms[96];
 
   display->prop_hooks = NULL;
   meta_display_init_window_prop_hooks (display);
Index: src/display.h
===================================================================
--- src/display.h	(revision 3188)
+++ src/display.h	(working copy)
@@ -159,6 +159,8 @@ struct _MetaDisplay
   Atom atom_net_wm_action_maximize_vert;
   Atom atom_net_wm_action_change_desktop;
   Atom atom_net_wm_action_close;
+  Atom atom_net_wm_action_above;
+  Atom atom_net_wm_action_below;
   Atom atom_net_wm_state_above;
   Atom atom_net_wm_state_below;
   Atom atom_net_startup_id;
Index: src/screen.c
===================================================================
--- src/screen.c	(revision 3188)
+++ src/screen.c	(working copy)
@@ -89,7 +89,7 @@ set_wm_check_hint (MetaScreen *screen)
 static int
 set_supported_hint (MetaScreen *screen)
 {
-#define N_SUPPORTED 60
+#define N_SUPPORTED 62
   Atom atoms[N_SUPPORTED];
   
   atoms[0] = screen->display->atom_net_wm_name;
@@ -152,6 +152,8 @@ set_supported_hint (MetaScreen *screen)
   atoms[57] = screen->display->atom_net_desktop_viewport;
   atoms[58] = screen->display->atom_net_wm_user_time_window;
   atoms[59] = screen->display->atom_net_moveresize_window;
+  atoms[60] = screen->display->atom_net_wm_action_above;
+  atoms[61] = screen->display->atom_net_wm_action_below;
 
   /* atoms[58] = screen->display->atom_net_restack_window; */
   
Index: src/window.c
===================================================================
--- src/window.c	(revision 3189)
+++ src/window.c	(working copy)
@@ -6035,7 +6035,7 @@ recalc_window_type (MetaWindow *window)
 static void
 set_allowed_actions_hint (MetaWindow *window)
 {
-#define MAX_N_ACTIONS 10
+#define MAX_N_ACTIONS 12
   unsigned long data[MAX_N_ACTIONS];
   int i;
 
@@ -6081,6 +6081,12 @@ set_allowed_actions_hint (MetaWindow *wi
       ++i;
     }
 
+  /* I guess we always allow above/below operations */
+  data[i] = window->display->atom_net_wm_action_above;
+  ++i;
+  data[i] = window->display->atom_net_wm_action_below;
+  ++i;
+
   g_assert (i <= MAX_N_ACTIONS);
 
   meta_verbose ("Setting _NET_WM_ALLOWED_ACTIONS with %d atoms\n", i);
