Hello community, here is the log from the commit of package rdesktop checked in at Mon Nov 17 17:55:26 CET 2008. -------- --- rdesktop/rdesktop.changes 2008-10-15 17:32:24.000000000 +0200 +++ /mounts/work_src_done/STABLE/rdesktop/rdesktop.changes 2008-11-11 18:21:06.000000000 +0100 @@ -1,0 +2,5 @@ +Tue Nov 11 12:11:39 EST 2008 - davidr@novell.com + +- Fix DMX input focus handling. + +------------------------------------------------------------------- calling whatdependson for head-i586 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rdesktop.spec ++++++ --- /var/tmp/diff_new_pack.ZV8543/_old 2008-11-17 17:55:03.000000000 +0100 +++ /var/tmp/diff_new_pack.ZV8543/_new 2008-11-17 17:55:03.000000000 +0100 @@ -25,7 +25,7 @@ Group: Productivity/Networking/Remote Desktop AutoReqProv: on Version: 1.6.0 -Release: 35 +Release: 36 Summary: A Remote Desktop Protocol client Source: %{name}-%{version}.tar.bz2 Patch0: rdesktop-1.4.0-lib64.dif @@ -83,6 +83,8 @@ %{_mandir}/man1/rdesktop.1.gz %changelog +* Tue Nov 11 2008 davidr@novell.com +- Fix DMX input focus handling. * Wed Oct 15 2008 davidr@novell.com - Don't prevent DMX DnD support from working properly. - Fix handling of special keys when using the rdpx11 channel. ++++++ rdesktop-NOMAD.dif ++++++ --- /var/tmp/diff_new_pack.ZV8543/_old 2008-11-17 17:55:03.000000000 +0100 +++ /var/tmp/diff_new_pack.ZV8543/_new 2008-11-17 17:55:03.000000000 +0100 @@ -272,7 +272,7 @@ while (run_count < 2 && continue_connect) /* add support for Session Directory; only reconnect once */ diff --git a/rdpx11.c b/rdpx11.c new file mode 100644 -index 0000000..c4c0bb4 +index 0000000..420a08d --- /dev/null +++ b/rdpx11.c @@ -0,0 +1,658 @@ @@ -778,7 +778,7 @@ + case Z_BUF_ERROR: + break; + default: -+ error("rdpx11: inflate returned %d", ++ error("rdpx11: inflate returned %d\n", + status); + } + } while (status == Z_OK && rdpx11_socket); @@ -1047,7 +1047,7 @@ int ewmh_set_window_above(Window wnd); +int ewmh_set_window_fullscreen(Window wnd, int action); diff --git a/xwin.c b/xwin.c -index 83e75a8..cd1f5cf 100644 +index 83e75a8..5ac1ba6 100644 --- a/xwin.c +++ b/xwin.c @@ -22,6 +22,8 @@ @@ -1067,7 +1067,7 @@ /* SeamlessRDP support */ typedef struct _seamless_group -@@ -107,7 +110,7 @@ static int g_depth; +@@ -107,13 +110,13 @@ static int g_depth; static int g_bpp; static XIM g_IM; static XIC g_IC; @@ -1076,6 +1076,13 @@ /* Maps logical (xmodmap -pp) pointing device buttons (0-based) back to physical (1-based) indices. */ static unsigned char g_pointer_log_to_phys_map[32]; + static Cursor g_current_cursor; + static RD_HCURSOR g_null_cursor = NULL; +-static Atom g_protocol_atom, g_kill_atom; ++static Atom g_protocol_atom, g_kill_atom, g_take_focus_atom; + extern Atom g_net_wm_state_atom; + extern Atom g_net_wm_desktop_atom; + static RD_BOOL g_focused; @@ -1875,14 +1878,62 @@ ui_init(void) g_ownbackstore = True; } @@ -1174,12 +1181,13 @@ *input_mask |= EnterWindowMask; if (g_grab_keyboard) *input_mask |= LeaveWindowMask; -@@ -2000,9 +2051,13 @@ ui_create_window(void) +@@ -2000,9 +2051,14 @@ ui_create_window(void) int wndwidth, wndheight; long input_mask, ic_input_mask; XEvent xevent; + int wndx; + int wndy; ++ Atom protocols[2]; - wndwidth = g_fullscreen ? WidthOfScreen(g_screen) : g_width; - wndheight = g_fullscreen ? HeightOfScreen(g_screen) : g_height; @@ -1190,7 +1198,7 @@ /* Handle -x-y portion of geometry string */ if (g_xpos < 0 || (g_xpos == 0 && (g_pos & 2))) -@@ -2010,9 +2065,15 @@ ui_create_window(void) +@@ -2010,9 +2066,15 @@ ui_create_window(void) if (g_ypos < 0 || (g_ypos == 0 && (g_pos & 4))) g_ypos = HeightOfScreen(g_screen) + g_ypos - g_height; @@ -1207,7 +1215,7 @@ wndheight, 0, g_depth, InputOutput, g_visual, CWBackPixel | CWBackingStore | CWOverrideRedirect | CWColormap | CWBorderPixel, &attribs); -@@ -2078,6 +2139,9 @@ ui_create_window(void) +@@ -2078,6 +2140,9 @@ ui_create_window(void) input_mask |= ic_input_mask; } @@ -1217,7 +1225,17 @@ XSelectInput(g_display, g_wnd, input_mask); XMapWindow(g_display, g_wnd); -@@ -2101,6 +2165,8 @@ ui_create_window(void) +@@ -2095,12 +2160,17 @@ ui_create_window(void) + /* handle the WM_DELETE_WINDOW protocol */ + g_protocol_atom = XInternAtom(g_display, "WM_PROTOCOLS", True); + g_kill_atom = XInternAtom(g_display, "WM_DELETE_WINDOW", True); +- XSetWMProtocols(g_display, g_wnd, &g_kill_atom, 1); ++ g_take_focus_atom = XInternAtom(g_display, "WM_TAKE_FOCUS", True); ++ protocols[0] = g_kill_atom; ++ protocols[1] = g_take_focus_atom; ++ XSetWMProtocols(g_display, g_wnd, protocols, 2); + + /* create invisible 1x1 cursor to be used as null cursor */ if (g_null_cursor == NULL) g_null_cursor = ui_create_cursor(0, 0, 1, 1, null_pointer_mask, null_pointer_data); @@ -1226,7 +1244,7 @@ if (g_seamless_rdp) { seamless_restack_test(); -@@ -2154,30 +2220,7 @@ ui_destroy_window(void) +@@ -2154,30 +2224,7 @@ ui_destroy_window(void) void xwin_toggle_fullscreen(void) { @@ -1258,7 +1276,7 @@ } static void -@@ -2267,6 +2310,38 @@ handle_button_event(XEvent xevent, RD_BOOL down) +@@ -2267,6 +2314,38 @@ handle_button_event(XEvent xevent, RD_BOOL down) } } @@ -1297,7 +1315,25 @@ /* Process events in Xlib queue Returns 0 after user quit, 1 otherwise */ -@@ -2382,10 +2457,6 @@ xwin_process_events(void) +@@ -2300,6 +2379,17 @@ xwin_process_events(void) + + break; + case ClientMessage: ++ /* move focus to dmx root window */ ++ if ((xevent.xclient.message_type == g_protocol_atom) ++ && ((Atom) xevent.xclient.data.l[0] == g_take_focus_atom)) ++ { ++ if (g_dmx_root) ++ XSetInputFocus (g_display, ++ g_dmx_root, ++ RevertToParent, ++ xevent.xclient.data.l[1]); ++ } ++ + /* the window manager told us to quit */ + if ((xevent.xclient.message_type == g_protocol_atom) + && ((Atom) xevent.xclient.data.l[0] == g_kill_atom)) +@@ -2382,10 +2472,6 @@ xwin_process_events(void) break; } @@ -1308,7 +1344,7 @@ if (xevent.xmotion.window == g_wnd) { rdp_send_input(time(NULL), RDP_INPUT_MOUSE, MOUSE_FLAG_MOVE, -@@ -2405,7 +2476,7 @@ xwin_process_events(void) +@@ -2405,7 +2491,7 @@ xwin_process_events(void) break; g_focused = True; reset_modifier_keys(); @@ -1317,7 +1353,7 @@ XGrabKeyboard(g_display, g_wnd, True, GrabModeAsync, GrabModeAsync, CurrentTime); -@@ -2447,13 +2518,7 @@ xwin_process_events(void) +@@ -2447,13 +2533,7 @@ xwin_process_events(void) /* we only register for this event when in fullscreen mode */ /* or grab_keyboard */ g_mouse_in_wnd = True; @@ -1332,7 +1368,7 @@ XGrabKeyboard(g_display, g_wnd, True, GrabModeAsync, GrabModeAsync, CurrentTime); break; -@@ -2506,6 +2571,11 @@ xwin_process_events(void) +@@ -2506,6 +2586,11 @@ xwin_process_events(void) { xwin_refresh_pointer_map(); } @@ -1344,7 +1380,7 @@ break; -@@ -2547,6 +2617,15 @@ xwin_process_events(void) +@@ -2547,6 +2632,15 @@ xwin_process_events(void) break; case MapNotify: @@ -1360,7 +1396,7 @@ if (!g_seamless_active) rdp_send_client_window_status(1); break; -@@ -2577,6 +2656,10 @@ xwin_process_events(void) +@@ -2577,6 +2671,10 @@ xwin_process_events(void) sw_handle_restack(sw); break; @@ -1371,7 +1407,7 @@ } } /* Keep going */ -@@ -2612,6 +2695,8 @@ ui_select(int rdp_socket) +@@ -2612,6 +2710,8 @@ ui_select(int rdp_socket) tv.tv_sec = 60; tv.tv_usec = 0; @@ -1380,7 +1416,7 @@ #ifdef WITH_RDPSND rdpsnd_add_fds(&n, &rfds, &wfds, &tv); #endif -@@ -2628,6 +2713,8 @@ ui_select(int rdp_socket) +@@ -2628,6 +2728,8 @@ ui_select(int rdp_socket) error("select: %s\n", strerror(errno)); case 0: @@ -1389,7 +1425,7 @@ #ifdef WITH_RDPSND rdpsnd_check_fds(&rfds, &wfds); #endif -@@ -2638,6 +2725,8 @@ ui_select(int rdp_socket) +@@ -2638,6 +2740,8 @@ ui_select(int rdp_socket) continue; } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org