comctl32/tab: Implemented TCM_DESELECTALL.

This commit is contained in:
Nikolay Sivov 2009-03-28 09:57:09 -04:00 committed by Alexandre Julliard
parent 48e7428964
commit e2b1604f4a
1 changed files with 34 additions and 5 deletions

View File

@ -51,9 +51,6 @@
* TCN_GETOBJECT
* TCN_KEYDOWN
*
* Messages:
* TCM_DESELECTALL
*
* Macros:
* TabCtrl_AdjustRect
*
@ -3164,6 +3161,39 @@ TAB_GetExtendedStyle (TAB_INFO *infoPtr)
return infoPtr->exStyle;
}
static LRESULT
TAB_DeselectAll (TAB_INFO *infoPtr, BOOL excludesel)
{
LONG style = GetWindowLongW(infoPtr->hwnd, GWL_STYLE);
BOOL paint = FALSE;
INT i, selected = infoPtr->iSelected;
if (!(style & TCS_BUTTONS))
return 0;
for (i = 0; i < infoPtr->uNumItem; i++)
{
if ((TAB_GetItem(infoPtr, i)->dwState & TCIS_BUTTONPRESSED) &&
(selected != i))
{
TAB_GetItem(infoPtr, i)->dwState &= ~TCIS_BUTTONPRESSED;
paint = TRUE;
}
}
if (!excludesel && (selected != -1))
{
TAB_GetItem(infoPtr, selected)->dwState &= ~TCIS_BUTTONPRESSED;
infoPtr->iSelected = -1;
paint = TRUE;
}
if (paint)
TAB_InvalidateTabArea (infoPtr);
return 0;
}
static LRESULT WINAPI
TAB_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
@ -3257,8 +3287,7 @@ TAB_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
return TAB_SetMinTabWidth(infoPtr, (INT)lParam);
case TCM_DESELECTALL:
FIXME("Unimplemented msg TCM_DESELECTALL\n");
return 0;
return TAB_DeselectAll (infoPtr, (BOOL)wParam);
case TCM_GETEXTENDEDSTYLE:
return TAB_GetExtendedStyle (infoPtr);