add workareas get as requested in ticket #793 but actually support
authorCarsten Haitzler <raster@rasterman.com>
Sun, 6 Nov 2011 09:16:00 +0000 (09:16 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Sun, 6 Nov 2011 09:16:00 +0000 (09:16 +0000)
more than 1 - for multi-screen.

SVN revision: 64804

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

index 9bebf9eba57b7fac904d97e68b14424cf3802a52..6588a7581b1b148712eb0c76cc8e4d0f7323c9ab 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 1d041d3a41abea3ee9b4987edc8209e4a1a7ebd6..0a523b958f773d26c0f706f593c52817308e7140 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 36b028d87133b11b7400150f039873a127dbe6dd..1a6fc9a044d3ad7f736f48559a7ba999e7c44308 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)