Mikołaj Zalewski : comctl32: rebar: Merge SetBandInfoA and SetBandInfoW.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 5 07:45:00 CST 2007


Module: wine
Branch: master
Commit: 95c74f19a7a752f3cc0171666c3670e205854fea
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=95c74f19a7a752f3cc0171666c3670e205854fea

Author: Mikołaj Zalewski <mikolaj at zalewski.pl>
Date:   Mon Feb  5 00:00:52 2007 +0100

comctl32: rebar: Merge SetBandInfoA and SetBandInfoW.

---

 dlls/comctl32/rebar.c |   97 +++++++++----------------------------------------
 1 files changed, 18 insertions(+), 79 deletions(-)

diff --git a/dlls/comctl32/rebar.c b/dlls/comctl32/rebar.c
index 066c0d6..0fc0937 100644
--- a/dlls/comctl32/rebar.c
+++ b/dlls/comctl32/rebar.c
@@ -365,7 +365,7 @@ REBAR_FmtMask( UINT mask)
 
 
 static VOID
-REBAR_DumpBandInfo( LPREBARBANDINFOA pB)
+REBAR_DumpBandInfo(LPREBARBANDINFOW pB)
 {
     if( !TRACE_ON(rebar) ) return;
     TRACE("band info: ");
@@ -2092,7 +2092,7 @@ REBAR_ValidateBand (REBAR_INFO *infoPtr,
 }
 
 static BOOL
-REBAR_CommonSetupBand (HWND hwnd, LPREBARBANDINFOA lprbbi, REBAR_BAND *lpBand)
+REBAR_CommonSetupBand(HWND hwnd, LPREBARBANDINFOW lprbbi, REBAR_BAND *lpBand)
      /* Function:  This routine copies the supplied values from   */
      /*  user input (lprbbi) to the internal band structure.      */
      /*  It returns true if something changed and false if not.   */
@@ -2831,7 +2831,7 @@ REBAR_GetBandInfoT(REBAR_INFO *infoPtr,
 	    lprbbi->cxHeader = lpBand->cxHeader;
     }
 
-    REBAR_DumpBandInfo((LPREBARBANDINFOA)lprbbi);
+    REBAR_DumpBandInfo(lprbbi);
 
     return TRUE;
 }
@@ -3042,7 +3042,7 @@ REBAR_InsertBandT(REBAR_INFO *infoPtr, W
 
     /* trace the index as signed to see the -1 */
     TRACE("insert band at %d (bUnicode=%d)!\n", (INT)uIndex, bUnicode);
-    REBAR_DumpBandInfo((LPREBARBANDINFOA)lprbbi);
+    REBAR_DumpBandInfo(lprbbi);
 
     infoPtr->bands = ReAlloc(infoPtr->bands, (infoPtr->uNumBands+1) * sizeof(REBAR_BAND));
     if (((INT)uIndex == -1) || (uIndex > infoPtr->uNumBands))
@@ -3060,7 +3060,7 @@ REBAR_InsertBandT(REBAR_INFO *infoPtr, W
     lpBand->clrBack = infoPtr->clrBk;
     lpBand->iImage = -1;
 
-    REBAR_CommonSetupBand(infoPtr->hwndSelf, (LPREBARBANDINFOA)lprbbi, lpBand);
+    REBAR_CommonSetupBand(infoPtr->hwndSelf, lprbbi, lpBand);
     if ((lprbbi->fMask & RBBIM_TEXT) && (lprbbi->lpText)) {
         if (bUnicode)
             Str_SetPtrW(&lpBand->lpText, lprbbi->lpText);
@@ -3325,9 +3325,9 @@ REBAR_strdifW( LPCWSTR a, LPCWSTR b )
 }
 
 static LRESULT
-REBAR_SetBandInfoA (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SetBandInfoT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnicode)
 {
-    LPREBARBANDINFOA lprbbi = (LPREBARBANDINFOA)lParam;
+    LPREBARBANDINFOW lprbbi = (LPREBARBANDINFOW)lParam;
     REBAR_BAND *lpBand;
     BOOL bChanged;
 
@@ -3347,29 +3347,18 @@ REBAR_SetBandInfoA (REBAR_INFO *infoPtr,
     bChanged = REBAR_CommonSetupBand (infoPtr->hwndSelf, lprbbi, lpBand);
     if (lprbbi->fMask & RBBIM_TEXT) {
         LPWSTR wstr = NULL;
+        if (bUnicode)
+            Str_SetPtrW(&wstr, lprbbi->lpText);
+        else
+            Str_SetPtrAtoW(&wstr, (LPSTR)lprbbi->lpText);
 
-        if (lprbbi->lpText)
-        {
-            INT len;
-            len = MultiByteToWideChar( CP_ACP, 0, lprbbi->lpText, -1, NULL, 0 );
-            if (len > 1)
-                wstr = (LPWSTR)Alloc (len*sizeof(WCHAR));
-            if (wstr)
-                MultiByteToWideChar( CP_ACP, 0, lprbbi->lpText, -1, wstr, len );
-        }
-        if (REBAR_strdifW(lpBand->lpText, wstr)) {
-	    if (lpBand->lpText) {
-	        Free (lpBand->lpText);
-	        lpBand->lpText = NULL;
-	    }
-	    if (wstr) {
-                lpBand->lpText = wstr;
-                wstr = NULL;
-	    }
+        if (REBAR_strdifW(wstr, lprbbi->lpText)) {
+            Free(lpBand->lpText);
+            lpBand->lpText = wstr;
             bChanged = TRUE;
         }
-        if (wstr)
-	    Free (wstr);
+        else
+            Free(wstr);
     }
 
     REBAR_ValidateBand (infoPtr, lpBand);
@@ -3384,56 +3373,6 @@ REBAR_SetBandInfoA (REBAR_INFO *infoPtr,
     return TRUE;
 }
 
-static LRESULT
-REBAR_SetBandInfoW (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
-{
-    LPREBARBANDINFOW lprbbi = (LPREBARBANDINFOW)lParam;
-    REBAR_BAND *lpBand;
-    BOOL bChanged;
-
-    if (lprbbi == NULL)
-	return FALSE;
-    if (lprbbi->cbSize < REBARBANDINFOW_V3_SIZE)
-	return FALSE;
-    if ((UINT)wParam >= infoPtr->uNumBands)
-	return FALSE;
-
-    TRACE("index %u\n", (UINT)wParam);
-    REBAR_DumpBandInfo ((LPREBARBANDINFOA)lprbbi);
-
-    /* set band information */
-    lpBand = &infoPtr->bands[(UINT)wParam];
-
-    bChanged = REBAR_CommonSetupBand (infoPtr->hwndSelf, (LPREBARBANDINFOA)lprbbi, lpBand);
-    if( (lprbbi->fMask & RBBIM_TEXT) && 
-        REBAR_strdifW( lpBand->lpText, lprbbi->lpText ) ) {
-	if (lpBand->lpText) {
-	    Free (lpBand->lpText);
-	    lpBand->lpText = NULL;
-	}
-	if (lprbbi->lpText) {
-	    INT len = lstrlenW (lprbbi->lpText);
-	    if (len > 0)
-	    {
-	        lpBand->lpText = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
-	        strcpyW (lpBand->lpText, lprbbi->lpText);
-	    }
-	}
-        bChanged = TRUE;
-    }
-
-    REBAR_ValidateBand (infoPtr, lpBand);
-
-    REBAR_DumpBand (infoPtr);
-
-    if ( bChanged && (lprbbi->fMask & (RBBIM_CHILDSIZE | RBBIM_SIZE)) ) {
-      REBAR_Layout (infoPtr, NULL, TRUE, FALSE);
-      InvalidateRect(infoPtr->hwndSelf, 0, 1);
-    }
-
-    return TRUE;
-}
-
 
 static LRESULT
 REBAR_SetBarInfo (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
@@ -4479,10 +4418,10 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg,
 	    return REBAR_PushChevron (infoPtr, wParam, lParam);
 
 	case RB_SETBANDINFOA:
-	    return REBAR_SetBandInfoA (infoPtr, wParam, lParam);
+	    return REBAR_SetBandInfoT(infoPtr, wParam, lParam, FALSE);
 
 	case RB_SETBANDINFOW:
-	    return REBAR_SetBandInfoW (infoPtr, wParam, lParam);
+	    return REBAR_SetBandInfoT(infoPtr, wParam, lParam, TRUE);
 
 	case RB_SETBARINFO:
 	    return REBAR_SetBarInfo (infoPtr, wParam, lParam);




More information about the wine-cvs mailing list