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