all repos — openbox @ d976fc6bb1baebfb805c2f46e56306656fef5922

openbox fork - make it a bit more like ryudo

add set functions for all the client props that need em
Dana Jansens danakj@orodu.net
commit

d976fc6bb1baebfb805c2f46e56306656fef5922

parent

f317ceeaf28bc656e59a0f089ac11818ca5e8bd3

2 files changed, 54 insertions(+), 6 deletions(-)

jump to
M cwmcc/client_props.ccwmcc/client_props.c

@@ -16,16 +16,31 @@ *protocols = NULL;

} } -int cwmcc_client_get_wm_state(Window win) +void cwmcc_client_set_protocols(Window win, Atom *protocols) { - gulong s; + gulong n; + Atom *a; + + for (a = protocols, n = 0; *a; ++a, ++n); + XChangeProperty(cwmcc_display, win, CWMCC_ATOM(client, wm_state), + CWMCC_ATOM(type, atom), 32, PropModeReplace, + (guchar*)protocols, n); +} +void cwmcc_client_get_wm_state(Window win, gulong *state) +{ if (!prop_get32(win, CWMCC_ATOM(client, wm_state), - CWMCC_ATOM(client, wm_state), &s)) { + CWMCC_ATOM(client, wm_state), state)) { g_warning("Failed to read WM_STATE from 0x%lx", win); - s = NormalState; + *state = NormalState; } - return s; +} + +void cwmcc_client_set_wm_state(Window win, gulong state) +{ + XChangeProperty(cwmcc_display, win, CWMCC_ATOM(client, wm_state), + CWMCC_ATOM(client, wm_state), 32, PropModeReplace, + (guchar*)&state, 1); } void cwmcc_client_get_name(Window win, char **name)

@@ -109,6 +124,13 @@ *desk = 0;

} } +void cwmcc_client_set_desktop(Window win, gulong desk) +{ + XChangeProperty(cwmcc_display, win, CWMCC_ATOM(client, net_wm_desktop), + CWMCC_ATOM(type, cardinal), 32, PropModeReplace, + (guchar*)&desk, 1); +} + void cwmcc_client_get_type(Window win, gulong **types) { gulong num;

@@ -122,6 +144,17 @@ (*types)[1] = 0;

} } +void cwmcc_client_set_type(Window win, gulong *types) +{ + gulong n; + gulong *t; + + for (t = types, n = 0; *t; ++t, ++n); + XChangeProperty(cwmcc_display, win, CWMCC_ATOM(client, wm_state), + CWMCC_ATOM(type, atom), 32, PropModeReplace, + (guchar*)types, n); +} + void cwmcc_client_get_state(Window win, gulong **states) { gulong num;

@@ -132,6 +165,17 @@ g_warning("Failed to read NET_WM_STATE from 0x%lx", win);

*states = g_new(Atom, 1); (*states)[0] = 0; } +} + +void cwmcc_client_set_state(Window win, gulong *states) +{ + gulong n; + gulong *s; + + for (s = states, n = 0; *s; ++s, ++n); + XChangeProperty(cwmcc_display, win, CWMCC_ATOM(client, wm_state), + CWMCC_ATOM(type, atom), 32, PropModeReplace, + (guchar*)states, n); } void cwmcc_client_get_strut(Window win, int *l, int *t, int *r, int *b)
M cwmcc/client_props.hcwmcc/client_props.h

@@ -3,7 +3,8 @@ #define __cwmcc_client_get_props_h

void cwmcc_client_get_protocols(Window win, Atom **protocols); -int cwmcc_client_get_wm_state(Window win); +void cwmcc_client_get_wm_state(Window win, gulong *state); +void cwmcc_client_set_wm_state(Window win, gulong state); void cwmcc_client_get_name(Window win, char **name);

@@ -55,10 +56,13 @@

void cwmcc_client_get_mwmhints(Window win, struct Cwmcc_MwmHints *hints); void cwmcc_client_get_desktop(Window win, gulong *desk); +void cwmcc_client_set_desktop(Window win, gulong desk); void cwmcc_client_get_type(Window win, gulong **types); +void cwmcc_client_set_type(Window win, gulong *types); void cwmcc_client_get_state(Window win, gulong **states); +void cwmcc_client_set_state(Window win, gulong *states); void cwmcc_client_get_strut(Window win, int *l, int *t, int *r, int *b);