From ddf335fd79cc34dc80827cd6cbd0c3af85295afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sat, 22 Jun 2019 15:15:53 -0300 Subject: [PATCH] Minor fixes. --HG-- branch : dev --- bin/assets/layouts/test.xml | 9 ++++----- include/eepp/ui/uislider.hpp | 11 ++-------- src/eepp/ui/uiscrollbar.cpp | 7 ++++--- src/eepp/ui/uiscrollview.cpp | 34 +++++++++++++++---------------- src/eepp/ui/uislider.cpp | 39 ++++++++++++++++++++---------------- 5 files changed, 49 insertions(+), 51 deletions(-) diff --git a/bin/assets/layouts/test.xml b/bin/assets/layouts/test.xml index 57641f5a0..e8781567f 100644 --- a/bin/assets/layouts/test.xml +++ b/bin/assets/layouts/test.xml @@ -70,11 +70,10 @@ - - - - - + + + + diff --git a/include/eepp/ui/uislider.hpp b/include/eepp/ui/uislider.hpp index 492ea8bc1..d07fcca1e 100644 --- a/include/eepp/ui/uislider.hpp +++ b/include/eepp/ui/uislider.hpp @@ -6,14 +6,6 @@ namespace EE { namespace UI { -class EE_API UISliderStyleConfig { - public: - UISliderStyleConfig() {} - - bool AllowHalfSliderOut = false; - bool ExpandBackground = false; -}; - class EE_API UISlider : public UIWidget { public: static UISlider * New(); @@ -81,7 +73,8 @@ class EE_API UISlider : public UIWidget { friend class Private::UISliderButton; UI_ORIENTATION mOrientation; - UISliderStyleConfig mStyleConfig; + bool mAllowHalfSliderOut; + bool mExpandBackground; UINode * mBackSlider; Private::UISliderButton * mSlider; Float mMinValue; diff --git a/src/eepp/ui/uiscrollbar.cpp b/src/eepp/ui/uiscrollbar.cpp index f8f866e94..42168a6b7 100644 --- a/src/eepp/ui/uiscrollbar.cpp +++ b/src/eepp/ui/uiscrollbar.cpp @@ -35,14 +35,13 @@ UIScrollBar::UIScrollBar( const UI_ORIENTATION& orientation ) : mBtnDown->setSize( 16, 16 ); mSlider = UISlider::New(); + mSlider->addEventListener( Event::OnValueChange, cb::Make1( this, &UIScrollBar::onValueChangeCb ) ); mSlider->setElementTag( "scrollbarslider" ); mSlider->setOrientation( orientation ); mSlider->setParent( this ); mSlider->setAllowHalfSliderOut( false ); mSlider->setExpandBackground( false ); - mSlider->addEventListener( Event::OnValueChange, cb::Make1( this, &UIScrollBar::onValueChangeCb ) ); - adjustChilds(); applyDefaultTheme(); @@ -294,7 +293,9 @@ bool UIScrollBar::getExpandBackground() const { } void UIScrollBar::setExpandBackground( bool expandBackground ) { - mSlider->setExpandBackground( expandBackground ); + if ( mSlider->getExpandBackground() != expandBackground ) { + mSlider->setExpandBackground( expandBackground ); + } adjustChilds(); } diff --git a/src/eepp/ui/uiscrollview.cpp b/src/eepp/ui/uiscrollview.cpp index 15598d19d..d6b7a5d4b 100644 --- a/src/eepp/ui/uiscrollview.cpp +++ b/src/eepp/ui/uiscrollview.cpp @@ -42,8 +42,8 @@ bool UIScrollView::isType( const Uint32& type ) const { } void UIScrollView::onSizeChange() { - UIWidget::onSizeChange(); containerUpdate(); + UIWidget::onSizeChange(); } void UIScrollView::onAlphaChange() { @@ -77,8 +77,8 @@ void UIScrollView::onChildCountChange() { mScrollView->close(); } - child->setParent( mContainer ); mScrollView = child; + mScrollView->setParent( mContainer ); mSizeChangeCb = mScrollView->addEventListener( Event::OnSizeChange, cb::Make1( this, &UIScrollView::onScrollViewSizeChange ) ); containerUpdate(); @@ -139,19 +139,6 @@ void UIScrollView::containerUpdate() { if ( NULL == mScrollView ) return; - Sizef size = mDpSize - mPadding; - - if ( Exclusive == mViewType ) { - if ( mVScroll->isVisible() ) - size.x -= mVScroll->getSize().getWidth(); - - if ( mHScroll->isVisible() ) - size.y -= mHScroll->getSize().getHeight(); - } - - mContainer->setPosition( mPadding.Left, mPadding.Top ); - mContainer->setSize( size ); - if ( UI_SCROLLBAR_ALWAYS_ON == mHScrollMode ) { mHScroll->setVisible( true ); mHScroll->setEnabled( true ); @@ -159,7 +146,7 @@ void UIScrollView::containerUpdate() { mHScroll->setVisible( false ); mHScroll->setEnabled( false ); } else { - bool visible = mScrollView->getSize().getWidth() > mContainer->getSize().getWidth(); + bool visible = mScrollView->getSize().getWidth() > getSize().getWidth() - getPadding().Left - getPadding().Right; mHScroll->setVisible( visible ); mHScroll->setEnabled( visible ); @@ -172,12 +159,25 @@ void UIScrollView::containerUpdate() { mVScroll->setVisible( false ); mVScroll->setEnabled( false ); } else { - bool visible = mScrollView->getSize().getHeight() > mContainer->getSize().getHeight(); + bool visible = mScrollView->getSize().getHeight() > getSize().getHeight() - getPadding().Top - getPadding().Bottom; mVScroll->setVisible( visible ); mVScroll->setEnabled( visible ); } + Sizef size = mDpSize - mPadding; + + if ( Exclusive == mViewType ) { + if ( mVScroll->isVisible() ) + size.x -= mVScroll->getSize().getWidth(); + + if ( mHScroll->isVisible() ) + size.y -= mHScroll->getSize().getHeight(); + } + + mContainer->setPosition( mPadding.Left, mPadding.Top ); + mContainer->setSize( size ); + mVScroll->setPosition( mDpSize.getWidth() - mVScroll->getSize().getWidth() - mPadding.Right, mPadding.Top ); mHScroll->setPosition( mPadding.Left, mDpSize.getHeight() - mHScroll->getSize().getHeight() - mPadding.Bottom ); diff --git a/src/eepp/ui/uislider.cpp b/src/eepp/ui/uislider.cpp index 90f0965e0..19de0e8c5 100644 --- a/src/eepp/ui/uislider.cpp +++ b/src/eepp/ui/uislider.cpp @@ -20,6 +20,8 @@ UISlider * UISlider::NewHorizontal() { UISlider::UISlider( const UI_ORIENTATION& orientation ) : UIWidget( "slider" ), mOrientation( orientation ), + mAllowHalfSliderOut( false ), + mExpandBackground( false ), mBackSlider( NULL ), mSlider( NULL ), mMinValue( 0.f ), @@ -137,24 +139,24 @@ void UISlider::adjustChilds() { if ( UI_HORIZONTAL == mOrientation ) { Float Height; - if ( mStyleConfig.ExpandBackground ) + if ( mExpandBackground ) Height = mDpSize.getHeight() - mPadding.Top - mPadding.Bottom; else Height = tSkin->getSize().getHeight(); - if ( mStyleConfig.AllowHalfSliderOut ) + if ( mAllowHalfSliderOut ) mBackSlider->setSize( Sizef( mDpSize.getWidth() - mSlider->getSize().getWidth() - mPadding.Left - mPadding.Right, Height ) ); else mBackSlider->setSize( Sizef( mDpSize.getWidth() - mPadding.Left - mPadding.Right, Height ) ); } else { Float Width; - if ( mStyleConfig.ExpandBackground ) + if ( mExpandBackground ) Width = mDpSize.getWidth() - mPadding.Left - mPadding.Right; else Width = tSkin->getSize().getWidth(); - if ( mStyleConfig.AllowHalfSliderOut ) + if ( mAllowHalfSliderOut ) mBackSlider->setSize( Sizef( Width, mDpSize.getHeight() - mSlider->getSize().getHeight() - mPadding.Top - mPadding.Bottom ) ); else mBackSlider->setSize( Sizef( Width, mDpSize.getHeight() ) ); @@ -176,7 +178,7 @@ void UISlider::fixSliderPos() { if ( mSlider->getPosition().x < mPadding.Left ) mSlider->setPosition( mPadding.Left, 0 ); - if ( mStyleConfig.AllowHalfSliderOut ) { + if ( mAllowHalfSliderOut ) { if ( mSlider->getPosition().x > mBackSlider->getSize().getWidth() + mPadding.Left ) mSlider->setPosition( mBackSlider->getSize().getWidth() + mPadding.Left, 0 ); } else { @@ -186,7 +188,7 @@ void UISlider::fixSliderPos() { mSlider->centerVertical(); - if ( mStyleConfig.AllowHalfSliderOut ) + if ( mAllowHalfSliderOut ) setValue( mMinValue + ( mSlider->getPosition().x - mPadding.Left ) * ( mMaxValue - mMinValue ) / (Float)mBackSlider->getSize().getWidth() ); else setValue( mMinValue + ( mSlider->getPosition().x - mPadding.Left ) * ( mMaxValue - mMinValue ) / ( (Float)mDpSize.getWidth() - mSlider->getSize().getWidth() ) ); @@ -196,7 +198,7 @@ void UISlider::fixSliderPos() { if ( mSlider->getPosition().y < mPadding.Top ) mSlider->setPosition( 0, mPadding.Top ); - if ( mStyleConfig.AllowHalfSliderOut ) { + if ( mAllowHalfSliderOut ) { if ( mSlider->getPosition().y > mBackSlider->getSize().getHeight() + mPadding.Top ) mSlider->setPosition( 0, mBackSlider->getSize().getHeight() + mPadding.Top ); } else { @@ -207,7 +209,7 @@ void UISlider::fixSliderPos() { mSlider->centerHorizontal(); - if ( mStyleConfig.AllowHalfSliderOut ) + if ( mAllowHalfSliderOut ) setValue( mMinValue + ( mSlider->getPosition().y - mPadding.Top ) * ( mMaxValue - mMinValue ) / (Float)mBackSlider->getSize().getHeight() ); else setValue( mMinValue + ( mSlider->getPosition().y - mPadding.Top ) * ( mMaxValue - mMinValue ) / ( (Float)mDpSize.getHeight() - mSlider->getSize().getHeight() ) ); @@ -218,6 +220,9 @@ void UISlider::fixSliderPos() { } void UISlider::setValue( Float Val ) { + if ( mValue == Val ) + return; + if ( Val < mMinValue ) Val = mMinValue; if ( Val > mMaxValue ) Val = mMaxValue; @@ -230,12 +235,12 @@ void UISlider::setValue( Float Val ) { mOnPosChange = true; if ( UI_HORIZONTAL == mOrientation ) { - if ( mStyleConfig.AllowHalfSliderOut ) + if ( mAllowHalfSliderOut ) mSlider->setPosition( mPadding.Left + (Int32)( (Float)mBackSlider->getSize().getWidth() * Percent ), mSlider->getPosition().y ); else mSlider->setPosition( mPadding.Left + (Int32)( ( (Float)mDpSize.getWidth() - mPadding.Left - mPadding.Top - mSlider->getSize().getWidth() ) * Percent ), mSlider->getPosition().y ); } else { - if ( mStyleConfig.AllowHalfSliderOut ) + if ( mAllowHalfSliderOut ) mSlider->setPosition( mSlider->getPosition().x, mPadding.Top + (Int32)( (Float)mBackSlider->getSize().getHeight() * Percent ) ); else mSlider->setPosition( mSlider->getPosition().x, mPadding.Top + (Int32)( ( (Float)mDpSize.getHeight() - mPadding.Top - mPadding.Bottom - mSlider->getSize().getHeight() ) * Percent ) ); @@ -355,12 +360,12 @@ UISlider * UISlider::setOrientation( const UI_ORIENTATION & orientation ) { } bool UISlider::getAllowHalfSliderOut() const { - return mStyleConfig.AllowHalfSliderOut; + return mAllowHalfSliderOut; } void UISlider::setAllowHalfSliderOut( bool allowHalfSliderOut ) { - if ( mStyleConfig.AllowHalfSliderOut != allowHalfSliderOut ) { - mStyleConfig.AllowHalfSliderOut = allowHalfSliderOut; + if ( mAllowHalfSliderOut != allowHalfSliderOut ) { + mAllowHalfSliderOut = allowHalfSliderOut; adjustChilds(); @@ -369,12 +374,12 @@ void UISlider::setAllowHalfSliderOut( bool allowHalfSliderOut ) { } bool UISlider::getExpandBackground() const { - return mStyleConfig.ExpandBackground; + return mExpandBackground; } void UISlider::setExpandBackground( bool expandBackground ) { - if ( mStyleConfig.ExpandBackground != expandBackground ) { - mStyleConfig.ExpandBackground = expandBackground; + if ( mExpandBackground != expandBackground ) { + mExpandBackground = expandBackground; adjustChilds(); @@ -456,7 +461,7 @@ bool UISlider::setAttribute( const NodeAttribute& attribute, const Uint32& state Sizef UISlider::getMinimumSize() { Float w = eemax( mBackSlider->getSkinSize().getWidth(), mSlider->getSkinSize().getWidth() ); Float h = eemax( mBackSlider->getSkinSize().getHeight(), mSlider->getSkinSize().getHeight() ); - return Sizef( w + ( mStyleConfig.AllowHalfSliderOut ? w : 0 ) + mPadding.Left + mPadding.Right, h + mPadding.Top + mPadding.Bottom ); + return Sizef( w + ( mAllowHalfSliderOut ? w : 0 ) + mPadding.Left + mPadding.Right, h + mPadding.Top + mPadding.Bottom ); } void UISlider::onAutoSize() {