+#include <lib/gui/ewidgetanimation.h>
+#include <lib/gui/ewidget.h>
+
+eWidgetAnimation::eWidgetAnimation(eWidget *widget): m_widget(widget)
+{
+ m_active = 0;
+}
+
+void eWidgetAnimation::tick(int inc)
+{
+ if (!m_active)
+ return;
+
+ // move animation
+ if (m_move_length)
+ {
+ if (m_move_current_tick >= m_move_length)
+ {
+ m_active = 0;
+ m_move_current_tick = m_move_length;
+ }
+ int xdiff = m_move_end.x() - m_move_start.x();
+ int ydiff = m_move_end.y() - m_move_start.y();
+
+ xdiff *= m_move_current_tick;
+ xdiff /= m_move_length;
+
+ ydiff *= m_move_current_tick;
+ ydiff /= m_move_length;
+
+ ePoint res(m_move_start.x() + xdiff, m_move_start.y() + ydiff);
+
+ m_move_current_tick += inc;
+
+ m_widget->move(res);
+ }
+}
+
+void eWidgetAnimation::startMoveAnimation(ePoint start, ePoint end, int length)
+{
+ m_move_current_tick = 0;
+ m_move_length = length;
+ m_move_start = start;
+ m_move_end = end;
+ m_active = 1;
+}