forked from organicmaps/organicmaps
compass hiding fix
This commit is contained in:
parent
ca79bc3d4b
commit
29e2e6e262
3 changed files with 22 additions and 7 deletions
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue