add workareas get as requested in ticket #793 but actually support
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 6 Nov 2011 09:16:00 +0000 (09:16 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 6 Nov 2011 09:16:00 +0000 (09:16 +0000)
more than 1 - for multi-screen.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@64804 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_x/Ecore_X.h
src/lib/ecore_x/xcb/ecore_xcb_netwm.c
src/lib/ecore_x/xlib/ecore_x_netwm.c

index 9bebf9e..6588a75 100644 (file)
@@ -2045,6 +2045,9 @@ EAPI void
 ecore_x_netwm_desk_workareas_set(Ecore_X_Window root,
                                  unsigned int *areas,
                                  unsigned int n_desks);
+EAPI unsigned int *
+ecore_x_netwm_desk_workareas_get(Ecore_X_Window root,
+                                 unsigned int *n_desks);
 EAPI void
 ecore_x_netwm_desk_current_set(Ecore_X_Window root,
                                unsigned int desk);
index 1d041d3..0a523b9 100644 (file)
@@ -358,6 +358,25 @@ ecore_x_netwm_desk_workareas_set(Ecore_X_Window root,
                                   4 * n_desks);
 }
 
+EAPI unsigned int *
+ecore_x_netwm_desk_workareas_get(Ecore_X_Window root, unsigned int *n_desks)
+{
+   int ret;
+   unsigned int *areas = NULL;
+   
+   if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+   
+   ret = ecore_x_window_prop_card32_list_get(root, ECORE_X_ATOM_NET_WORKAREA,
+                                             &areas);
+   if (!areas)
+     {
+        if (n_desks) *n_desks = 0;
+        return 0;
+     }
+   if (n_desks) *n_desks = ret / 4;
+   return areas;
+}
+
 EAPI void
 ecore_x_netwm_desk_current_set(Ecore_X_Window root,
                                unsigned int   desk)
index 36b028d..1a6fc9a 100644 (file)
@@ -269,6 +269,25 @@ ecore_x_netwm_desk_workareas_set(Ecore_X_Window root,
                                   4 * n_desks);
 } /* ecore_x_netwm_desk_workareas_set */
 
+EAPI unsigned int *
+ecore_x_netwm_desk_workareas_get(Ecore_X_Window root, unsigned int *n_desks)
+{
+   int ret;
+   unsigned int *areas = NULL;
+   
+   if (!root) root = DefaultRootWindow(_ecore_x_disp);
+   
+   ret = ecore_x_window_prop_card32_list_get(root, ECORE_X_ATOM_NET_WORKAREA,
+                                             &areas);
+   if (!areas)
+     {
+        if (n_desks) *n_desks = 0;
+        return 0;
+     }
+   if (n_desks) *n_desks = ret / 4;
+   return areas;
+}
+
 EAPI void
 ecore_x_netwm_desk_current_set(Ecore_X_Window root,
                                unsigned int   desk)