diff options
Diffstat (limited to 'indra/llui/llscrollbar.cpp')
-rw-r--r-- | indra/llui/llscrollbar.cpp | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/indra/llui/llscrollbar.cpp b/indra/llui/llscrollbar.cpp index 99908a6bc0..b106bb570d 100644 --- a/indra/llui/llscrollbar.cpp +++ b/indra/llui/llscrollbar.cpp @@ -159,30 +159,50 @@ void LLScrollbar::setDocParams( S32 size, S32 pos ) void LLScrollbar::setDocPos(S32 pos) { - mDocPos = llclamp( pos, 0, getDocPosMax() ); - mDocChanged = TRUE; + if (pos != mDocPos) + { + mDocPos = llclamp( pos, 0, getDocPosMax() ); + mDocChanged = TRUE; - updateThumbRect(); + updateThumbRect(); + } } void LLScrollbar::setDocSize(S32 size) { - mDocSize = size; - mDocPos = llclamp( mDocPos, 0, getDocPosMax() ); - mDocChanged = TRUE; + if (size != mDocSize) + { + mDocSize = size; + mDocPos = llclamp( mDocPos, 0, getDocPosMax() ); + mDocChanged = TRUE; - updateThumbRect(); + updateThumbRect(); + } } void LLScrollbar::setPageSize( S32 page_size ) { - mPageSize = page_size; - mDocPos = llclamp( mDocPos, 0, getDocPosMax() ); - mDocChanged = TRUE; + if (page_size != mPageSize) + { + mPageSize = page_size; + mDocPos = llclamp( mDocPos, 0, getDocPosMax() ); + mDocChanged = TRUE; - updateThumbRect(); + updateThumbRect(); + } +} + +BOOL LLScrollbar::isAtBeginning() +{ + return mDocPos == 0; +} + +BOOL LLScrollbar::isAtEnd() +{ + return mDocPos == getDocPosMax(); } + void LLScrollbar::updateThumbRect() { // llassert( 0 <= mDocSize ); @@ -479,7 +499,7 @@ void LLScrollbar::draw() // Draw background and thumb. LLUUID rounded_rect_image_id; rounded_rect_image_id.set(LLUI::sAssetsGroup->getString("rounded_square.tga")); - LLImageGL* rounded_rect_imagep = LLUI::sImageProvider->getUIImageByID(rounded_rect_image_id); + LLImageGL* rounded_rect_imagep = LLUI::sImageProvider->getImageByID(rounded_rect_image_id); if (!rounded_rect_imagep) { |