57 |
int xoffset, yoffset; |
int xoffset, yoffset; |
58 |
int width, height; |
int width, height; |
59 |
unsigned int state; /* normal/minimized/maximized */ |
unsigned int state; /* normal/minimized/maximized */ |
60 |
|
unsigned int desktop; |
61 |
struct _seamless_window *next; |
struct _seamless_window *next; |
62 |
} seamless_window; |
} seamless_window; |
63 |
static seamless_window *g_seamless_windows = NULL; |
static seamless_window *g_seamless_windows = NULL; |
86 |
static HCURSOR g_null_cursor = NULL; |
static HCURSOR g_null_cursor = NULL; |
87 |
static Atom g_protocol_atom, g_kill_atom; |
static Atom g_protocol_atom, g_kill_atom; |
88 |
extern Atom g_net_wm_state_atom; |
extern Atom g_net_wm_state_atom; |
89 |
|
extern Atom g_net_wm_desktop_atom; |
90 |
static BOOL g_focused; |
static BOOL g_focused; |
91 |
static BOOL g_mouse_in_wnd; |
static BOOL g_mouse_in_wnd; |
92 |
/* Indicates that: |
/* Indicates that: |
302 |
} |
} |
303 |
|
|
304 |
|
|
305 |
|
/* Move all windows except wnd to new desktop */ |
306 |
|
static void |
307 |
|
seamless_all_to_desktop(Window wnd, unsigned int desktop) |
308 |
|
{ |
309 |
|
seamless_window *sw; |
310 |
|
for (sw = g_seamless_windows; sw; sw = sw->next) |
311 |
|
{ |
312 |
|
if (sw->wnd == wnd) |
313 |
|
continue; |
314 |
|
if (sw->desktop != desktop) |
315 |
|
{ |
316 |
|
ewmh_move_to_desktop(sw->wnd, desktop); |
317 |
|
sw->desktop = desktop; |
318 |
|
} |
319 |
|
} |
320 |
|
} |
321 |
|
|
322 |
|
|
323 |
static void |
static void |
324 |
mwm_hide_decorations(Window wnd) |
mwm_hide_decorations(Window wnd) |
325 |
{ |
{ |
1977 |
sw->state = ewmh_get_window_state(sw->wnd); |
sw->state = ewmh_get_window_state(sw->wnd); |
1978 |
seamless_send_state(sw->id, sw->state, 0); |
seamless_send_state(sw->id, sw->state, 0); |
1979 |
} |
} |
1980 |
|
|
1981 |
|
if ((xevent.xproperty.atom == g_net_wm_desktop_atom) |
1982 |
|
&& (xevent.xproperty.state == PropertyNewValue)) |
1983 |
|
{ |
1984 |
|
sw->desktop = ewmh_get_window_desktop(sw->wnd); |
1985 |
|
seamless_all_to_desktop(sw->wnd, sw->desktop); |
1986 |
|
} |
1987 |
|
|
1988 |
break; |
break; |
1989 |
case MapNotify: |
case MapNotify: |
1990 |
if (!g_seamless_rdp) |
if (!g_seamless_rdp) |