Index: trunk/src/user32/edit.cpp
===================================================================
--- trunk/src/user32/edit.cpp	(revision 2208)
+++ trunk/src/user32/edit.cpp	(revision 2211)
@@ -1,3 +1,3 @@
-/* $Id: edit.cpp,v 1.25 1999-12-26 17:30:14 cbratschi Exp $ */
+/* $Id: edit.cpp,v 1.26 1999-12-27 17:08:07 cbratschi Exp $ */
 /*
  *      Edit control
@@ -3725,4 +3725,6 @@
   RECT rect;
 
+  if (!IsWindowVisible(hwnd)) return;
+
   //CB: original controls redraws many times, cache drawing
   HideCaret(hwnd);
Index: trunk/src/user32/oslibwin.cpp
===================================================================
--- trunk/src/user32/oslibwin.cpp	(revision 2208)
+++ trunk/src/user32/oslibwin.cpp	(revision 2211)
@@ -1,3 +1,3 @@
-/* $Id: oslibwin.cpp,v 1.52 1999-12-26 17:30:15 cbratschi Exp $ */
+/* $Id: oslibwin.cpp,v 1.53 1999-12-27 17:08:08 cbratschi Exp $ */
 /*
  * Window API wrappers for OS/2
@@ -1200,2 +1200,8 @@
   return WinEnableWindowUpdate(hwnd,fEnable);
 }
+//******************************************************************************
+//******************************************************************************
+ULONG OSLibWinGetLastError()
+{
+  return WinGetLastError(GetThreadHAB()) & 0xFFFF;
+}
Index: trunk/src/user32/oslibwin.h
===================================================================
--- trunk/src/user32/oslibwin.h	(revision 2208)
+++ trunk/src/user32/oslibwin.h	(revision 2211)
@@ -1,3 +1,3 @@
-/* $Id: oslibwin.h,v 1.28 1999-12-26 17:30:16 cbratschi Exp $ */
+/* $Id: oslibwin.h,v 1.29 1999-12-27 17:08:08 cbratschi Exp $ */
 /*
  * Window API wrappers for OS/2
@@ -290,5 +290,6 @@
 #define HTOS_ERROR                    (-3)
 
-BOOL OSLibWinEnableWindowUpdate(HWND hwnd,BOOL fEnable);
+BOOL  OSLibWinEnableWindowUpdate(HWND hwnd,BOOL fEnable);
+ULONG OSLibWinGetLastError();
 
 #endif //__OSLIBWIN_H__
Index: trunk/src/user32/win32wbase.cpp
===================================================================
--- trunk/src/user32/win32wbase.cpp	(revision 2208)
+++ trunk/src/user32/win32wbase.cpp	(revision 2211)
@@ -1,3 +1,3 @@
-/* $Id: win32wbase.cpp,v 1.120 1999-12-27 14:41:42 sandervl Exp $ */
+/* $Id: win32wbase.cpp,v 1.121 1999-12-27 17:08:08 cbratschi Exp $ */
 /*
  * Win32 Window Base Class for OS/2
@@ -548,10 +548,4 @@
   OSLibWinConvertStyle(dwStyle, &dwExStyle, &dwOSWinStyle, &dwOSFrameStyle, &borderWidth, &borderHeight);
 
-  rectWindow.left   = cs->x;
-  rectWindow.top    = cs->y;
-  rectWindow.right  = cs->x + cs->cx;
-  rectWindow.bottom = cs->y + cs->cy;
-  rectClient        = rectWindow;
-
   if(HIWORD(cs->lpszName))
   {
@@ -613,13 +607,7 @@
  POINT maxPos;
  CREATESTRUCTA  *cs = tmpcs;  //pointer to CREATESTRUCT used in CreateWindowExA method
- RECT rectWndTmp, rectClientTmp;
 
   OS2Hwnd      = hwndClient;
   OS2HwndFrame = hwndFrame;
-
-  //make backup copy of rectangles (some calls below result in WM_WINDOWPOSCHANGED with weird values since we haven't
-  //set our window size just yet)
-  rectWndTmp   = rectWindow;
-  rectClientTmp = rectClient;
 
   fNoSizeMsg = TRUE;
@@ -700,9 +688,4 @@
   if (isChild()) FrameSetBorderSize(this,TRUE);
 
-  //restore rectangles (some calls below result in WM_WINDOWPOSCHANGED with weird values since we haven't
-  //set our window size just yet)
-  rectWindow = rectWndTmp;
-  rectClient = rectClientTmp;
-
   /* Send the WM_CREATE message
    * Perhaps we shouldn't allow width/height changes as well.
@@ -711,16 +694,6 @@
   maxPos.x = rectWindow.left; maxPos.y = rectWindow.top;
 
-  if(getParent()) {
-        SetWindowPos(hwndLinkAfter, rectClient.left, rectClient.top,
-                     rectClient.right-rectClient.left,
-                     rectClient.bottom-rectClient.top,
-                     SWP_NOACTIVATE | SWP_NOREDRAW);
-  }
-  else {
-        SetWindowPos(hwndLinkAfter, rectClient.left, rectClient.top,
-                     rectClient.right-rectClient.left,
-                     rectClient.bottom-rectClient.top,
-                     SWP_NOACTIVATE | SWP_NOREDRAW);
-  }
+  SetWindowPos(hwndLinkAfter,cs->x,cs->y,cs->cx,cs->cy,SWP_NOACTIVATE | SWP_NOREDRAW);
+
   //Note: Solitaire crashes when receiving WM_SIZE messages before WM_CREATE
   fNoSizeMsg = FALSE;
@@ -731,5 +704,4 @@
 
         SendNCCalcSize(FALSE, &rectWindow, NULL, NULL, 0, &rectClient );
-
 //        OffsetRect(&rectWindow, maxPos.x - rectWindow.left, maxPos.y - rectWindow.top);
         if( (SendInternalMessageA(WM_CREATE, 0, (LPARAM)cs )) != -1 )
@@ -2470,5 +2442,5 @@
         Win32BaseWindow *wndBehind = Win32BaseWindow::GetWindowFromHandle(swp.hwndInsertBehind);
         if(wndBehind) {
-            swp.hwndInsertBehind   = wndBehind->getOS2WindowHandle();
+            swp.hwndInsertBehind   = wndBehind->getOS2FrameWindowHandle();
         }
         else {
@@ -2503,11 +2475,8 @@
     if (rc == FALSE)
     {
-        dprintf(("OSLibWinSetMultWindowPos failed!"));
-    }
-    else
-    {
-        if (fuFlags & SWP_FRAMECHANGED_W)
-            OSLibSendMessage (OS2HwndFrame, 0x42 /*WM_UPDATEFRAME*/, -1, 0);
-    }
+        dprintf(("OSLibWinSetMultWindowPos failed! Error %x",OSLibWinGetLastError()));
+    }
+
+    //SWP_FRAMECHANGED is ignored, not necessary for OS/2
 
     return (rc);
Index: trunk/src/user32/window.cpp
===================================================================
--- trunk/src/user32/window.cpp	(revision 2208)
+++ trunk/src/user32/window.cpp	(revision 2211)
@@ -1,3 +1,3 @@
-/* $Id: window.cpp,v 1.44 1999-12-24 18:39:13 sandervl Exp $ */
+/* $Id: window.cpp,v 1.45 1999-12-27 17:08:09 cbratschi Exp $ */
 /*
  * Win32 window apis for OS/2
@@ -847,8 +847,8 @@
     dprintf(("USER32: MapWindowPoints %x to %x (%d,%d) (%d)", hwndFrom, hwndTo, lpPoints->x, lpPoints->y, cPoints));
     point.x = lpPoints->x;
-    point.y = wndfrom->getWindowHeight() - lpPoints->y;
+    point.y = wndfrom->getWindowHeight()-1-lpPoints->y;
 
     OSLibWinMapWindowPoints(wndfrom->getOS2WindowHandle(), wndto->getOS2WindowHandle(), &point, 1);
-    point.y = wndto->getWindowHeight() - point.y;
+    point.y = wndto->getWindowHeight()-1-point.y;
 
     short int xinc = point.x - lpPoints->x;
