comctl32: header[3/6]: merge the simple delete and complex delete

Mikołaj Zalewski mikolaj at zalewski.pl
Mon Sep 18 04:50:32 CDT 2006


The complex delete code can also do a simple delete so maybe they should 
be merged?
-------------- next part --------------
From 5195b2527e23c2e2de3a7e5b0ab0cb80a53925bd Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Miko=C5=82aj_Zalewski?= <mikolaj at zalewski.pl>
Date: Fri, 15 Sep 2006 22:36:35 +0200
Subject: [PATCH] comctl32: header: merge the simple delete and complex delete
---
 dlls/comctl32/header.c |   62 +++++++++++++++++++-----------------------------
 1 files changed, 24 insertions(+), 38 deletions(-)

diff --git a/dlls/comctl32/header.c b/dlls/comctl32/header.c
index eee9b36..bb4173e 100644
--- a/dlls/comctl32/header.c
+++ b/dlls/comctl32/header.c
@@ -1060,54 +1060,40 @@ HEADER_DeleteItem (HWND hwnd, WPARAM wPa
 {
     HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd);
     INT iItem = (INT)wParam;
+    INT iOrder;
+    INT i;
 
     TRACE("[iItem=%d]\n", iItem);
 
     if ((iItem < 0) || (iItem >= (INT)infoPtr->uNumItem))
         return FALSE;
 
-    if (infoPtr->uNumItem == 1) {
-        TRACE("Simple delete!\n");
-        HEADER_DisposeItem(&infoPtr->items[0]);
-        Free (infoPtr->items);
-        Free(infoPtr->order);
-        infoPtr->items = 0;
-        infoPtr->order = 0;
-        infoPtr->uNumItem = 0;
-    }
-    else {
-        INT i;
-        INT iOrder;
-        TRACE("Complex delete! [iItem=%d]\n", iItem);
-
-        for (i = 0; i < infoPtr->uNumItem; i++)
-           TRACE("%d: order=%d, iOrder=%d, ->iOrder=%d\n", i, infoPtr->order[i], infoPtr->items[i].iOrder, infoPtr->items[infoPtr->order[i]].iOrder);
-        HEADER_DisposeItem(&infoPtr->items[iItem]);
-        iOrder = infoPtr->items[iItem].iOrder;
-
-        infoPtr->uNumItem--;
-        memmove(&infoPtr->items[iItem], &infoPtr->items[iItem + 1],
-                (infoPtr->uNumItem - iItem) * sizeof(HEADER_ITEM));
-        memmove(&infoPtr->order[iOrder], &infoPtr->order[iOrder + 1],
-                (infoPtr->uNumItem - iOrder) * sizeof(INT));
-        infoPtr->items = ReAlloc(infoPtr->items, sizeof(HEADER_ITEM) * infoPtr->uNumItem);
-        infoPtr->order = ReAlloc(infoPtr->order, sizeof(INT) * infoPtr->uNumItem);
-        
-        /* Correct the orders */
-        for (i = 0; i < infoPtr->uNumItem; i++)
-        {
-            if (infoPtr->order[i] > iItem)
-                infoPtr->order[i]--;
-            if (i >= iOrder)
-                infoPtr->items[infoPtr->order[i]].iOrder = i;
-        }
+    for (i = 0; i < infoPtr->uNumItem; i++)
+       TRACE("%d: order=%d, iOrder=%d, ->iOrder=%d\n", i, infoPtr->order[i], infoPtr->items[i].iOrder, infoPtr->items[infoPtr->order[i]].iOrder);
 
-        for (i = 0; i < infoPtr->uNumItem; i++)
-           TRACE("%d: order=%d, iOrder=%d, ->iOrder=%d\n", i, infoPtr->order[i], infoPtr->items[i].iOrder, infoPtr->items[infoPtr->order[i]].iOrder);
+    iOrder = infoPtr->items[iItem].iOrder;
+    HEADER_DisposeItem(&infoPtr->items[iItem]);
+
+    infoPtr->uNumItem--;
+    memmove(&infoPtr->items[iItem], &infoPtr->items[iItem + 1],
+            (infoPtr->uNumItem - iItem) * sizeof(HEADER_ITEM));
+    memmove(&infoPtr->order[iOrder], &infoPtr->order[iOrder + 1],
+            (infoPtr->uNumItem - iOrder) * sizeof(INT));
+    infoPtr->items = ReAlloc(infoPtr->items, sizeof(HEADER_ITEM) * infoPtr->uNumItem);
+    infoPtr->order = ReAlloc(infoPtr->order, sizeof(INT) * infoPtr->uNumItem);
+        
+    /* Correct the orders */
+    for (i = 0; i < infoPtr->uNumItem; i++)
+    {
+        if (infoPtr->order[i] > iItem)
+            infoPtr->order[i]--;
+        if (i >= iOrder)
+            infoPtr->items[infoPtr->order[i]].iOrder = i;
     }
+    for (i = 0; i < infoPtr->uNumItem; i++)
+       TRACE("%d: order=%d, iOrder=%d, ->iOrder=%d\n", i, infoPtr->order[i], infoPtr->items[i].iOrder, infoPtr->items[infoPtr->order[i]].iOrder);
 
     HEADER_SetItemBounds (hwnd);
-
     InvalidateRect(hwnd, NULL, FALSE);
 
     return TRUE;
-- 
1.4.1


More information about the wine-patches mailing list