20 |
|
|
21 |
#include <X11/Xlib.h> |
#include <X11/Xlib.h> |
22 |
#include <X11/Xutil.h> |
#include <X11/Xutil.h> |
23 |
|
#include <unistd.h> |
24 |
#include <time.h> |
#include <time.h> |
25 |
#include <errno.h> |
#include <errno.h> |
26 |
#include "rdesktop.h" |
#include "rdesktop.h" |
543 |
pixel |= *(data++); |
pixel |= *(data++); |
544 |
|
|
545 |
value = make_colour(split_colour24(pixel)); |
value = make_colour(split_colour24(pixel)); |
546 |
|
|
547 |
if (g_xserver_be) |
if (g_xserver_be) |
548 |
{ |
{ |
549 |
*(out++) = value >> 16; |
*(out++) = value >> 16; |
850 |
g_display = NULL; |
g_display = NULL; |
851 |
} |
} |
852 |
|
|
|
#define NULL_POINTER_MASK "\x80" |
|
|
#define NULL_POINTER_DATA "\x0\x0\x0" |
|
|
|
|
853 |
BOOL |
BOOL |
854 |
ui_create_window(void) |
ui_create_window(void) |
855 |
{ |
{ |
856 |
|
uint8 null_pointer_mask[1] = { 0x80 }; |
857 |
|
uint8 null_pointer_data[4] = { 0x00, 0x00, 0x00, 0x00 }; |
858 |
XSetWindowAttributes attribs; |
XSetWindowAttributes attribs; |
859 |
XClassHint *classhints; |
XClassHint *classhints; |
860 |
XSizeHints *sizehints; |
XSizeHints *sizehints; |
937 |
XSetWMProtocols(g_display, g_wnd, &g_kill_atom, 1); |
XSetWMProtocols(g_display, g_wnd, &g_kill_atom, 1); |
938 |
|
|
939 |
/* create invisible 1x1 cursor to be used as null cursor */ |
/* create invisible 1x1 cursor to be used as null cursor */ |
940 |
g_null_cursor = ui_create_cursor(0, 0, 1, 1, NULL_POINTER_MASK, NULL_POINTER_DATA); |
g_null_cursor = ui_create_cursor(0, 0, 1, 1, null_pointer_mask, null_pointer_data); |
941 |
|
|
942 |
return True; |
return True; |
943 |
} |
} |
945 |
void |
void |
946 |
ui_destroy_window(void) |
ui_destroy_window(void) |
947 |
{ |
{ |
|
ui_destroy_cursor(g_null_cursor); |
|
|
|
|
948 |
if (g_IC != NULL) |
if (g_IC != NULL) |
949 |
XDestroyIC(g_IC); |
XDestroyIC(g_IC); |
950 |
|
|
988 |
key_translation tr; |
key_translation tr; |
989 |
char str[256]; |
char str[256]; |
990 |
Status status; |
Status status; |
|
unsigned int state; |
|
|
Window wdummy; |
|
|
int dummy; |
|
991 |
|
|
992 |
while (XPending(g_display) > 0) |
while (XPending(g_display) > 0) |
993 |
{ |
{ |
1160 |
if (xevent.xfocus.mode == NotifyGrab) |
if (xevent.xfocus.mode == NotifyGrab) |
1161 |
break; |
break; |
1162 |
g_focused = True; |
g_focused = True; |
1163 |
XQueryPointer(g_display, g_wnd, &wdummy, &wdummy, &dummy, &dummy, |
reset_modifier_keys(); |
|
&dummy, &dummy, &state); |
|
|
reset_modifier_keys(state); |
|
1164 |
if (g_grab_keyboard && g_mouse_in_wnd) |
if (g_grab_keyboard && g_mouse_in_wnd) |
1165 |
XGrabKeyboard(g_display, g_wnd, True, |
XGrabKeyboard(g_display, g_wnd, True, |
1166 |
GrabModeAsync, GrabModeAsync, CurrentTime); |
GrabModeAsync, GrabModeAsync, CurrentTime); |