--- qwidgetanimator_ori.cpp 2012-02-27 12:17:12.000000000 +0100 +++ qwidgetanimator.cpp 2012-02-27 12:18:58.000000000 +0100 @@ -88,25 +88,30 @@ const QRect final_geometry = _final_geometry.isValid() || widget->isWindow() ? _final_geometry : QRect(QPoint(-500 - widget->width(), -500 - widget->height()), widget->size()); -#ifndef QT_NO_ANIMATION - AnimationMap::const_iterator it = m_animation_map.constFind(widget); - if (it != m_animation_map.constEnd() && (*it)->endValue().toRect() == final_geometry) - return; +// BEGIN (andrew) +// workaround for crash when resizing docked widgets: +//#ifndef QT_NO_ANIMATION +// AnimationMap::const_iterator it = m_animation_map.constFind(widget); +// if (it != m_animation_map.constEnd() && (*it)->endValue().toRect() == final_geometry) +// return; - QPropertyAnimation *anim = new QPropertyAnimation(widget, "geometry", widget); - anim->setDuration(animate ? 200 : 0); - anim->setEasingCurve(QEasingCurve::InOutQuad); - anim->setEndValue(final_geometry); - m_animation_map[widget] = anim; - connect(anim, SIGNAL(finished()), SLOT(animationFinished())); - anim->start(QPropertyAnimation::DeleteWhenStopped); -#else +// QPropertyAnimation *anim = new QPropertyAnimation(widget, "geometry", widget); +// anim->setDuration(animate ? 200 : 0); +// anim->setEasingCurve(QEasingCurve::InOutQuad); +// anim->setEndValue(final_geometry); +// m_animation_map[widget] = anim; +// connect(anim, SIGNAL(finished()), SLOT(animationFinished())); +// anim->start(QPropertyAnimation::DeleteWhenStopped); +//#else +// END (andrew) //we do it in one shot widget->setGeometry(final_geometry); #ifndef QT_NO_MAINWINDOW m_mainWindowLayout->animationFinished(widget); #endif //QT_NO_MAINWINDOW -#endif //QT_NO_ANIMATION +// BEGIN (andrew) +//#endif //QT_NO_ANIMATION +// END (andrew) } bool QWidgetAnimator::animating() const