fixed some resizing bugs
Modified: trunk/reactos/lib/devmgr/hwpage.c

Modified: trunk/reactos/lib/devmgr/hwpage.c
--- trunk/reactos/lib/devmgr/hwpage.c	2005-11-25 16:13:58 UTC (rev 19559)
+++ trunk/reactos/lib/devmgr/hwpage.c	2005-11-25 16:30:41 UTC (rev 19560)
@@ -58,6 +58,7 @@
     HWND hWnd;
     HWND hWndDevList;
     HINSTANCE hComCtl32; /* only save this to keep track of the references */
+    INT DevListViewHeight;
     SP_CLASSIMAGELIST_DATA ClassImageListData;
     HWPAGE_DISPLAYMODE DisplayMode;
 
@@ -188,8 +189,6 @@
                     if (HwNewDevInfo != NULL)
                     {
                         DevInfo->HwDevInfo = HwNewDevInfo;
-                        DevInfo->HwDevInfo[DevInfo->ItemCount].ClassDevInfo = DevInfo;
-                        DevInfo->HwDevInfo[DevInfo->ItemCount++].DevInfoData = DevInfoData;
                     }
                     else
                     {
@@ -203,18 +202,16 @@
                     DevInfo->HwDevInfo = HeapAlloc(GetProcessHeap(),
                                                    0,
                                                    sizeof(HWDEVINFO));
-                    if (DevInfo->HwDevInfo != NULL)
+                    if (DevInfo->HwDevInfo == NULL)
                     {
-                        DevInfo->HwDevInfo[DevInfo->ItemCount].ClassDevInfo = DevInfo;
-                        DevInfo->HwDevInfo[DevInfo->ItemCount++].DevInfoData = DevInfoData;
-                    }
-                    else
-                    {
                         DPRINT1("Unable to allocate memory for a SP_DEVINFO_DATA structures!\n");
                         break;
                     }
                 }
 
+                DevInfo->HwDevInfo[DevInfo->ItemCount].ClassDevInfo = DevInfo;
+                DevInfo->HwDevInfo[DevInfo->ItemCount++].DevInfoData = DevInfoData;
+
                 if ((SetupDiGetDeviceRegistryProperty(DevInfo->hDevInfo,
                                                       &DevInfoData,
                                                       SPDRP_FRIENDLYNAME,
@@ -327,7 +324,7 @@
 {
     HDWP dwp;
     HWND hControl, hButton;
-    INT Width, x, y, TopBias = 0;
+    INT Width, x, y;
     RECT rc, rcButton;
     POINT pt = {0};
     POINT ptMargin = {0};
@@ -368,19 +365,14 @@
                         hpd->hWnd,
                         &pt,
                         1);
-        if (hpd->DisplayMode == HWPD_LARGELIST)
-        {
-            /* increase the size of the list view control by 2/3 */
-            TopBias = ((rc.bottom - rc.top) * 2) / 3;
-        }
-        y = pt.y + TopBias + rc.bottom - rc.top + ptMargin.y;
+        y = pt.y + hpd->DevListViewHeight + ptMargin.y;
         if (!(dwp = DeferWindowPos(dwp,
                                    hpd->hWndDevList,
                                    NULL,
                                    0,
                                    0,
                                    Width,
-                                   rc.bottom - rc.top + TopBias,
+                                   hpd->DevListViewHeight,
                                    SWP_NOMOVE | SWP_NOZORDER)))
         {
             return;
@@ -572,9 +564,22 @@
 
                     SetupDiGetClassImageList(&hpd->ClassImageListData);
 
+                    /* calculate the size of the devices list view control */
                     hpd->hWndDevList = GetDlgItem(hwndDlg,
                                                   IDC_LV_DEVICES);
+                    if (hpd->hWndDevList != NULL)
+                    {
+                        RECT rcClient;
+                        GetClientRect(hpd->hWndDevList,
+                                      &rcClient);
+                        hpd->DevListViewHeight = rcClient.bottom;
 
+                        if (hpd->DisplayMode == HWPD_LARGELIST)
+                        {
+                            hpd->DevListViewHeight = (hpd->DevListViewHeight * 3) / 2;
+                        }
+                    }
+
                     /* subclass the parent window */
                     hWndParent = GetAncestor(hwndDlg,
                                              GA_PARENT);
@@ -790,7 +795,6 @@
  * NOTE
  *
  */
-
 HWND
 WINAPI
 DeviceCreateHardwarePage(IN HWND hWndParent,