Only in /Users/bbraun/rdesktop-1.4.1: .xwin.c.swp diff -ud rdesktop-1.4.1/Makefile.in /Users/bbraun/rdesktop-1.4.1/Makefile.in --- rdesktop-1.4.1/Makefile.in 2005-05-04 13:32:16.000000000 -0700 +++ /Users/bbraun/rdesktop-1.4.1/Makefile.in 2007-03-10 08:00:41.000000000 -0800 @@ -32,7 +32,7 @@ all: $(TARGETS) rdesktop: $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) - $(CC) $(CFLAGS) -o rdesktop $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) -lX11 + $(CC) $(CFLAGS) -o rdesktop $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) -lX11 -lXinerama rdp2vnc: $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) $(VNCLINK) $(CFLAGS) -o rdp2vnc $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) $(LDVNC) Common subdirectories: rdesktop-1.4.1/doc and /Users/bbraun/rdesktop-1.4.1/doc Common subdirectories: rdesktop-1.4.1/keymaps and /Users/bbraun/rdesktop-1.4.1/keymaps diff -ud rdesktop-1.4.1/xwin.c /Users/bbraun/rdesktop-1.4.1/xwin.c --- rdesktop-1.4.1/xwin.c 2005-04-16 15:09:31.000000000 -0700 +++ /Users/bbraun/rdesktop-1.4.1/xwin.c 2007-03-10 07:58:36.000000000 -0800 @@ -20,6 +20,7 @@ #include #include +#include #include #include #include @@ -176,6 +177,36 @@ #define SET_FUNCTION(rop2) { if (rop2 != ROP2_COPY) XSetFunction(g_display, g_gc, rop2_map[rop2]); } #define RESET_FUNCTION(rop2) { if (rop2 != ROP2_COPY) XSetFunction(g_display, g_gc, GXcopy); } +static int rd_windowwidth(Screen *s) +{ + XineramaScreenInfo *xsi; + int num; + int ret; + + xsi = XineramaQueryScreens(g_display, &num); + if( xsi == NULL ) + return WidthOfScreen(s); + + ret = xsi[0].width; + XFree(xsi); + return ret; +} + +static int rd_windowheight(Screen *s) +{ + XineramaScreenInfo *xsi; + int num; + int ret; + + xsi = XineramaQueryScreens(g_display, &num); + if( xsi == NULL ) + return HeightOfScreen(s); + + ret = xsi[0].height; + XFree(xsi); + return ret; +} + static void mwm_hide_decorations(void) { @@ -1085,14 +1116,14 @@ */ if (g_fullscreen) { - g_width = WidthOfScreen(g_screen); - g_height = HeightOfScreen(g_screen); + g_width = rd_windowwidth(g_screen); + g_height = rd_windowheight(g_screen); } else if (g_width < 0) { /* Percent of screen */ - g_height = HeightOfScreen(g_screen) * (-g_width) / 100; - g_width = WidthOfScreen(g_screen) * (-g_width) / 100; + g_height = rd_windowwidth(g_screen) * (-g_width) / 100; + g_width = rd_windowheight(g_screen) * (-g_width) / 100; } else if (g_width == 0) { @@ -1161,14 +1192,19 @@ long input_mask, ic_input_mask; XEvent xevent; - wndwidth = g_fullscreen ? WidthOfScreen(g_screen) : g_width; - wndheight = g_fullscreen ? HeightOfScreen(g_screen) : g_height; + wndwidth = g_fullscreen ? rd_windowwidth(g_screen) : g_width; + wndheight = g_fullscreen ? rd_windowheight(g_screen) : g_height; + + if( g_fullscreen ) { + g_ypos = HeightOfScreen(g_screen) - g_height; + g_xpos = WidthOfScreen(g_screen) - g_width; + } /* Handle -x-y portion of geometry string */ if (g_xpos < 0 || (g_xpos == 0 && (g_pos & 2))) - g_xpos = WidthOfScreen(g_screen) + g_xpos - g_width; + g_xpos = rd_windowwidth(g_screen) + g_xpos - g_width; if (g_ypos < 0 || (g_ypos == 0 && (g_pos & 4))) - g_ypos = HeightOfScreen(g_screen) + g_ypos - g_height; + g_ypos = rd_windowheight(g_screen) + g_ypos - g_height; attribs.background_pixel = BlackPixelOfScreen(g_screen); attribs.border_pixel = WhitePixelOfScreen(g_screen);