diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-04-12 02:24:03 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-04-12 02:24:03 +0000 |
| commit | 949946a9b4054ebb46e2eca8bd7685dc9bb5765c (patch) | |
| tree | c00aaa60a56fb57c1fa287ea7f1d922a4eadd235 /cwmcc | |
| parent | 7b03041409912d38cb9f98988449fb9be641f572 (diff) | |
complete the root property get functions
Diffstat (limited to 'cwmcc')
| -rw-r--r-- | cwmcc/root_props.c | 27 | ||||
| -rw-r--r-- | cwmcc/root_props.h | 2 |
2 files changed, 26 insertions, 3 deletions
diff --git a/cwmcc/root_props.c b/cwmcc/root_props.c index ef03e445..bc963c83 100644 --- a/cwmcc/root_props.c +++ b/cwmcc/root_props.c @@ -112,9 +112,32 @@ void cwmcc_root_get_active_window(Window win, Window *window) } } -/*void cwmcc_root_get_workarea(Window win, Rect a) +void cwmcc_root_get_workarea(Window win, int **x, int **y, int **w, int **h) { -}*/ + gulong *data = NULL, num; + gulong desks, i; + + /* need the number of desktops */ + cwmcc_root_get_number_of_desktops(win, &desks); + + if (!prop_get_array32(win, CWMCC_ATOM(root, net_workarea), + CWMCC_ATOM(type, cardinal), &data, &num)) { + g_warning("Failed to read NET_DESKTOP_LAYOUT from 0x%lx", win); + } else if (num != 4 * desks) { + g_warning("Read invalid NET_DESKTOP_LAYOUT from 0x%lx", win); + } else { + *x = g_new(int, desks); + *y = g_new(int, desks); + *w = g_new(int, desks); + *h = g_new(int, desks); + for (i = 0; i < desks; ++i) { + (*x)[i] = data[i * 4]; + (*y)[i] = data[i * 4 + 1]; + (*w)[i] = data[i * 4 + 2]; + (*h)[i] = data[i * 4 + 3]; + } + } +} void cwmcc_root_get_supporting_wm_check(Window win, Window *window) { diff --git a/cwmcc/root_props.h b/cwmcc/root_props.h index ca43f136..13b06010 100644 --- a/cwmcc/root_props.h +++ b/cwmcc/root_props.h @@ -22,7 +22,7 @@ void cwmcc_root_get_desktop_names(Window win, char ***names); void cwmcc_root_get_active_window(Window win, Window *window); -/*void cwmcc_root_get_workarea(Window win, Rect a)*/ +void cwmcc_root_get_workarea(Window win, int **x, int **y, int **w, int **h); void cwmcc_root_get_supporting_wm_check(Window win, Window *window); |
