diff -urNw aquavcl01/vcl/aqua/source/gdi/salnativewidgets.cxx myaquavcl01/vcl/aqua/source/gdi/salnativewidgets.cxx --- aquavcl01/vcl/aqua/source/gdi/salnativewidgets.cxx 2006-08-21 12:22:37.000000000 -0400 +++ myaquavcl01/vcl/aqua/source/gdi/salnativewidgets.cxx 2006-09-14 16:15:30.000000000 -0400 @@ -67,12 +67,13 @@ return TRUE; break; case CTRL_SCROLLBAR: -/* - if( nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT ) - return FALSE; // no background painting needed - if( nPart == PART_ENTIRE_CONTROL ) - hTheme = getThemeHandle( mhWnd, L"Scrollbar"); -*/ + { + if( nPart == PART_DRAW_BACKGROUND_VERT || + nPart == PART_DRAW_BACKGROUND_HORZ || + nPart == PART_ENTIRE_CONTROL || + nPart == HAS_THREE_BUTTONS ) + return true; + } break; case CTRL_COMBOBOX: /* @@ -228,12 +229,19 @@ BOOL bOk = FALSE; Rectangle buttonRect = rControlRegion.GetBoundRect(); + Rect rc; rc.left = buttonRect.Left(); rc.right = buttonRect.Right()+1; rc.top = buttonRect.Top(); rc.bottom = buttonRect.Bottom()+1; + HIRect hirc; + hirc.origin.x = static_cast(buttonRect.Left()); + hirc.origin.y = static_cast(buttonRect.Top()); + hirc.size.width = static_cast(buttonRect.Right()+1) - static_cast(buttonRect.Left()); + hirc.size.height = static_cast(buttonRect.Bottom()+1) - static_cast(buttonRect.Top()); + switch( nType ) { @@ -267,7 +275,59 @@ return noErr == DrawThemeButton ( &rc, aKind, &aInfo, 0, 0, 0, 0 ); } case CTRL_SCROLLBAR: -// hTheme = getThemeHandle( mhWnd, L"Scrollbar"); + { + ScrollbarValue* pScrollbarVal = (ScrollbarValue *)(aValue.getOptionalVal()); + + if( nPart == PART_DRAW_BACKGROUND_VERT || + nPart == PART_DRAW_BACKGROUND_HORZ ) + { + HIThemeTrackDrawInfo aTrackDraw; + aTrackDraw.version = 0; + aTrackDraw.kind = kThemeMediumScrollBar; + aTrackDraw.bounds = hirc; + aTrackDraw.min = pScrollbarVal->mnMin; + aTrackDraw.max = pScrollbarVal->mnMax - pScrollbarVal->mnVisibleSize; + aTrackDraw.value = pScrollbarVal->mnCur; + aTrackDraw.reserved = 0; + aTrackDraw.attributes = kThemeTrackShowThumb; + if( nPart == PART_DRAW_BACKGROUND_HORZ ) + aTrackDraw.attributes |= kThemeTrackHorizontal; + aTrackDraw.enableState = kThemeTrackActive; + + ScrollBarTrackInfo aScrollInfo; + aScrollInfo.viewsize = pScrollbarVal->mnVisibleSize; + aScrollInfo.pressState = 0; + + if ( pScrollbarVal->mnButton1State & CTRL_STATE_ENABLED ) + { + if ( pScrollbarVal->mnButton1State & CTRL_STATE_PRESSED ) + aScrollInfo.pressState = kThemeTopOutsideArrowPressed; + } + + if ( pScrollbarVal->mnButton2State & CTRL_STATE_ENABLED ) + { + if ( pScrollbarVal->mnButton2State & CTRL_STATE_PRESSED ) + aScrollInfo.pressState = kThemeBottomOutsideArrowPressed; + } + + if ( pScrollbarVal->mnThumbState & CTRL_STATE_ENABLED ) + { + if ( pScrollbarVal->mnThumbState & CTRL_STATE_PRESSED ) + aScrollInfo.pressState = kThemeThumbPressed; + } + + aTrackDraw.trackInfo.scrollbar = aScrollInfo; + + if ( BeginGraphics() ) + { + HIThemeDrawTrack( &aTrackDraw, NULL, mrContext, kHIThemeOrientationNormal ); + EndGraphics(); + return true; + } + else + return false; + } + } break; case CTRL_COMBOBOX: /*