diff -rc twin-3.1.13-classic/Make.rules twin-3.1.13/Make.rules *** twin-3.1.13-classic/Make.rules Fri Oct 1 09:50:40 1999 --- twin-3.1.13/Make.rules Wed Apr 5 09:44:10 2000 *************** *** 59,65 **** TWIN_CFLAGS_TRACE_0 = -DNO_DEBUG_MSGS -DNO_TRACE_MSGS TWIN_CFLAGS_TRACE_1 = -DDEBUG ! TWIN_CFLAGS = -DX386 -Dlinux \ $(TWIN_APISIZE:32=-DTWIN32) \ $(TWIN_CFLAGS_TRACE_$(TWIN_TRACE)) \ --- 59,65 ---- TWIN_CFLAGS_TRACE_0 = -DNO_DEBUG_MSGS -DNO_TRACE_MSGS TWIN_CFLAGS_TRACE_1 = -DDEBUG ! #-DSET_RESOLUTION TWIN_CFLAGS = -DX386 -Dlinux \ $(TWIN_APISIZE:32=-DTWIN32) \ $(TWIN_CFLAGS_TRACE_$(TWIN_TRACE)) \ *************** *** 90,102 **** CC = gcc -Wall -fwritable-strings -fPIC CXX = c++ #TBB: killed -g for distribution ! CFLAGS = -O2 $(AUX_CFLAGS) CXXFLAGS = -O2 $(AUX_CXXFLAGS) RCFLAGS = -I$(top_srcdir)/include -I$(blddir)/include $(AUX_RCFLAGS) LDFLAGS = X_LIBS = -L/usr/X11R6/lib X_CFLAGS = -I/usr/X11R6/include ! LIBS = -lX11 -lm -ldl CDEP = gcc -Wall -fwritable-strings -fPIC -MM CXXDEP = c++ -MM RANLIB = ranlib --- 90,103 ---- CC = gcc -Wall -fwritable-strings -fPIC CXX = c++ #TBB: killed -g for distribution ! CFLAGS = -g $(AUX_CFLAGS) ! #CFLAGS = -O2 $(AUX_CFLAGS) CXXFLAGS = -O2 $(AUX_CXXFLAGS) RCFLAGS = -I$(top_srcdir)/include -I$(blddir)/include $(AUX_RCFLAGS) LDFLAGS = X_LIBS = -L/usr/X11R6/lib X_CFLAGS = -I/usr/X11R6/include ! LIBS = -lX11 -lXext -lXxf86vm -lm -ldl CDEP = gcc -Wall -fwritable-strings -fPIC -MM CXXDEP = c++ -MM RANLIB = ranlib Binary files twin-3.1.13-classic/controls/libctl.a and twin-3.1.13/controls/libctl.a differ Only in twin-3.1.13/debugger: break.o Only in twin-3.1.13/debugger: db_disasm.o Only in twin-3.1.13/debugger: display.o Only in twin-3.1.13/debugger: expr.o Only in twin-3.1.13/debugger: hash.o Only in twin-3.1.13/debugger: info.o Only in twin-3.1.13/debugger: lex.yy.c Only in twin-3.1.13/debugger: lex.yy.o Only in twin-3.1.13/debugger: memory.o Only in twin-3.1.13/debugger: registers.o Only in twin-3.1.13/debugger: source.o Only in twin-3.1.13/debugger: stabs.o Only in twin-3.1.13/debugger: stack.o Only in twin-3.1.13/debugger: types.o Only in twin-3.1.13/debugger: y.tab.c Only in twin-3.1.13/debugger: y.tab.h Only in twin-3.1.13/debugger: y.tab.o Only in twin-3.1.13/dlls/advapi32: advapi.o Only in twin-3.1.13/dlls/advapi32: advapi32.c Only in twin-3.1.13/dlls/advapi32: advapi32.h Only in twin-3.1.13/dlls/advapi32: advapi32.o Only in twin-3.1.13/dlls/advapi32: advapi32.res.o Only in twin-3.1.13/dlls/advapi32: advapi32Bin.c Only in twin-3.1.13/dlls/advapi32: advapi32Bin.h Only in twin-3.1.13/dlls/advapi32: advapi32Bin.o Only in twin-3.1.13/dlls/advapi32: libadvapi32.so Only in twin-3.1.13/dlls/comm: Comm.res.o Only in twin-3.1.13/dlls/comm: CommBin.o Only in twin-3.1.13/dlls/comm: CommDrv.o Only in twin-3.1.13/dlls/comm: libcomm.so Only in twin-3.1.13/dlls/commctrl: WCommCtrl.res.o Only in twin-3.1.13/dlls/commctrl: WCommctl.o Only in twin-3.1.13/dlls/commctrl: WDragLbx.o Only in twin-3.1.13/dlls/commctrl: WHdr.o Only in twin-3.1.13/dlls/commctrl: WImgList.o Only in twin-3.1.13/dlls/commctrl: WLVHelpr.o Only in twin-3.1.13/dlls/commctrl: WLVLBox.o Only in twin-3.1.13/dlls/commctrl: WLView.o Only in twin-3.1.13/dlls/commctrl: WLists.o Only in twin-3.1.13/dlls/commctrl: WProgBar.o Only in twin-3.1.13/dlls/commctrl: WPropsht.o Only in twin-3.1.13/dlls/commctrl: WStatusb.o Only in twin-3.1.13/dlls/commctrl: WTVLBox.o Only in twin-3.1.13/dlls/commctrl: WTView.o Only in twin-3.1.13/dlls/commctrl: WTab.o Only in twin-3.1.13/dlls/commctrl: WTlbCust.o Only in twin-3.1.13/dlls/commctrl: WToolbar.o Only in twin-3.1.13/dlls/commctrl: WTooltip.o Only in twin-3.1.13/dlls/commctrl: WTrackbr.o Only in twin-3.1.13/dlls/commctrl: WUpdown.o Only in twin-3.1.13/dlls/commctrl: libcomctl32.so Only in twin-3.1.13/dlls/commdlg: ChooseColor.o Only in twin-3.1.13/dlls/commdlg: ChooseFont.o Only in twin-3.1.13/dlls/commdlg: Commdlg.o Only in twin-3.1.13/dlls/commdlg: Commdlg.res.o Only in twin-3.1.13/dlls/commdlg: CommdlgIF.o Only in twin-3.1.13/dlls/commdlg: CommdlgIT.o Only in twin-3.1.13/dlls/commdlg: FindReplDlg.o Only in twin-3.1.13/dlls/commdlg: GetOpenFileName.o Only in twin-3.1.13/dlls/commdlg: PrintDlg.o Only in twin-3.1.13/dlls/commdlg: commdlg32.c Only in twin-3.1.13/dlls/commdlg: commdlg32.h Only in twin-3.1.13/dlls/commdlg: commdlg32.o Only in twin-3.1.13/dlls/commdlg: commdlg32Bin.c Only in twin-3.1.13/dlls/commdlg: commdlg32Bin.h Only in twin-3.1.13/dlls/commdlg: commdlg32Bin.o Only in twin-3.1.13/dlls/commdlg: libcommdlg.so Only in twin-3.1.13/dlls/ddeml: DdeML.o Only in twin-3.1.13/dlls/ddeml: DdeML.res.o Only in twin-3.1.13/dlls/ddeml: DdeMLBin.o Only in twin-3.1.13/dlls/ddeml: libddeml.so Only in twin-3.1.13/dlls/keyboard: Keyboard.o Only in twin-3.1.13/dlls/keyboard: Keyboard.res.o Only in twin-3.1.13/dlls/keyboard: KeyboardBin.o Only in twin-3.1.13/dlls/keyboard: KeyboardIF.o Only in twin-3.1.13/dlls/keyboard: SysKeyboard.o Only in twin-3.1.13/dlls/keyboard: libkeyboard.so Only in twin-3.1.13/dlls/libdll: DefTable.o Only in twin-3.1.13/dlls/libdll: DummyEnviron.o Only in twin-3.1.13/dlls/libdll: LibMain.o Only in twin-3.1.13/dlls/libdll: LibWEP.o Only in twin-3.1.13/dlls/libdll: ResTable.o Only in twin-3.1.13/dlls/libdll: libdll.a Only in twin-3.1.13/dlls/lzexpand: LZExpand.o Only in twin-3.1.13/dlls/lzexpand: LZExpand.res.o Only in twin-3.1.13/dlls/lzexpand: LZExpandBin.o Only in twin-3.1.13/dlls/lzexpand: liblz32.so Only in twin-3.1.13/dlls/msvcrt: libmsvcrt.so Only in twin-3.1.13/dlls/msvcrt: msvcrt.o Only in twin-3.1.13/dlls/msvcrt: msvcrt.res.o Only in twin-3.1.13/dlls/msvcrt: msvcrt32.c Only in twin-3.1.13/dlls/msvcrt: msvcrt32.h Only in twin-3.1.13/dlls/msvcrt: msvcrt32.o Only in twin-3.1.13/dlls/msvcrt: msvcrt32Bin.c Only in twin-3.1.13/dlls/msvcrt: msvcrt32Bin.h Only in twin-3.1.13/dlls/msvcrt: msvcrt32Bin.o Only in twin-3.1.13/dlls/shell: About.o Only in twin-3.1.13/dlls/shell: About.res.o Only in twin-3.1.13/dlls/shell: DragDrop.o Only in twin-3.1.13/dlls/shell: Registry.o Only in twin-3.1.13/dlls/shell: Shell.o Only in twin-3.1.13/dlls/shell: ShellIF.o Only in twin-3.1.13/dlls/shell: libshell.so Only in twin-3.1.13/dlls/shell: shell32.c Only in twin-3.1.13/dlls/shell: shell32.h Only in twin-3.1.13/dlls/shell: shell32.o Only in twin-3.1.13/dlls/shell: shell32Bin.c Only in twin-3.1.13/dlls/shell: shell32Bin.h Only in twin-3.1.13/dlls/shell: shell32Bin.o Only in twin-3.1.13/dlls/sound: Sound.o Only in twin-3.1.13/dlls/sound: Sound.res.o Only in twin-3.1.13/dlls/sound: SoundBin.o Only in twin-3.1.13/dlls/sound: libsound.so Only in twin-3.1.13/dlls/system: System.o Only in twin-3.1.13/dlls/system: System.res.o Only in twin-3.1.13/dlls/system: SystemIF.o Only in twin-3.1.13/dlls/system: libsystem.so Only in twin-3.1.13/dlls/toolhelp: Info.o Only in twin-3.1.13/dlls/toolhelp: Task.o Only in twin-3.1.13/dlls/toolhelp: ToolHelp.o Only in twin-3.1.13/dlls/toolhelp: ToolHelp.res.o Only in twin-3.1.13/dlls/toolhelp: ToolHelpIF.o Only in twin-3.1.13/dlls/toolhelp: libtoolhelp.so Only in twin-3.1.13/dlls/toolhelp: segtab.o Only in twin-3.1.13/dlls/version: Ver.o Only in twin-3.1.13/dlls/version: Ver.res.o Only in twin-3.1.13/dlls/version: VerBin.o Only in twin-3.1.13/dlls/version: VerIF.o Only in twin-3.1.13/dlls/version: libver.so Only in twin-3.1.13/dlls/win87em: libwin87em.so Only in twin-3.1.13/dlls/win87em: win87em.o Only in twin-3.1.13/dlls/win87em: win87em.res.o Only in twin-3.1.13/dlls/win87em: win87emIF.o diff -rc twin-3.1.13-classic/dlls/winsock/.depend twin-3.1.13/dlls/winsock/.depend *** twin-3.1.13-classic/dlls/winsock/.depend Thu Sep 30 14:17:16 1999 --- twin-3.1.13/dlls/winsock/.depend Fri Oct 1 13:23:09 1999 *************** *** 8,14 **** ../../include/commdlg.h ../../include/ddeml.h \ ../../include/mmsystem.h ../../include/print.h \ ../../include/commctrl.h ../../include/prsht.h \ ! ../../windows/TwinSock.h ../../windows/Driver.h WinSockIF.o: ./WinSockIF.c ../../include/windows.h \ ../../include/platform.h ../../include/winmaptypes.h \ ../../include/windef.h ../../include/winnt.h ../../include/winbase.h \ --- 8,15 ---- ../../include/commdlg.h ../../include/ddeml.h \ ../../include/mmsystem.h ../../include/print.h \ ../../include/commctrl.h ../../include/prsht.h \ ! ../../windows/TwinSock.h ../../windows/Driver.h \ ! /usr/include/sys/time.h WinSockIF.o: ./WinSockIF.c ../../include/windows.h \ ../../include/platform.h ../../include/winmaptypes.h \ ../../include/windef.h ../../include/winnt.h ../../include/winbase.h \ *************** *** 25,31 **** ../../include/ObjEngine.h ../../windows/BinTypes.h \ ../../include/Resources.h ../../windows/DPMI.h \ ../../include/Segment.h ../../windows/LoadDLL.h ../../include/dos.h \ ! WinSockBin.h WinSockBin.o: ./WinSockBin.c ../../include/windows.h \ ../../include/platform.h ../../include/winmaptypes.h \ ../../include/windef.h ../../include/winnt.h ../../include/winbase.h \ --- 26,32 ---- ../../include/ObjEngine.h ../../windows/BinTypes.h \ ../../include/Resources.h ../../windows/DPMI.h \ ../../include/Segment.h ../../windows/LoadDLL.h ../../include/dos.h \ ! WinSockBin.h /usr/include/sys/time.h WinSockBin.o: ./WinSockBin.c ../../include/windows.h \ ../../include/platform.h ../../include/winmaptypes.h \ ../../include/windef.h ../../include/winnt.h ../../include/winbase.h \ Only in twin-3.1.13/dlls/winspool: libwinspool.so Only in twin-3.1.13/dlls/winspool: winspool.o Only in twin-3.1.13/dlls/winspool: winspool.res.o Only in twin-3.1.13/dlls/winspool: winspool32.c Only in twin-3.1.13/dlls/winspool: winspool32.h Only in twin-3.1.13/dlls/winspool: winspool32.o Only in twin-3.1.13/dlls/winspool: winspool32Bin.c Only in twin-3.1.13/dlls/winspool: winspool32Bin.h Only in twin-3.1.13/dlls/winspool: winspool32Bin.o Only in twin-3.1.13: errs Binary files twin-3.1.13-classic/graphics/libgdi.a and twin-3.1.13/graphics/libgdi.a differ diff -rc twin-3.1.13-classic/graphics/x11drv/.depend twin-3.1.13/graphics/x11drv/.depend *** twin-3.1.13-classic/graphics/x11drv/.depend Thu Sep 30 14:17:16 1999 --- twin-3.1.13/graphics/x11drv/.depend Fri Oct 1 13:22:39 1999 *************** *** 176,182 **** ../../include/windowsx.h ../../include/windowsx32.h DrvWinSock.h \ ../../windows/Driver.h ../../include/Log.h ../../include/debug.h \ ../../include/debugtools.h ../../include/MsgCode.h \ ! ../../include/WinSockUtil.h DrvColors.o: ./DrvColors.c ../../include/windows.h \ ../../include/platform.h ../../include/winmaptypes.h \ ../../include/windef.h ../../include/winnt.h ../../include/winbase.h \ --- 176,182 ---- ../../include/windowsx.h ../../include/windowsx32.h DrvWinSock.h \ ../../windows/Driver.h ../../include/Log.h ../../include/debug.h \ ../../include/debugtools.h ../../include/MsgCode.h \ ! ../../include/WinSockUtil.h /usr/include/errno.h DrvColors.o: ./DrvColors.c ../../include/windows.h \ ../../include/platform.h ../../include/winmaptypes.h \ ../../include/windef.h ../../include/winnt.h ../../include/winbase.h \ Only in twin-3.1.13/graphics/x11drv: DrvColorsNoPalette.c Only in twin-3.1.13/graphics/x11drv: DrvColorsOld.c diff -rc twin-3.1.13-classic/graphics/x11drv/DrvConfig.c twin-3.1.13/graphics/x11drv/DrvConfig.c *** twin-3.1.13-classic/graphics/x11drv/DrvConfig.c Thu Sep 30 14:17:16 1999 --- twin-3.1.13/graphics/x11drv/DrvConfig.c Fri May 5 08:59:11 2000 *************** *** 72,78 **** {WCP_FONTBOLD, 1,WCS_WINDOWS,"FontWeight", "700", 0, 0}, #ifdef TWIN32 ! {WCP_MENUSIZE, 1,WCS_WINDOWS,"MenuSize", "14", 0, 0}, {WCP_MENUBOLD, 1,WCS_WINDOWS,"MenuWeight", "400", 0, 0}, {WCP_DLGSIZE, 1,WCS_WINDOWS,"MenuSize", "12", 0, 0}, {WCP_DLGBOLD, 1,WCS_WINDOWS,"MenuWeight", "700", 0, 0}, --- 72,79 ---- {WCP_FONTBOLD, 1,WCS_WINDOWS,"FontWeight", "700", 0, 0}, #ifdef TWIN32 ! /* TBB: 10 not 14 */ ! {WCP_MENUSIZE, 1,WCS_WINDOWS,"MenuSize", "10", 0, 0}, {WCP_MENUBOLD, 1,WCS_WINDOWS,"MenuWeight", "400", 0, 0}, {WCP_DLGSIZE, 1,WCS_WINDOWS,"MenuSize", "12", 0, 0}, {WCP_DLGBOLD, 1,WCS_WINDOWS,"MenuWeight", "700", 0, 0}, Binary files twin-3.1.13-classic/graphics/x11drv/DrvConfig.o and twin-3.1.13/graphics/x11drv/DrvConfig.o differ diff -rc twin-3.1.13-classic/graphics/x11drv/DrvGraphics.c twin-3.1.13/graphics/x11drv/DrvGraphics.c *** twin-3.1.13-classic/graphics/x11drv/DrvGraphics.c Thu Sep 30 15:34:45 1999 --- twin-3.1.13/graphics/x11drv/DrvGraphics.c Sun Oct 10 09:40:35 1999 *************** *** 605,610 **** --- 605,613 ---- if ((lparc[2].x == lparc[3].x) && (lparc[2].y == lparc[3].y)) { angle1 = 0; angle2 = 360 * 64; + /* Take care to set a1 and a2 in case of a chord or pie */ + a1 = angle1; + a2 = angle2; } else { angle1 = Pt2Angle(cx,cy, width,height, lparc[2].x,lparc[2].y); a1 = angle1; Binary files twin-3.1.13-classic/graphics/x11drv/DrvGraphics.o and twin-3.1.13/graphics/x11drv/DrvGraphics.o differ diff -rc twin-3.1.13-classic/graphics/x11drv/DrvWindows.c twin-3.1.13/graphics/x11drv/DrvWindows.c *** twin-3.1.13-classic/graphics/x11drv/DrvWindows.c Thu Sep 30 14:17:16 1999 --- twin-3.1.13/graphics/x11drv/DrvWindows.c Tue Jun 13 15:24:28 2000 *************** *** 27,41 **** mailto:twin@willows.com */ - - #include #include "windows.h" #include "windowsx.h" #include "Driver.h" #include #include #include "Log.h" #include "DrvDP.h" /* PRIVATEDISPLAY */ --- 27,41 ---- mailto:twin@willows.com */ + #include #include "windows.h" #include "windowsx.h" #include "Driver.h" #include #include + #include #include "Log.h" #include "DrvDP.h" /* PRIVATEDISPLAY */ *************** *** 51,56 **** --- 51,61 ---- /* external library hook */ extern TWINLIBCALLBACKPROC lpLibCallback; + /* TBB: hack to provide a working (but black and white) icon in a simple way. */ + extern unsigned char application_icon_bits[]; + extern unsigned char application_icon_mask_bits[]; + extern char application_class_name[]; + static DWORD DrvInitWindowSubsystem(UINT,BOOL); static DWORD DrvCreateWindows(LPARAM, LPARAM, LPVOID); static DWORD DrvDestroyWindows(LPARAM, LPARAM, LPVOID); *************** *** 225,231 **** { PRIVATEDISPLAY *dp = GETDP(); Window frame_win = (Window)lpStruct; - /* X does not tolerate windows with zero or negative size */ if (((LPRECT)dwParm2)->right <= 0) ((LPRECT)dwParm2)->right = 1; --- 230,235 ---- *************** *** 248,254 **** { PRIVATEDISPLAY *dp = GETDP(); Window frame_win = (Window)lpStruct; - /* X does not tolerate windows with zero or negative size */ if (((LPRECT)dwParm2)->right <= 0) ((LPRECT)dwParm2)->right = 1; --- 252,257 ---- *************** *** 322,333 **** XSizeHints size_hints; XWMHints wm_hints; Window win_parent, frame_win; Pixmap icon_pixmap = None,icon_mask = None; DRVIMAGEDATA *lpimage; GC gc; PRIVATEDISPLAY *Disp = GETDP(); WM_WINDOW_STATE WMWindowState; ! input_class = (lpwcs->dwExStyle & WS_EX_TRANSPARENT)? InputOnly:InputOutput; --- 325,352 ---- XSizeHints size_hints; XWMHints wm_hints; Window win_parent, frame_win; + /* TBB: fake class information (set the same as the window name) so + properties can be set in icewm. This is fairly bogus; we should + be using the win32 window class name, but that's fairly advanced + TWIN hackery since it isn't currently passed down here to us. */ + XClassHint class_hint; + + + /* TBB: pass owner information using WM_TRANSIENT_FOR. Give the + window manager a chance to manage popups and dialogs better. + Pass the window from the Windows code in the currently unused + first long parameter */ + int i; + int ownershipId = -1; + int ownerOwnershipId = -1; + Window win_owner = (Window) dwParm1; + Atom ATOM_WM_TRANSIENT_FOR; Pixmap icon_pixmap = None,icon_mask = None; DRVIMAGEDATA *lpimage; GC gc; PRIVATEDISPLAY *Disp = GETDP(); WM_WINDOW_STATE WMWindowState; ! input_class = (lpwcs->dwExStyle & WS_EX_TRANSPARENT)? InputOnly:InputOutput; *************** *** 348,360 **** #ifdef TWIN_PALETTE xattr.colormap = Disp->SystemPalette; #else xattr.colormap = Disp->color_map; #endif ! ! dwCWMask = CWBackPixel|CWBorderPixel|CWBitGravity|CWColormap; ! LOCK_SECTION( _MTLOCK_VIDEO); win_parent = RootWindow(Disp->display, Disp->screen); UNLOCK_SECTION( _MTLOCK_VIDEO); --- 367,382 ---- #ifdef TWIN_PALETTE xattr.colormap = Disp->SystemPalette; + XInstallColormap(Disp->display, xattr.colormap); #else xattr.colormap = Disp->color_map; #endif ! /* TBB: HACK. See if this make Enlightenment CALM DOWN. */ ! dwCWMask = CWBackPixel|CWBorderPixel|CWBitGravity; ! /* |CWColormap */ LOCK_SECTION( _MTLOCK_VIDEO); + ATOM_WM_TRANSIENT_FOR = XInternAtom(Disp->display, + "WM_TRANSIENT_FOR", False); win_parent = RootWindow(Disp->display, Disp->screen); UNLOCK_SECTION( _MTLOCK_VIDEO); *************** *** 384,389 **** --- 406,412 ---- lpwcs->rcFrame.bottom = max(lpwcs->rcFrame.bottom,1); LOCK_SECTION( _MTLOCK_VIDEO); + if (input_class != InputOnly) frame_win = XCreateWindow(Disp->display, win_parent, lpwcs->rcFrame.left,lpwcs->rcFrame.top, *************** *** 404,409 **** --- 427,436 ---- CopyFromParent, CWOverrideRedirect, &xattr); + XChangeProperty(Disp->display, frame_win, + ATOM_WM_TRANSIENT_FOR, XA_WINDOW, 32, + PropModeReplace, + (unsigned char *) &win_owner, 1); UNLOCK_SECTION( _MTLOCK_VIDEO); if (frame_win == 0) *************** *** 418,424 **** XSaveContext(Disp->display, frame_win, Disp->window_ex_style, (caddr_t)lpwcs->dwExStyle); UNLOCK_SECTION( _MTLOCK_VIDEO); - #ifdef LATER /* Use XSetWMProperties for top-level windows instead */ #endif --- 445,450 ---- *************** *** 427,437 **** /* we can set user-specified values, min/maxsize, basesize etc. here */ #endif size_hints.flags = PPosition | PSize; size_hints.x = lpwcs->rcFrame.left; size_hints.y = lpwcs->rcFrame.top; size_hints.width = lpwcs->rcFrame.right; size_hints.height = lpwcs->rcFrame.bottom; ! if (lpwcs->lpIconANDData) { XGCValues values; --- 453,496 ---- /* we can set user-specified values, min/maxsize, basesize etc. here */ #endif size_hints.flags = PPosition | PSize; + if (!(lpwcs->dwStyle & WS_THICKFRAME)) { + /* Don't allow resize when Windows doesn't either. + Caution: when you use this logic, some WMs + won't let the application itself resize + the window. That's annoying. TBB */ + size_hints.flags |= PMinSize | PMaxSize | PBaseSize; + size_hints.min_width = lpwcs->rcFrame.right; + size_hints.min_height = lpwcs->rcFrame.bottom; + size_hints.max_width = lpwcs->rcFrame.right; + size_hints.max_height = lpwcs->rcFrame.bottom; + size_hints.base_width = lpwcs->rcFrame.right; + size_hints.base_height = lpwcs->rcFrame.bottom; + } size_hints.x = lpwcs->rcFrame.left; size_hints.y = lpwcs->rcFrame.top; size_hints.width = lpwcs->rcFrame.right; size_hints.height = lpwcs->rcFrame.bottom; ! /* TBB: The real icon stuff is monochromatic ! and maybe broken, as far as I can tell; no matter what ! icon resources I give it, I don't seem to get anything ! intelligible. This hack is just monochromatic. ! The pbmplus utilities make it easy to ! create xbm's, and these are then massaged to ! have the appropriate name and not be declared ! static. It works. It would work better if I took ! the time to read the xpm manpages and ! use that instead for color. Breaks xwin32 and ! other apps that don't provide an ! application_icon_mask array to link with. */ ! icon_mask = XCreateBitmapFromData(Disp->display, ! DefaultRootWindow(Disp->display), ! application_icon_mask_bits, ! 32, 32); ! icon_pixmap = XCreateBitmapFromData(Disp->display, ! DefaultRootWindow(Disp->display), ! application_icon_bits, ! 32, 32); ! #if 0 if (lpwcs->lpIconANDData) { XGCValues values; *************** *** 440,446 **** LOCK_SECTION( _MTLOCK_VIDEO); icon_mask = XCreatePixmap(Disp->display, DefaultRootWindow(Disp->display), ! X_ICON_SIZE,X_ICON_SIZE,1); values.foreground = 0; values.background = 1; gc = XCreateGC(Disp->display,icon_mask, --- 499,505 ---- LOCK_SECTION( _MTLOCK_VIDEO); icon_mask = XCreatePixmap(Disp->display, DefaultRootWindow(Disp->display), ! X_ICON_SIZE,X_ICON_SIZE, 1); values.foreground = 0; values.background = 1; gc = XCreateGC(Disp->display,icon_mask, *************** *** 455,470 **** UNLOCK_SECTION( _MTLOCK_VIDEO); } } - if (lpwcs->lpIconXORData) { lpimage = (DRVIMAGEDATA *)lpwcs->lpIconXORData; if (lpimage->image) { #if 1 LOCK_SECTION( _MTLOCK_VIDEO); icon_pixmap = XCreateBitmapFromData(Disp->display, DefaultRootWindow(Disp->display), lpimage->image->data, lpimage->nWidth, lpimage->nHeight); UNLOCK_SECTION( _MTLOCK_VIDEO); #else { --- 514,530 ---- UNLOCK_SECTION( _MTLOCK_VIDEO); } } if (lpwcs->lpIconXORData) { lpimage = (DRVIMAGEDATA *)lpwcs->lpIconXORData; if (lpimage->image) { #if 1 LOCK_SECTION( _MTLOCK_VIDEO); + #if 0 icon_pixmap = XCreateBitmapFromData(Disp->display, DefaultRootWindow(Disp->display), lpimage->image->data, lpimage->nWidth, lpimage->nHeight); + #endif UNLOCK_SECTION( _MTLOCK_VIDEO); #else { *************** *** 494,500 **** #endif } } ! /* set properties for window manager */ LOCK_SECTION( _MTLOCK_VIDEO); XSetStandardProperties(Disp->display, frame_win, --- 554,560 ---- #endif } } ! #endif /* set properties for window manager */ LOCK_SECTION( _MTLOCK_VIDEO); XSetStandardProperties(Disp->display, frame_win, *************** *** 507,512 **** --- 567,589 ---- 0,0, #endif &size_hints); + /* TBB hack. Ought to pass the real WIN32 class name. + Instead, we have a single class name, and we append + -transient for owned windows such as dialog boxes so + that their icewm behavior can be set differently. + It works. */ + if (win_owner) { + char class_name[256]; + strcpy(class_name, application_class_name); + strcat(class_name, "-transient"); + class_hint.res_name = class_name; + class_hint.res_class = class_name; + } else { + class_hint.res_name = application_class_name; + class_hint.res_class = application_class_name; + } + XSetClassHint(Disp->display, frame_win, + &class_hint); UNLOCK_SECTION( _MTLOCK_VIDEO); #ifdef LATER *************** *** 521,526 **** --- 598,606 ---- wm_hints.flags = InputHint | StateHint; if (icon_pixmap != None) wm_hints.flags |= IconPixmapHint; + /* TBB: we need both hints */ + if (icon_mask != None) + wm_hints.flags |= IconMaskHint; #ifdef LATER if (lpwcs->dwStyle & WS_MINIMIZE) wm_hints.initial_state = IconicState; *************** *** 577,582 **** --- 657,664 ---- static DWORD DrvDestroyWindows(LPARAM dwParm1, LPARAM dwParm2, LPVOID lpStruct) { + int i; + int ownershipId = -1; Window win = (Window)lpStruct; PRIVATEDISPLAY *Disp = GETDP(); *************** *** 586,592 **** XDeleteContext(Disp->display,win,Disp->window_ex_style); XDestroyWindow(Disp->display, win); ! UNLOCK_SECTION( _MTLOCK_VIDEO); DriverFlushXEvents(); --- 668,674 ---- XDeleteContext(Disp->display,win,Disp->window_ex_style); XDestroyWindow(Disp->display, win); ! UNLOCK_SECTION( _MTLOCK_VIDEO); DriverFlushXEvents(); *************** *** 645,650 **** --- 727,742 ---- None, None, CurrentTime); + /* TBB: alt-tabbing in KDE will cause the grabbing window to get + lost permanently behind its parent window in many + situations. This is a bad thing. Don't allow keyboard + events to go to other apps during the capture. */ + nRet = XGrabKeyboard(Disp->display, + frame_win, + False, + GrabModeAsync, + GrabModeAsync, + CurrentTime); #endif XSync(Disp->display,False); UNLOCK_SECTION( _MTLOCK_VIDEO); *************** *** 655,660 **** --- 747,754 ---- Disp = GETDP(); LOCK_SECTION( _MTLOCK_VIDEO); XUngrabPointer(Disp->display, CurrentTime); + /* TBB: ungrab keyboard. */ + XUngrabKeyboard(Disp->display, CurrentTime); XSync(Disp->display,False); UNLOCK_SECTION( _MTLOCK_VIDEO); *************** *** 714,720 **** Window win_restack[2]; PRIVATEDISPLAY *Disp = GETDP(); int nFunc = (int)hWndInsertAfter; ! switch (nFunc) { case (int)HWND_TOP: #ifdef LATER --- 808,820 ---- Window win_restack[2]; PRIVATEDISPLAY *Disp = GETDP(); int nFunc = (int)hWndInsertAfter; ! /* TBB: when the KDE window manager is present, this call ! appears to be necessary. Otherwise, menus flicker up and ! promptly get pushed behind all other windows. I don't ! know why. WM_TRANSIENT_FOR doesn't help or hurt. */ ! #if 1 ! Sleep(50); ! #endif switch (nFunc) { case (int)HWND_TOP: #ifdef LATER *************** *** 922,928 **** static DWORD DrvInitWindowSubsystem(UINT uiCompatibility, BOOL bInit) { - return 0L; } --- 1022,1027 ---- *************** *** 1063,1066 **** --- 1162,1166 ---- { return DrvFixupStackingOrder((HWND)dwParm1, (Window)dwParm2, (Window)lpStruct); } + Binary files twin-3.1.13-classic/graphics/x11drv/DrvWindows.o and twin-3.1.13/graphics/x11drv/DrvWindows.o differ diff -rc twin-3.1.13-classic/graphics/x11drv/Makefile twin-3.1.13/graphics/x11drv/Makefile *** twin-3.1.13-classic/graphics/x11drv/Makefile Thu Sep 30 14:17:16 1999 --- twin-3.1.13/graphics/x11drv/Makefile Fri Mar 31 18:51:26 2000 *************** *** 11,17 **** DrvRegions.c DrvText.c DrvUtils.c DrvIPC.c DrvInit.c \ RopCodes.c DrvWindows.c DrvCursor.c DrvWinSock.c \ DrvColors.c DrvEvents.c XICCCM.c DrvKeyboard.c \ ! XEvents.c DrvConfig.c DrvPrinting.c AUX_CFLAGS = $(X_CFLAGS) --- 11,17 ---- DrvRegions.c DrvText.c DrvUtils.c DrvIPC.c DrvInit.c \ RopCodes.c DrvWindows.c DrvCursor.c DrvWinSock.c \ DrvColors.c DrvEvents.c XICCCM.c DrvKeyboard.c \ ! XEvents.c DrvConfig.c DrvPrinting.c XSetResolution.c AUX_CFLAGS = $(X_CFLAGS) diff -rc twin-3.1.13-classic/graphics/x11drv/Makefile.in twin-3.1.13/graphics/x11drv/Makefile.in *** twin-3.1.13-classic/graphics/x11drv/Makefile.in Thu Sep 30 14:17:16 1999 --- twin-3.1.13/graphics/x11drv/Makefile.in Fri Mar 31 18:51:14 2000 *************** *** 10,16 **** DrvRegions.c DrvText.c DrvUtils.c DrvIPC.c DrvInit.c \ RopCodes.c DrvWindows.c DrvCursor.c DrvWinSock.c \ DrvColors.c DrvEvents.c XICCCM.c DrvKeyboard.c \ ! XEvents.c DrvConfig.c DrvPrinting.c AUX_CFLAGS = $(X_CFLAGS) --- 10,16 ---- DrvRegions.c DrvText.c DrvUtils.c DrvIPC.c DrvInit.c \ RopCodes.c DrvWindows.c DrvCursor.c DrvWinSock.c \ DrvColors.c DrvEvents.c XICCCM.c DrvKeyboard.c \ ! XEvents.c DrvConfig.c DrvPrinting.c XSetResolution.c AUX_CFLAGS = $(X_CFLAGS) diff -rc twin-3.1.13-classic/graphics/x11drv/XEvents.c twin-3.1.13/graphics/x11drv/XEvents.c *** twin-3.1.13-classic/graphics/x11drv/XEvents.c Thu Sep 30 14:17:16 1999 --- twin-3.1.13/graphics/x11drv/XEvents.c Tue Jun 13 15:25:06 2000 *************** *** 28,34 **** mailto:twin@willows.com **************************************************************************/ - #include #include --- 28,33 ---- *************** *** 39,45 **** #include #include - #include "Log.h" #include "kerndef.h" #include "DrvDP.h" --- 38,43 ---- *************** *** 57,62 **** --- 55,67 ---- DWORD DriverWaitEvent(BOOL); void DriverFlushXEvents(void); + #ifdef SET_RESOLUTION + /* A hack introduced by TBB. */ + int DriverGetResolution(int *widthP, int *heightP); + int DriverSetResolution(int width, int height); + int DriverSetViewport(int width, int height); + #endif + DWORD DrvHandleKeyboardEvents(LPARAM, LPARAM, LPVOID); DWORD DrvWindowsEvents(LPARAM,LPARAM,LPVOID); DWORD InternalICCCM(int ,PRIVATEDISPLAY *,XEvent *); *************** *** 88,93 **** --- 93,162 ---- UNLOCK_SECTION( _MTLOCK_VIDEO); } + #ifdef SET_RESOLUTION + + extern int + DrvSetResolutionBody(Display *d, int screen, + int width, int height); + extern int + DrvGetResolutionBody(Display *d, int screen, + int *widthP, int *heightP); + extern int + DrvSetViewportBody(Display *d, int screen, + int x, int y); + + int + DriverSetViewport(int x, int y) + { + PRIVATEDISPLAY *dp = GETDP(); + int result; + LOCK_SECTION( _MTLOCK_VIDEO); + result = DrvSetViewportBody(dp->display, dp->screen, + x, y); + UNLOCK_SECTION( _MTLOCK_VIDEO); + return result; + } + + + int + DriverSetResolution(int width, int height) + { + PRIVATEDISPLAY *dp = GETDP(); + int result; + LOCK_SECTION( _MTLOCK_VIDEO); + result = DrvSetResolutionBody(dp->display, dp->screen, + width, height); + UNLOCK_SECTION( _MTLOCK_VIDEO); + if (result) { + HWND32 winInfo = GETHWND32(GetDesktopWindow()); + winInfo->rWnd.right = width; + winInfo->rWnd.bottom = height; + RELEASEWININFO(winInfo); + SetSystemMetrics(SM_CXSCREEN, width); + SetSystemMetrics(SM_CYSCREEN, height); + SetSystemMetrics(SM_CXFULLSCREEN, width); + SetSystemMetrics(SM_CYFULLSCREEN, height - + GetSystemMetrics(SM_CYCAPTION)); + + } + return result; + } + + int + DriverGetResolution(int *widthP, int *heightP) + { + PRIVATEDISPLAY *dp = GETDP(); + int result; + LOCK_SECTION( _MTLOCK_VIDEO); + result = DrvGetResolutionBody(dp->display, dp->screen, + widthP, heightP); + UNLOCK_SECTION( _MTLOCK_VIDEO); + return result; + } + + + #endif /* SET_RESOLUTION */ + DWORD DriverWaitEvent(BOOL bNoWait) { *************** *** 539,544 **** --- 608,614 ---- revert_return,CurrentTime); } } + XInstallColormap(dp->display, dp->SystemPalette); UNLOCK_SECTION( _MTLOCK_VIDEO); break; *************** *** 567,572 **** --- 637,643 ---- } win = 0; } + XUninstallColormap(dp->display, dp->SystemPalette); UNLOCK_SECTION( _MTLOCK_VIDEO); break; *************** *** 666,671 **** --- 737,743 ---- break; case CirculateNotify: + msgstr = "CirculateNotify"; break; Binary files twin-3.1.13-classic/graphics/x11drv/XEvents.o and twin-3.1.13/graphics/x11drv/XEvents.o differ Only in twin-3.1.13/graphics/x11drv: XSetResolution.c Only in twin-3.1.13/graphics/x11drv: XSetResolution.o Only in twin-3.1.13/graphics/x11drv: display Only in twin-3.1.13/graphics/x11drv: errs Binary files twin-3.1.13-classic/graphics/x11drv/libx11.a and twin-3.1.13/graphics/x11drv/libx11.a differ Only in twin-3.1.13/graphics/x11drv: screen Only in twin-3.1.13/graphics/x11drv: winpal.c Only in twin-3.1.13/graphics/x11drv: xpal.c Binary files twin-3.1.13-classic/if1632/libbin16.a and twin-3.1.13/if1632/libbin16.a differ Binary files twin-3.1.13-classic/memory/libmemory.a and twin-3.1.13/memory/libmemory.a differ Binary files twin-3.1.13-classic/msdos/libmsdos.a and twin-3.1.13/msdos/libmsdos.a differ Only in twin-3.1.13/multimedia: MCI.o Only in twin-3.1.13/multimedia: MMBin.o Only in twin-3.1.13/multimedia: MMIF.o Only in twin-3.1.13/multimedia: MultiMedia.o Only in twin-3.1.13/multimedia: MultiMedia.res.o Only in twin-3.1.13/multimedia: libmmsystem.so Only in twin-3.1.13/multimedia: midi.o Only in twin-3.1.13/multimedia: mmaux.o Only in twin-3.1.13/multimedia: mmdrv.o Only in twin-3.1.13/multimedia: wave.o Only in twin-3.1.13/ole: CliBin.o Only in twin-3.1.13/ole: OleCli.o Only in twin-3.1.13/ole: OleCliIF.o Only in twin-3.1.13/ole: OleSvr.o Only in twin-3.1.13/ole: OleSvrIF.o Only in twin-3.1.13/ole: SvrBin.o Only in twin-3.1.13/ole: libolecli.so Only in twin-3.1.13/ole: libolesvr.so Only in twin-3.1.13/ole: olecli.res.o Only in twin-3.1.13/ole: olesvr.res.o diff -rc twin-3.1.13-classic/osdll/.depend twin-3.1.13/osdll/.depend *** twin-3.1.13-classic/osdll/.depend Thu Sep 30 14:17:44 1999 --- twin-3.1.13/osdll/.depend Fri Oct 1 13:22:30 1999 *************** *** 7,13 **** ../include/commdlg.h ../include/ddeml.h ../include/mmsystem.h \ ../include/print.h ../include/commctrl.h ../include/prsht.h \ ../include/Log.h ../include/debug.h ../include/debugtools.h \ ! ../include/MsgCode.h DrvThreads.h DrvMemory.o: ./DrvMemory.c ../windows/Driver.h ../include/windows.h \ ../include/platform.h ../include/winmaptypes.h ../include/windef.h \ ../include/winnt.h ../include/winbase.h ../include/winver.h \ --- 7,13 ---- ../include/commdlg.h ../include/ddeml.h ../include/mmsystem.h \ ../include/print.h ../include/commctrl.h ../include/prsht.h \ ../include/Log.h ../include/debug.h ../include/debugtools.h \ ! ../include/MsgCode.h DrvThreads.h /usr/include/sys/time.h DrvMemory.o: ./DrvMemory.c ../windows/Driver.h ../include/windows.h \ ../include/platform.h ../include/winmaptypes.h ../include/windef.h \ ../include/winnt.h ../include/winbase.h ../include/winver.h \ Binary files twin-3.1.13-classic/osdll/libosdll.a and twin-3.1.13/osdll/libosdll.a differ Only in twin-3.1.13/readline: complete.o Only in twin-3.1.13/readline: editline.o Only in twin-3.1.13/readline: libreadline.a Only in twin-3.1.13/readline: sysunix.o Only in twin-3.1.13/samples/treeview: TVDialog.o Only in twin-3.1.13/samples/treeview: TViewApp.o Only in twin-3.1.13/samples/treeview: TViewApp.res.o Only in twin-3.1.13/samples/treeview: treeview Only in twin-3.1.13/samples/windemo32: windemo Only in twin-3.1.13/samples/windemo32: windemo.o Only in twin-3.1.13/samples/windemo32: windemo.res.o Binary files twin-3.1.13-classic/scheduler/libsched.a and twin-3.1.13/scheduler/libsched.a differ Only in twin-3.1.13: update Only in twin-3.1.13/win32: LoadPE.o Only in twin-3.1.13/win32: PE.res.o Only in twin-3.1.13/win32: Resources32.o Only in twin-3.1.13/win32: libpe32.so diff -rc twin-3.1.13-classic/windows/.depend twin-3.1.13/windows/.depend *** twin-3.1.13-classic/windows/.depend Thu Sep 30 14:17:54 1999 --- twin-3.1.13/windows/.depend Fri Oct 1 13:22:59 1999 *************** *** 397,403 **** ../include/winsock.h ../include/WSA.h ../include/WinSocktypes.h \ ../include/commdlg.h ../include/ddeml.h ../include/mmsystem.h \ ../include/print.h ../include/commctrl.h ../include/prsht.h \ ! /usr/lib/gcc-lib/i386-linux/2.7.2.1/include/stdarg.h Beep.o: ./Beep.c ../include/windows.h ../include/platform.h \ ../include/winmaptypes.h ../include/windef.h ../include/winnt.h \ ../include/winbase.h ../include/winver.h ../include/wincon.h \ --- 397,403 ---- ../include/winsock.h ../include/WSA.h ../include/WinSocktypes.h \ ../include/commdlg.h ../include/ddeml.h ../include/mmsystem.h \ ../include/print.h ../include/commctrl.h ../include/prsht.h \ ! /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h Beep.o: ./Beep.c ../include/windows.h ../include/platform.h \ ../include/winmaptypes.h ../include/windef.h ../include/winnt.h \ ../include/winbase.h ../include/winver.h ../include/wincon.h \ *************** *** 466,472 **** ../include/ddeml.h ../include/mmsystem.h ../include/print.h \ ../include/commctrl.h ../include/prsht.h ../include/Log.h \ ../include/debug.h ../include/debugtools.h ../include/MsgCode.h \ ! heap.h RscData.h /usr/lib/gcc-lib/i386-linux/2.7.2.1/include/stdarg.h \ ../include/Resources.h ../include/Module.h ../include/ModTable.h \ ../include/Bin32.h ../include/ObjEngine.h /usr/include/setjmp.h \ Locale.h Strings32.h --- 466,473 ---- ../include/ddeml.h ../include/mmsystem.h ../include/print.h \ ../include/commctrl.h ../include/prsht.h ../include/Log.h \ ../include/debug.h ../include/debugtools.h ../include/MsgCode.h \ ! heap.h RscData.h \ ! /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h \ ../include/Resources.h ../include/Module.h ../include/ModTable.h \ ../include/Bin32.h ../include/ObjEngine.h /usr/include/setjmp.h \ Locale.h Strings32.h *************** *** 932,938 **** ../include/ddeml.h ../include/mmsystem.h ../include/print.h \ ../include/commctrl.h ../include/prsht.h ../include/Log.h \ ../include/debug.h ../include/debugtools.h ../include/MsgCode.h \ ! heap.h RscData.h /usr/lib/gcc-lib/i386-linux/2.7.2.1/include/stdarg.h \ ../include/Resources.h ../include/Module.h ../include/ModTable.h \ ../include/Bin32.h ../include/ObjEngine.h /usr/include/setjmp.h \ WinConfig.h Strings32.h --- 933,940 ---- ../include/ddeml.h ../include/mmsystem.h ../include/print.h \ ../include/commctrl.h ../include/prsht.h ../include/Log.h \ ../include/debug.h ../include/debugtools.h ../include/MsgCode.h \ ! heap.h RscData.h \ ! /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h \ ../include/Resources.h ../include/Module.h ../include/ModTable.h \ ../include/Bin32.h ../include/ObjEngine.h /usr/include/setjmp.h \ WinConfig.h Strings32.h Only in twin-3.1.13/windows: Beep.o Binary files twin-3.1.13-classic/windows/Caret.o and twin-3.1.13/windows/Caret.o differ Only in twin-3.1.13/windows: Classes.o Only in twin-3.1.13/windows: Clipboard.o Only in twin-3.1.13/windows: Comm.o Binary files twin-3.1.13-classic/windows/ConvertArray.o and twin-3.1.13/windows/ConvertArray.o differ Only in twin-3.1.13/windows: ConvertRes.o Only in twin-3.1.13/windows: DPMI.o Only in twin-3.1.13/windows: Debug.o Only in twin-3.1.13/windows: DefWnd.o Binary files twin-3.1.13-classic/windows/DeviceData.o and twin-3.1.13/windows/DeviceData.o differ diff -rc twin-3.1.13-classic/windows/Dialog.c twin-3.1.13/windows/Dialog.c *** twin-3.1.13-classic/windows/Dialog.c Thu Sep 30 14:17:52 1999 --- twin-3.1.13/windows/Dialog.c Wed May 17 11:00:19 2000 *************** *** 1195,1202 **** HWND hWnd,hControl; hWnd = GetDialogFocus(hDlg); ! if (!RestoreDlgFocus(hDlg)) ! DlgSetFocus(GetFirstDlgTabItem(hDlg)); hControl = GetFocus(); } break; --- 1195,1208 ---- HWND hWnd,hControl; hWnd = GetDialogFocus(hDlg); ! if (!RestoreDlgFocus(hDlg)) ! { ! /* TBB: don't assume there is at least one item */ ! HWND first = GetFirstDlgTabItem(hDlg); ! if (first) { ! DlgSetFocus(first); ! } ! } hControl = GetFocus(); } break; Only in twin-3.1.13/windows: Dialog.o Binary files twin-3.1.13-classic/windows/DisplayClipping.o and twin-3.1.13/windows/DisplayClipping.o differ Binary files twin-3.1.13-classic/windows/DisplayDC.o and twin-3.1.13/windows/DisplayDC.o differ Binary files twin-3.1.13-classic/windows/DisplayGraphics.o and twin-3.1.13/windows/DisplayGraphics.o differ Binary files twin-3.1.13-classic/windows/DisplayObjects.o and twin-3.1.13/windows/DisplayObjects.o differ Binary files twin-3.1.13-classic/windows/DisplayText.o and twin-3.1.13/windows/DisplayText.o differ Binary files twin-3.1.13-classic/windows/Dither.o and twin-3.1.13/windows/Dither.o differ Binary files twin-3.1.13-classic/windows/DrawFrame.o and twin-3.1.13/windows/DrawFrame.o differ Binary files twin-3.1.13-classic/windows/DrawText.o and twin-3.1.13/windows/DrawText.o differ Only in twin-3.1.13/windows: Driver.o Binary files twin-3.1.13-classic/windows/Events.o and twin-3.1.13/windows/Events.o differ Only in twin-3.1.13/windows: Exec.o Only in twin-3.1.13/windows: ExecUtl.o Only in twin-3.1.13/windows: Execlinux.o Binary files twin-3.1.13-classic/windows/FancyRgn.o and twin-3.1.13/windows/FancyRgn.o differ Binary files twin-3.1.13-classic/windows/File32.o and twin-3.1.13/windows/File32.o differ Binary files twin-3.1.13-classic/windows/FileSys.o and twin-3.1.13/windows/FileSys.o differ Only in twin-3.1.13/windows: FormatMessage.o Only in twin-3.1.13/windows: Hook.o Only in twin-3.1.13/windows: IOEmu.o Only in twin-3.1.13/windows: IsBinary.o Binary files twin-3.1.13-classic/windows/Kernel.o and twin-3.1.13/windows/Kernel.o differ Only in twin-3.1.13/windows: Keyboard.o Binary files twin-3.1.13-classic/windows/KrnAtoms.o and twin-3.1.13/windows/KrnAtoms.o differ Binary files twin-3.1.13-classic/windows/KrnFileIO.o and twin-3.1.13/windows/KrnFileIO.o differ Binary files twin-3.1.13-classic/windows/KrnTask.o and twin-3.1.13/windows/KrnTask.o differ Binary files twin-3.1.13-classic/windows/LSDevices.o and twin-3.1.13/windows/LSDevices.o differ Only in twin-3.1.13/windows: LoadDLL.o Only in twin-3.1.13/windows: LoadLibrary.o Only in twin-3.1.13/windows: LoadModule.o Only in twin-3.1.13/windows: Locale.o Only in twin-3.1.13/windows: MDI.o Binary files twin-3.1.13-classic/windows/MapMode.o and twin-3.1.13/windows/MapMode.o differ Only in twin-3.1.13/windows: MenuAPI.o diff -rc twin-3.1.13-classic/windows/MenuProc.c twin-3.1.13/windows/MenuProc.c *** twin-3.1.13-classic/windows/MenuProc.c Thu Sep 30 14:17:53 1999 --- twin-3.1.13/windows/MenuProc.c Mon Apr 3 11:50:52 2000 *************** *** 129,135 **** HWND hPopup = 0, hWndTmp; DWORD dwIndents; int n=0,nCount; - switch(uiMsg) { case WM_NCCREATE: lptps = (LPTRACKPOPUPSTRUCT)WinMalloc(sizeof(TRACKPOPUPSTRUCT)); --- 129,134 ---- *************** *** 1506,1512 **** LBS_OWNERDRAWVARIABLE|LBS_PRELOADED|LBS_HASSTRINGS|LBS_NOTIFY, lprc->left,lprc->top, lprc->right,lprc->bottom, ! hWndMenu, 0, GetWindowInstance(hWndMenu), (LPVOID)hMenu32))) { if (hMenu32) --- 1505,1512 ---- LBS_OWNERDRAWVARIABLE|LBS_PRELOADED|LBS_HASSTRINGS|LBS_NOTIFY, lprc->left,lprc->top, lprc->right,lprc->bottom, ! hWndMenu, ! 0, GetWindowInstance(hWndMenu), (LPVOID)hMenu32))) { if (hMenu32) Only in twin-3.1.13/windows: MenuProc.o Only in twin-3.1.13/windows: MessageBox.o Only in twin-3.1.13/windows: Messages.o Binary files twin-3.1.13-classic/windows/MetaGraphics.o and twin-3.1.13/windows/MetaGraphics.o differ Binary files twin-3.1.13-classic/windows/MetaObjects.o and twin-3.1.13/windows/MetaObjects.o differ Binary files twin-3.1.13-classic/windows/Metafile.o and twin-3.1.13/windows/Metafile.o differ Binary files twin-3.1.13-classic/windows/Metaplay.o and twin-3.1.13/windows/Metaplay.o differ Only in twin-3.1.13/windows: ModTable.o Binary files twin-3.1.13-classic/windows/Module.o and twin-3.1.13/windows/Module.o differ Only in twin-3.1.13/windows: MsgCode.o Binary files twin-3.1.13-classic/windows/Net.o and twin-3.1.13/windows/Net.o differ Binary files twin-3.1.13-classic/windows/ObjEngine.o and twin-3.1.13/windows/ObjEngine.o differ Binary files twin-3.1.13-classic/windows/Palette.o and twin-3.1.13/windows/Palette.o differ Binary files twin-3.1.13-classic/windows/PrintManager.o and twin-3.1.13/windows/PrintManager.o differ Binary files twin-3.1.13-classic/windows/PrinterDC.o and twin-3.1.13/windows/PrinterDC.o differ Binary files twin-3.1.13-classic/windows/PrinterGraphics.o and twin-3.1.13/windows/PrinterGraphics.o differ Only in twin-3.1.13/windows: Profile.o Only in twin-3.1.13/windows: Profile32.o Only in twin-3.1.13/windows: Rect.o Only in twin-3.1.13/windows: Resources.o Only in twin-3.1.13/windows: RscData.res.o Only in twin-3.1.13/windows: RscTemplate.o Only in twin-3.1.13/windows: Strings.o Only in twin-3.1.13/windows: Strings32.o Only in twin-3.1.13/windows: StubAPI.o Only in twin-3.1.13/windows: SysMetrics.o Only in twin-3.1.13/windows: SysMisc.o Binary files twin-3.1.13-classic/windows/System.o and twin-3.1.13/windows/System.o differ Only in twin-3.1.13/windows: Time.o Only in twin-3.1.13/windows: TwinRT.res.o Only in twin-3.1.13/windows: UsrCursor.o Binary files twin-3.1.13-classic/windows/WBmp.o and twin-3.1.13/windows/WBmp.o differ Binary files twin-3.1.13-classic/windows/WImageIO.o and twin-3.1.13/windows/WImageIO.o differ Binary files twin-3.1.13-classic/windows/WSprintf.o and twin-3.1.13/windows/WSprintf.o differ Only in twin-3.1.13/windows: WSysMenu.o Only in twin-3.1.13/windows: WinConfig.o Binary files twin-3.1.13-classic/windows/WinHelp.o and twin-3.1.13/windows/WinHelp.o differ Only in twin-3.1.13/windows: WinInit.o Only in twin-3.1.13/windows: WinMain.o Only in twin-3.1.13/windows: WinSockUtil.o Only in twin-3.1.13/windows: WindowBytes.o diff -rc twin-3.1.13-classic/windows/WindowCreate.c twin-3.1.13/windows/WindowCreate.c *** twin-3.1.13-classic/windows/WindowCreate.c Thu Sep 30 14:17:54 1999 --- twin-3.1.13/windows/WindowCreate.c Tue Jun 13 15:25:37 2000 *************** *** 114,119 **** --- 114,120 ---- LPVOID lpParam) { HWND32 hWnd32, hFrame32, hWndParent32; + HWND hWndOwnerFrame; HCLASS32 hClass32; WNDCLASSEX ClassInfo; LPSTR lpExtraTemp; *************** *** 527,533 **** --- 528,562 ---- SetRect(&wcs.rcFrame,csFrame.x,csFrame.y,csFrame.cx,csFrame.cy); /* Create low-level windows */ + /* TBB: pass low-level representation of owner window, if any, as the + previously unused first long parameter. */ + hWndOwnerFrame = 0; + if (hWnd32->hWndOwner) { + HWND topLevelOwner = hWnd32->hWndOwner; + HWND32 hWndOwner32 = GETHWND32(hWnd32->hWndOwner); + /* Move outwards to a top-level owner window. */ + while (hWndOwner32 && + (hWndOwner32->hWndParent || hWndOwner32->hWndOwner)) + { + HWND next = hWndOwner32->hWndOwner; + if (!next) { + next = hWndOwner32->hWndParent; + } + if (!next) { + break; + } + RELEASEWININFO(hWndOwner32); + topLevelOwner = next; + hWndOwner32 = GETHWND32(next); + } + if (hWndOwner32) { + hWndOwnerFrame = hWndOwner32->hWndFrame; + RELEASEWININFO(hWndOwner32); + } + } if (0 == (dwDrvData = DRVCALL_WINDOWS(PWSH_CREATEWINDOW, + hWndOwnerFrame ? + GetWindowLong(hWndOwnerFrame, GWL_DRVDATA) : 0,0,&wcs))) { RELEASEWININFO(hWnd32); RELEASEWININFO(hFrame32); Only in twin-3.1.13/windows: WindowCreate.o Only in twin-3.1.13/windows: WindowDC.o diff -rc twin-3.1.13-classic/windows/WindowPos.c twin-3.1.13/windows/WindowPos.c *** twin-3.1.13-classic/windows/WindowPos.c Thu Sep 30 14:17:54 1999 --- twin-3.1.13/windows/WindowPos.c Wed May 17 10:08:00 2000 *************** *** 536,542 **** POINT ptOldPos; SIZE szOldSize; RECT rcOldClientArea; ! if (!(hWnd32 = GETHWND32(lpWindowPos->hwnd))) { return FALSE; } --- 536,543 ---- POINT ptOldPos; SIZE szOldSize; RECT rcOldClientArea; ! int insetX; ! int insetY; if (!(hWnd32 = GETHWND32(lpWindowPos->hwnd))) { return FALSE; } *************** *** 640,651 **** if (!(hWnd32->dwStyle & WS_CHILD) && !(lpWindowPos->flags & SWP_DRIVER)) { CalcExpectedNC(&rc,dwStyle,hWnd32->dwExStyle); lpWindowPos->x += rc.left; lpWindowPos->y += rc.top; } ! if ((hWnd32->rWnd.left != lpWindowPos->x) || ! (hWnd32->rWnd.top != lpWindowPos->y)) { if (lpWindowPos->flags & SWP_DRIVER) { /* this is a "hard" move */ SetRect(&hWndFrame32->rWnd, --- 641,668 ---- if (!(hWnd32->dwStyle & WS_CHILD) && !(lpWindowPos->flags & SWP_DRIVER)) { CalcExpectedNC(&rc,dwStyle,hWnd32->dwExStyle); + /* TBB: we're really moving the frame, not the window, + so be careful to save the insets and subtract them + before actually moving the frame. #ifdeffed out because + it's right for exile but not for mapedit (sigh) */ + insetX = 0; + insetY = 0; + #if 0 + insetX = rc.left; + insetY = rc.top; + #endif lpWindowPos->x += rc.left; lpWindowPos->y += rc.top; } ! /* TBB: the window manager may have refused our original ! position hints. Don't just trust it. ! WHOOPS: no, this was just causing problems, so ! #ifdef it back in after all. */ + #if 1 + if ((hWnd32->rWnd.left != lpWindowPos->x) || + (hWnd32->rWnd.top != lpWindowPos->y)) { + #endif if (lpWindowPos->flags & SWP_DRIVER) { /* this is a "hard" move */ SetRect(&hWndFrame32->rWnd, *************** *** 661,668 **** } else { /* this is a "soft" move */ ! rcNewPos.left = lpWindowPos->x; ! rcNewPos.top = lpWindowPos->y; rcNewPos.right = rcNewPos.bottom = 0; bNeedToMove = TRUE; --- 678,685 ---- } else { /* this is a "soft" move */ ! rcNewPos.left = lpWindowPos->x - insetX; ! rcNewPos.top = lpWindowPos->y - insetY; rcNewPos.right = rcNewPos.bottom = 0; bNeedToMove = TRUE; *************** *** 678,688 **** CopyRect(&hWnd32->rWnd,&hWndFrame32->rWnd); } } else lpWindowPos->flags |= SWP_NOMOVE; } ! /* Phase 4: if we are resizing, do it now */ if (!(lpWindowPos->flags & SWP_NOSIZE)) { SetRect(&rc,0,0,1,1); --- 695,708 ---- CopyRect(&hWnd32->rWnd,&hWndFrame32->rWnd); } } + #if 1 + /* TBB: put back in. + Previous idea: don't just trust the window manager */ else lpWindowPos->flags |= SWP_NOMOVE; } ! #endif /* Phase 4: if we are resizing, do it now */ if (!(lpWindowPos->flags & SWP_NOSIZE)) { SetRect(&rc,0,0,1,1); Only in twin-3.1.13/windows: WindowPos.o Only in twin-3.1.13/windows: WindowProps.o Only in twin-3.1.13/windows: WindowRedraw.o Binary files twin-3.1.13-classic/windows/gdi32.o and twin-3.1.13/windows/gdi32.o differ Binary files twin-3.1.13-classic/windows/gdi32Bin.o and twin-3.1.13/windows/gdi32Bin.o differ Only in twin-3.1.13/windows: if32.o Binary files twin-3.1.13-classic/windows/kernel32.o and twin-3.1.13/windows/kernel32.o differ Binary files twin-3.1.13-classic/windows/kernel32Bin.o and twin-3.1.13/windows/kernel32Bin.o differ Only in twin-3.1.13/windows: lib32.o Only in twin-3.1.13/windows: libadvapi32.so Only in twin-3.1.13/windows: libcomctl32.so Only in twin-3.1.13/windows: libcomm.so Only in twin-3.1.13/windows: libcommdlg.so Only in twin-3.1.13/windows: libddeml.so Only in twin-3.1.13/windows: libkeyboard.so Only in twin-3.1.13/windows: liblz32.so Only in twin-3.1.13/windows: libmmsystem.so Only in twin-3.1.13/windows: libmsvcrt.so Only in twin-3.1.13/windows: libolecli.so Only in twin-3.1.13/windows: libolesvr.so Only in twin-3.1.13/windows: libpe32.so Only in twin-3.1.13/windows: libshell.so Only in twin-3.1.13/windows: libsound.so Only in twin-3.1.13/windows: libsystem.so Only in twin-3.1.13/windows: libtoolhelp.so Only in twin-3.1.13/windows: libtwin32.so Only in twin-3.1.13/windows: libver.so Only in twin-3.1.13/windows: libwin87em.so Only in twin-3.1.13/windows: libwinspool.so Binary files twin-3.1.13-classic/windows/user32.o and twin-3.1.13/windows/user32.o differ Binary files twin-3.1.13-classic/windows/user32Bin.o and twin-3.1.13/windows/user32Bin.o differ Only in twin-3.1.13/windows: utils.o Only in twin-3.1.13/windows: version.o Only in twin-3.1.13/windows: vsprintf32.o Only in twin-3.1.13-classic/windows: xwin32