diff --git a/dlls/comctl32/updown.c b/dlls/comctl32/updown.c index 390f829f8ba..a42b40f5dda 100644 --- a/dlls/comctl32/updown.c +++ b/dlls/comctl32/updown.c @@ -150,11 +150,16 @@ static BOOL UPDOWN_OffsetVal(UPDOWN_INFO *infoPtr, int delta) (infoPtr->MaxVal < infoPtr->MinVal ? -1 : 1) * (infoPtr->MinVal - infoPtr->MaxVal) + (delta < 0 ? 1 : -1); - } else return FALSE; + } if ((infoPtr->MaxVal > infoPtr->MinVal && infoPtr->CurVal+delta > infoPtr->MaxVal) + || (infoPtr->MaxVal < infoPtr->MinVal && infoPtr->CurVal+delta < infoPtr->MaxVal)) { + delta = infoPtr->MaxVal - infoPtr->CurVal; + } else { + delta = infoPtr->MinVal - infoPtr->CurVal; + } } infoPtr->CurVal += delta; - return TRUE; + return delta != 0; } /***********************************************************************