compass hiding fix

This commit is contained in:
ExMix 2014-03-14 14:31:37 +03:00 committed by Alex Zolotarev
parent ca79bc3d4b
commit 29e2e6e262
3 changed files with 22 additions and 7 deletions

View file

@ -105,7 +105,7 @@ namespace graphics
bool isDirtyLayout() const;
void setIsDirtyLayout(bool flag) const;
bool isVisible() const;
virtual bool isVisible() const;
virtual void setIsVisible(bool flag);
bool isValid() const;

View file

@ -32,20 +32,20 @@ CompassArrow::CompassArrow(Params const & p)
void CompassArrow::AnimateShow()
{
if (!isVisible() && (m_animTask == NULL || IsHidingAnim()))
if (!isBaseVisible() && (m_animTask == NULL || IsHidingAnim()))
{
setIsVisible(true);
CreateAnim(0.1, 1.0, 0.2, 0.0, true);
}
if (isVisible() && (m_animTask == NULL || IsHidingAnim()))
if (isBaseVisible() && (m_animTask == NULL || IsHidingAnim()))
CreateAnim(GetCurrentAlfa(), 1.0, 0.2, 0.0, true);
}
void CompassArrow::AnimateHide()
{
if (isVisible() && (m_animTask == NULL || !IsHidingAnim()))
CreateAnim(1.0, 0.0, 0.3, 1.0, false);
if (isBaseVisible() && (m_animTask == NULL || !IsHidingAnim()))
CreateAnim(1.0, 0.0, 0.3, 0.3, false);
}
void CompassArrow::SetAngle(double angle)
@ -81,7 +81,7 @@ vector<m2::AnyRectD> const & CompassArrow::boundRects() const
void CompassArrow::draw(graphics::OverlayRenderer * r,
math::Matrix<double, 3, 3> const & m) const
{
if (isVisible())
if (isBaseVisible())
{
checkDirtyLayout();
@ -98,6 +98,14 @@ void CompassArrow::draw(graphics::OverlayRenderer * r,
}
}
bool CompassArrow::isVisible() const
{
if (m_animTask != NULL && IsHidingAnim())
return false;
return isBaseVisible();
}
void CompassArrow::AlfaAnimEnded(bool isVisible)
{
setIsVisible(isVisible);
@ -193,6 +201,11 @@ void CompassArrow::purge()
m_displayList = NULL;
}
bool CompassArrow::isBaseVisible() const
{
return base_t::isVisible();
}
bool CompassArrow::onTapEnded(m2::PointD const & pt)
{
anim::Controller * animController = m_framework->GetAnimController();

View file

@ -22,8 +22,8 @@ class Framework;
class CompassArrow : public gui::Element
{
private:
typedef gui::Element base_t;
double m_angle;
graphics::DisplayList * m_displayList;
@ -42,6 +42,7 @@ private:
void cache();
void purge();
bool isBaseVisible() const;
public:
@ -61,6 +62,7 @@ public:
vector<m2::AnyRectD> const & boundRects() const;
void draw(graphics::OverlayRenderer * r, math::Matrix<double, 3, 3> const & m) const;
virtual bool isVisible() const;
bool onTapEnded(m2::PointD const & pt);