Huw Davies : comctl32: Add helpers to set the button text.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Jul 1 09:06:24 CDT 2015
Module: wine
Branch: master
Commit: a29b6958e1315814a69730650528bddc92ff4292
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a29b6958e1315814a69730650528bddc92ff4292
Author: Huw Davies <huw at codeweavers.com>
Date: Wed Jul 1 09:14:51 2015 +0100
comctl32: Add helpers to set the button text.
---
dlls/comctl32/toolbar.c | 52 +++++++++++++++++++++++++++++++------------------
1 file changed, 33 insertions(+), 19 deletions(-)
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index 2c7ed63..bbfc6b7 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -328,6 +328,31 @@ TOOLBAR_ButtonHasString(const TBUTTON_INFO *btnPtr)
return HIWORD(btnPtr->iString) && btnPtr->iString != -1;
}
+static void set_string_index( TBUTTON_INFO *btn, INT_PTR str, BOOL unicode )
+{
+ if (!IS_INTRESOURCE( str ) && str != -1)
+ {
+ if (!TOOLBAR_ButtonHasString( btn )) btn->iString = 0;
+
+ if (unicode)
+ Str_SetPtrW( (WCHAR **)&btn->iString, (WCHAR *)str );
+ else
+ Str_SetPtrAtoW( (WCHAR **)&btn->iString, (char *)str );
+ }
+ else
+ {
+ if (TOOLBAR_ButtonHasString( btn )) Free( (WCHAR *)btn->iString );
+
+ btn->iString = str;
+ }
+}
+
+static void set_stringT( TBUTTON_INFO *btn, const WCHAR *str, BOOL unicode )
+{
+ if (IS_INTRESOURCE( (DWORD_PTR)str ) || (DWORD_PTR)str == -1) return;
+ set_string_index( btn, (DWORD_PTR)str, unicode );
+}
+
/***********************************************************************
* TOOLBAR_CheckStyle
*
@@ -1817,6 +1842,7 @@ TOOLBAR_InternalInsertButtonsT(TOOLBAR_INFO *infoPtr, INT iIndex, UINT nAddButto
/* insert new buttons data */
for (iButton = 0; iButton < nAddButtons; iButton++) {
TBUTTON_INFO *btnPtr = &infoPtr->buttons[iIndex + iButton];
+ INT_PTR str;
TOOLBAR_DumpTBButton(lpTbb + iButton, fUnicode);
@@ -1827,18 +1853,13 @@ TOOLBAR_InternalInsertButtonsT(TOOLBAR_INFO *infoPtr, INT iIndex, UINT nAddButto
btnPtr->fsState = lpTbb[iButton].fsState;
btnPtr->fsStyle = lpTbb[iButton].fsStyle;
btnPtr->dwData = lpTbb[iButton].dwData;
+
if (btnPtr->fsStyle & BTNS_SEP)
- btnPtr->iString = -1;
- else if(!IS_INTRESOURCE(lpTbb[iButton].iString) && lpTbb[iButton].iString != -1)
- {
- if (fUnicode)
- Str_SetPtrW((LPWSTR*)&btnPtr->iString, (LPWSTR)lpTbb[iButton].iString );
- else
- Str_SetPtrAtoW((LPWSTR*)&btnPtr->iString, (LPSTR)lpTbb[iButton].iString);
- fHasString = TRUE;
- }
+ str = -1;
else
- btnPtr->iString = lpTbb[iButton].iString;
+ str = lpTbb[iButton].iString;
+ set_string_index( btnPtr, str, fUnicode );
+ fHasString |= TOOLBAR_ButtonHasString( btnPtr );
TOOLBAR_TooltipAddTool(infoPtr, btnPtr);
}
@@ -4320,15 +4341,8 @@ TOOLBAR_SetButtonInfo (TOOLBAR_INFO *infoPtr, INT Id,
if (lptbbi->dwMask & TBIF_STYLE)
btnPtr->fsStyle = lptbbi->fsStyle;
- if ((lptbbi->dwMask & TBIF_TEXT) && ((INT_PTR)lptbbi->pszText != -1)) {
- /* iString is index, zero it to make Str_SetPtr succeed */
- if (!TOOLBAR_ButtonHasString(btnPtr)) btnPtr->iString = 0;
-
- if (isW)
- Str_SetPtrW ((LPWSTR *)&btnPtr->iString, lptbbi->pszText);
- else
- Str_SetPtrAtoW ((LPWSTR *)&btnPtr->iString, (LPSTR)lptbbi->pszText);
- }
+ if (lptbbi->dwMask & TBIF_TEXT)
+ set_stringT( btnPtr, lptbbi->pszText, isW );
/* save the button rect to see if we need to redraw the whole toolbar */
oldBtnRect = btnPtr->rect;
More information about the wine-cvs
mailing list