From a381a1c78389da9bc318549a1a1b76e2c8f0f0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sun, 16 Dec 2018 19:20:39 -0300 Subject: [PATCH] UILoader padding. --HG-- branch : dev-widget-padding --- bin/assets/layouts/test.xml | 2 +- include/eepp/ui/uiloader.hpp | 4 ++++ src/eepp/ui/uiloader.cpp | 30 +++++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/bin/assets/layouts/test.xml b/bin/assets/layouts/test.xml index bd20663d4..3b486f8b2 100644 --- a/bin/assets/layouts/test.xml +++ b/bin/assets/layouts/test.xml @@ -25,7 +25,7 @@ - + diff --git a/include/eepp/ui/uiloader.hpp b/include/eepp/ui/uiloader.hpp index 3b6208c44..a33760dc7 100644 --- a/include/eepp/ui/uiloader.hpp +++ b/include/eepp/ui/uiloader.hpp @@ -68,7 +68,11 @@ class EE_API UILoader : public UIWidget { IntPtr mOp; bool mIndeterminate; + virtual void onAutoSize(); + virtual void onSizeChange(); + + virtual void onPaddingChange(); }; }} diff --git a/src/eepp/ui/uiloader.cpp b/src/eepp/ui/uiloader.cpp index 77a4ee33d..0b5046c31 100644 --- a/src/eepp/ui/uiloader.cpp +++ b/src/eepp/ui/uiloader.cpp @@ -63,8 +63,10 @@ void UILoader::update( const Time& time ) { if ( mOp == 1 && mArcAngle > 340 ) { mOp = -1; + mArcAngle = 340; } else if ( mOp == -1 && mArcAngle < 20 ) { mOp = 1; + mArcAngle = 20; } mArc.setArcAngle( mArcAngle ); @@ -110,7 +112,33 @@ const Color& UILoader::getFillColor() const { void UILoader::onSizeChange() { if ( mRadius == 0 ) { - setRadius( eemin( mDpSize.x, mDpSize.y ) / 2.f ); + setRadius( eemin( mDpSize.x - mPadding.Left - mPadding.Right, mDpSize.y - mPadding.Top - mPadding.Bottom ) / 2.f ); + } +} + +void UILoader::onPaddingChange() { + mRadius = 0; + + onSizeChange(); + + UIWidget::onPaddingChange(); +} + +void UILoader::onAutoSize() { + if ( mLayoutWidthRules == WRAP_CONTENT || mLayoutHeightRules == WRAP_CONTENT ) { + Sizef minSize( mDpSize ); + + if ( mLayoutWidthRules == WRAP_CONTENT ) { + minSize.x = eemax( minSize.x, 64.f ); + } + + if ( mLayoutHeightRules == WRAP_CONTENT ) { + minSize.y = eemax( minSize.y, 64.f ); + } + + setSize( minSize ); + + onSizeChange(); } }