- Fixed registry entries for Explorer (once more)
authorFilip Navara <filip.navara@gmail.com>
Sat, 18 Oct 2003 17:35:44 +0000 (17:35 +0000)
committerFilip Navara <filip.navara@gmail.com>
Sat, 18 Oct 2003 17:35:44 +0000 (17:35 +0000)
- Added very basic window relinking to WinPosSetWindowPos

svn path=/trunk/; revision=6356

reactos/bootdata/hivedef.inf
reactos/bootdata/hivesft.inf
reactos/subsys/win32k/include/window.h
reactos/subsys/win32k/ntuser/winpos.c

index 8244d62..5c16f42 100644 (file)
@@ -10,29 +10,29 @@ HKCU,"Control Panel\Appearance",,0x00000012
 HKCU,"Environment",,0x00000012
 
 ; application compatibility settings for Windows 95
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN95","MajorVersion",0x00010001,0x00000004
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN95","MinorVersion",0x00010001,0x0000000A
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN95","BuildNumber",0x00010001,0x000003B6
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN95","PlatformId",0x00010001,0x00000001
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN95","MajorVersion",0x00010001,0x00000004
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN95","MinorVersion",0x00010001,0x0000000A
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN95","BuildNumber",0x00010001,0x000003B6
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN95","PlatformId",0x00010001,0x00000001
 ; application compatibility settings for Windows 98/ME
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN98","MajorVersion",0x00010001,0x00000004
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN98","MinorVersion",0x00010001,0x00000000
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN98","BuildNumber",0x00010001,0x000008AE
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN98","PlatformId",0x00010001,0x00000001
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN98","MajorVersion",0x00010001,0x00000004
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN98","MinorVersion",0x00010001,0x00000000
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN98","BuildNumber",0x00010001,0x000008AE
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN98","PlatformId",0x00010001,0x00000001
 ; application compatibility settings for Windows NT 4 Service Pack 5
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\NT4SP5","MajorVersion",0x00010001,0x00000004
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\NT4SP5","MinorVersion",0x00010001,0x00000000
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\NT4SP5","BuildNumber",0x00010001,0x00000565
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\NT4SP5","PlatformId",0x00010001,0x00000002
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\NT4SP5","MajorVersion",0x00010001,0x00000004
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\NT4SP5","MinorVersion",0x00010001,0x00000000
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\NT4SP5","BuildNumber",0x00010001,0x00000565
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\NT4SP5","PlatformId",0x00010001,0x00000002
 ; application compatibility settings for Windows 2000
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN2000","MajorVersion",0x00010001,0x00000005
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN2000","MinorVersion",0x00010001,0x00000000
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN2000","BuildNumber",0x00010001,0x00000893
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN2000","PlatformId",0x00010001,0x00000002
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN2000","MajorVersion",0x00010001,0x00000005
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN2000","MinorVersion",0x00010001,0x00000000
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN2000","BuildNumber",0x00010001,0x00000893
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WIN2000","PlatformId",0x00010001,0x00000002
 ; application compatibility settings for Windows XP
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","MajorVersion",0x00010001,0x00000005
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","MinorVersion",0x00010001,0x00000001
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","BuildNumber",0x00010001,0x00000A28
-HKCU,"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","PlatformId",0x00010001,0x00000002
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","MajorVersion",0x00010001,0x00000005
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","MinorVersion",0x00010001,0x00000001
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","BuildNumber",0x00010001,0x00000A28
+HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","PlatformId",0x00010001,0x00000002
 
 ; EOF
index d0f1329..2d5bcbb 100644 (file)
@@ -3,33 +3,29 @@ Signature="$ReactOS$
 
 [AddReg]
 
-
 HKLM,"SOFTWARE\ReactOS\Windows NT\CurrentVersion\WinLogon","Shell",0x00020000,"%SystemRoot%\System32\cmd.exe"
 HKLM,"SOFTWARE\ReactOS\Windows NT\CurrentVersion\WinLogon","StartServices",0x00010001,0x00000001
 
-HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Desktop",0x00020000,"%SystemRoot%\Desktop"
 HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Desktop",0x00020000,"%SystemRoot%\Desktop"
-HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","AppData",0x00020000,"%SystemRoot%\Application Data"
 HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","AppData",0x00020000,"%SystemRoot%\Application Data"
-HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Start Menu",0x00020000,"%SystemRoot%\Start Menu"
 HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Start Menu",0x00020000,"%SystemRoot%\Start Menu"
 
 ; For Shell32.dll
-HKLM,"SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}","",0x00020000,"Desktop"
-HKLM,"SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}\InProcServer32","",0x00020000,"shell32.dll"
-HKLM,"SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00020000,"Apartment"
-HKLM,"SOFTWARE\Classes\CLSID\{00021401-0000-0000-C000-000000000046}","",0x00020000,"Shortcut"
-HKLM,"SOFTWARE\Classes\CLSID\{00021401-0000-0000-C000-000000000046}\InProcServer32","",0x00020000,"shell32.dll"
-HKLM,"SOFTWARE\Classes\CLSID\{00021401-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00020000,"Apartment"
-HKLM,"SOFTWARE\Classes\CLSID\{00021401-0000-0000-C000-000000000046}\shellex\MayChangeDefaultMenu]","",0x00020000,""
+HKLM,"SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}","",0x00000002,"Desktop"
+HKLM,"SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}\InProcServer32","",0x00000002,"shell32.dll"
+HKLM,"SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00000002,"Apartment"
+HKLM,"SOFTWARE\Classes\CLSID\{00021401-0000-0000-C000-000000000046}","",0x00000002,"Shortcut"
+HKLM,"SOFTWARE\Classes\CLSID\{00021401-0000-0000-C000-000000000046}\InProcServer32","",0x00000002,"shell32.dll"
+HKLM,"SOFTWARE\Classes\CLSID\{00021401-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00000002,"Apartment"
+HKLM,"SOFTWARE\Classes\CLSID\{00021401-0000-0000-C000-000000000046}\shellex\MayChangeDefaultMenu]","",0x00000002,""
 
 ; For Ole32.dll
-HKLM,"SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}","",0x00020000,"IUnknown"
-HKLM,"SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}\BaseInterface","",0x00020000,""
-HKLM,"SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}\NumMethods","",0x00020000,"3"
-HKLM,"SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}\ProxyStubClsid32","",0x00020000,"{00000320-0000-0000-C000-000000000046}"
-HKLM,"SOFTWARE\Classes\CLSID\{00000320-0000-0000-C000-000000000046}","",0x00020000,"PSFactoryBuffer"
-HKLM,"SOFTWARE\Classes\CLSID\{00000320-0000-0000-C000-000000000046}\InProcServer32","",0x00020000,"ole32.dll"
-HKLM,"SOFTWARE\Classes\CLSID\{00000320-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00020000,"Both"
+HKLM,"SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}","",0x00000002,"IUnknown"
+HKLM,"SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}\BaseInterface","",0x00000002,""
+HKLM,"SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}\NumMethods","",0x00000002,"3"
+HKLM,"SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}\ProxyStubClsid32","",0x00000002,"{00000320-0000-0000-C000-000000000046}"
+HKLM,"SOFTWARE\Classes\CLSID\{00000320-0000-0000-C000-000000000046}","",0x00000002,"PSFactoryBuffer"
+HKLM,"SOFTWARE\Classes\CLSID\{00000320-0000-0000-C000-000000000046}\InProcServer32","",0x00000002,"ole32.dll"
+HKLM,"SOFTWARE\Classes\CLSID\{00000320-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00000002,"Both"
 
 ; EOF
index 7607ed6..cba215f 100644 (file)
@@ -159,6 +159,9 @@ IntGetWindowThreadProcessId(PWINDOW_OBJECT Wnd, PDWORD pid);
 VOID FASTCALL
 IntUnlinkWindow(PWINDOW_OBJECT Wnd);
 
+VOID FASTCALL
+IntLinkWindow(PWINDOW_OBJECT Wnd, PWINDOW_OBJECT WndParent, PWINDOW_OBJECT WndPrevSibling);
+
 ULONG
 UserHasDlgFrameStyle(ULONG Style, ULONG ExStyle);
 
index 5f934da..caaa891 100644 (file)
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: winpos.c,v 1.32 2003/10/17 17:38:38 mf Exp $
+/* $Id: winpos.c,v 1.33 2003/10/18 17:35:44 navaraf Exp $
  *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
@@ -662,7 +662,50 @@ WinPosSetWindowPos(HWND Wnd, HWND WndInsertAfter, INT x, INT y, INT cx,
   WvrFlags = WinPosDoNCCALCSize(Window, &WinPos, &NewWindowRect,
                                &NewClientRect);
 
-  /* FIXME: Relink windows. (also take into account shell window in hwndShellWindow) */
+  /*
+   * FIXME: Relink windows. (also take into account shell window in hwndShellWindow)
+   */
+  if (!(WinPos.flags & SWP_NOZORDER) && WinPos.hwndInsertAfter != WinPos.hwnd)
+    {
+      PWINDOW_OBJECT ParentWindow;
+      PWINDOW_OBJECT InsertAfterWindow;
+
+      ParentWindow = IntGetWindowObject(Window->ParentHandle);
+      if (WndInsertAfter == HWND_TOP)
+      {
+         InsertAfterWindow = NULL;
+      }
+      else if (WndInsertAfter != HWND_BOTTOM)
+      {
+         InsertAfterWindow = ParentWindow->LastChild;
+      }
+      else
+      {
+         InsertAfterWindow = IntGetWindowObject(WinPos.hwndInsertAfter);
+      }
+
+      if (InsertAfterWindow != NULL &&
+          InsertAfterWindow->ParentHandle != Window->ParentHandle)
+        {
+          ExAcquireFastMutexUnsafe(&ParentWindow->ChildrenListLock);
+          IntUnlinkWindow(Window);
+          ExReleaseFastMutexUnsafe(&ParentWindow->ChildrenListLock);
+          ParentWindow = IntGetWindowObject(InsertAfterWindow->ParentHandle);
+          ExAcquireFastMutexUnsafe(&ParentWindow->ChildrenListLock);
+          IntLinkWindow(Window, ParentWindow, InsertAfterWindow);
+          ExReleaseFastMutexUnsafe(&ParentWindow->ChildrenListLock);
+        }
+      else
+        {
+          ExAcquireFastMutexUnsafe(&ParentWindow->ChildrenListLock);
+          IntUnlinkWindow(Window);
+          IntLinkWindow(Window, ParentWindow, InsertAfterWindow);
+          ExReleaseFastMutexUnsafe(&ParentWindow->ChildrenListLock);
+        }
+
+      IntReleaseWindowObject(ParentWindow);
+      IntReleaseWindowObject(InsertAfterWindow);
+    }
 
   /* FIXME: Reset active DCEs */
 
@@ -857,7 +900,7 @@ WinPosSetWindowPos(HWND Wnd, HWND WndInsertAfter, INT x, INT y, INT cx,
   /* FIXME: Check some conditions before doing this. */
   IntSendWINDOWPOSCHANGEDMessage(WinPos.hwnd, &WinPos);
 
-  ObmDereferenceObject(Window);
+  IntReleaseWindowObject(Window);
   return(TRUE);
 }