From 5b85db3db0f55d3e50860c4c6f8c0323034d75fb Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Mon, 29 Apr 2002 17:12:01 +0000 Subject: [PATCH] Fixed StatusBar SetText again, added some comments. --- dlls/comctl32/status.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/dlls/comctl32/status.c b/dlls/comctl32/status.c index 08e07f33aef..1369af263d3 100644 --- a/dlls/comctl32/status.c +++ b/dlls/comctl32/status.c @@ -327,6 +327,7 @@ static HICON STATUSBAR_GetIcon (STATUSWINDOWINFO *infoPtr, INT nPart) { TRACE("%d\n", nPart); + /* MSDN says: "simple parts are indexed with -1" */ if ((nPart < -1) || (nPart >= infoPtr->numParts)) return 0; @@ -371,6 +372,8 @@ STATUSBAR_GetTextA (STATUSWINDOWINFO *infoPtr, INT nPart, LPSTR buf) LRESULT result; TRACE("part %d\n", nPart); + + /* MSDN says: "simple parts use index of 0", so this check is ok. */ if (nPart < 0 || nPart >= infoPtr->numParts) return 0; if (infoPtr->simple) @@ -505,6 +508,7 @@ STATUSBAR_SetIcon (STATUSWINDOWINFO *infoPtr, INT nPart, HICON hIcon) TRACE("setting part %d\n", nPart); + /* FIXME: MSDN says "if nPart is -1, the status bar is assumed simple" */ if (nPart == -1) { if (infoPtr->part0.hIcon == hIcon) /* same as - no redraw */ return TRUE; @@ -625,12 +629,17 @@ STATUSBAR_SetTextT (STATUSWINDOWINFO *infoPtr, INT nPart, WORD style, BOOL changed = FALSE; TRACE("part %d, text %s\n", nPart, debugstr_t(text, isW)); - if (nPart < 0 || nPart >= infoPtr->numParts) return FALSE; - if (nPart == 0x00ff) + /* MSDN says: "If the parameter is set to SB_SIMPLEID (255), the status + * window is assumed to be a simple window */ + + if (nPart == 0x00ff) { part = &infoPtr->part0; - else if (!infoPtr->simple && infoPtr->parts) - part = &infoPtr->parts[nPart]; + } else { + if (infoPtr->parts && (nPart < 0 || nPart >= infoPtr->numParts)) { + part = &infoPtr->parts[nPart]; + } + } if (!part) return FALSE; if (part->style != style)