1903 |
xevent.xexpose.width, |
xevent.xexpose.width, |
1904 |
xevent.xexpose.height, xevent.xexpose.x, |
xevent.xexpose.height, xevent.xexpose.x, |
1905 |
xevent.xexpose.y); |
xevent.xexpose.y); |
1906 |
|
else |
1907 |
|
{ |
1908 |
|
error("Expose for unknown window 0x%lx\n", |
1909 |
|
xevent.xexpose.window); |
1910 |
|
} |
1911 |
} |
} |
1912 |
|
|
1913 |
break; |
break; |
2998 |
XSetWindowAttributes attribs; |
XSetWindowAttributes attribs; |
2999 |
XClassHint *classhints; |
XClassHint *classhints; |
3000 |
long input_mask; |
long input_mask; |
3001 |
seamless_window *sw; |
seamless_window *sw, *sw_parent; |
3002 |
|
|
3003 |
get_window_attribs(&attribs); |
get_window_attribs(&attribs); |
3004 |
|
|
3024 |
XFree(classhints); |
XFree(classhints); |
3025 |
} |
} |
3026 |
|
|
3027 |
|
/* Set WM_TRANSIENT_FOR, if necessary */ |
3028 |
|
if (parent) |
3029 |
|
{ |
3030 |
|
sw_parent = seamless_get_window_by_id(parent); |
3031 |
|
if (sw_parent) |
3032 |
|
XSetTransientForHint(g_display, wnd, sw_parent->wnd); |
3033 |
|
else |
3034 |
|
warning("ui_seamless_create_window: No parent window 0x%lx\n", parent); |
3035 |
|
} |
3036 |
|
|
3037 |
/* FIXME: Support for Input Context:s */ |
/* FIXME: Support for Input Context:s */ |
3038 |
|
|
3039 |
get_input_mask(&input_mask); |
get_input_mask(&input_mask); |
3063 |
ui_seamless_destroy_window(unsigned long id, unsigned long flags) |
ui_seamless_destroy_window(unsigned long id, unsigned long flags) |
3064 |
{ |
{ |
3065 |
seamless_window *sw; |
seamless_window *sw; |
|
sw = seamless_get_window_by_id(id); |
|
3066 |
|
|
3067 |
|
sw = seamless_get_window_by_id(id); |
3068 |
if (!sw) |
if (!sw) |
3069 |
{ |
{ |
3070 |
warning("ui_seamless_destroy_window: No information for window 0x%lx\n", id); |
warning("ui_seamless_destroy_window: No information for window 0x%lx\n", id); |
3082 |
seamless_window *sw; |
seamless_window *sw; |
3083 |
|
|
3084 |
sw = seamless_get_window_by_id(id); |
sw = seamless_get_window_by_id(id); |
|
|
|
3085 |
if (!sw) |
if (!sw) |
3086 |
{ |
{ |
3087 |
warning("ui_seamless_move_window: No information for window 0x%lx\n", id); |
warning("ui_seamless_move_window: No information for window 0x%lx\n", id); |
3114 |
seamless_window *sw; |
seamless_window *sw; |
3115 |
|
|
3116 |
sw = seamless_get_window_by_id(id); |
sw = seamless_get_window_by_id(id); |
3117 |
|
if (!sw) |
3118 |
|
{ |
3119 |
|
warning("ui_seamless_settitle: No information for window 0x%lx\n", id); |
3120 |
|
return; |
3121 |
|
} |
3122 |
|
|
3123 |
XStoreName(g_display, sw->wnd, title); |
XStoreName(g_display, sw->wnd, title); |
3124 |
} |
} |
3130 |
seamless_window *sw; |
seamless_window *sw; |
3131 |
|
|
3132 |
sw = seamless_get_window_by_id(id); |
sw = seamless_get_window_by_id(id); |
3133 |
|
if (!sw) |
3134 |
|
{ |
3135 |
|
warning("ui_seamless_setstate: No information for window 0x%lx\n", id); |
3136 |
|
return; |
3137 |
|
} |
3138 |
|
|
3139 |
switch (state) |
switch (state) |
3140 |
{ |
{ |
3141 |
case SEAMLESSRDP_NORMAL: |
case SEAMLESSRDP_NORMAL: |
3142 |
case SEAMLESSRDP_MAXIMIZED: |
case SEAMLESSRDP_MAXIMIZED: |
3143 |
/* FIXME */ |
XMapWindow(g_display, sw->wnd); |
3144 |
break; |
break; |
3145 |
case SEAMLESSRDP_MINIMIZED: |
case SEAMLESSRDP_MINIMIZED: |
3146 |
XIconifyWindow(g_display, sw->wnd, DefaultScreen(g_display)); |
XIconifyWindow(g_display, sw->wnd, DefaultScreen(g_display)); |