# HG changeset patch # User Pantxo Diribarne # Date 1433266927 -7200 # Node ID a5f9bf4df254de5cfba799748565bc8846e0ec09 # Parent 0bb456e9423bfbe68b16815a28bde74548e09cea Avoid crash when trying to annotate an empty figure (bug #45241) * Canvas.cc (Canvas::canvasMouseMoveEvent): allow axes object to be invalid when in TextMode * Canvas.cc (Canvas::canvasMousePressEvent): don't define m_mouseAxes when in textmode diff -r 0bb456e9423b -r a5f9bf4df254 libgui/graphics/Canvas.cc --- a/libgui/graphics/Canvas.cc Tue Jun 02 19:24:44 2015 +0200 +++ b/libgui/graphics/Canvas.cc Tue Jun 02 19:42:07 2015 +0200 @@ -401,14 +401,14 @@ gh_manager::auto_lock lock; graphics_object ax = gh_manager::get_object (m_mouseAxes); - if (m_mouseMode != NoMode && ax.valid_object ()) + if (m_mouseMode != NoMode && (ax.valid_object () || m_mouseMode == TextMode)) { - axes::properties& ap = Utils::properties (ax); - switch (m_mouseMode) { case RotateMode: { + axes::properties& ap = Utils::properties (ax); + ap.rotate3d (m_mouseCurrent.x (), event->x (), m_mouseCurrent.y (), event->y ()); @@ -428,6 +428,8 @@ case PanMode: { + axes::properties& ap = Utils::properties (ax); + graphics_object figObj (ax.get_ancestor ("figure")); std::string mode = pan_mode (figObj); @@ -617,7 +619,6 @@ { case Qt::LeftButton: m_mouseAnchor = m_mouseCurrent = event->pos (); - m_mouseAxes = axesObj.get_handle (); m_mouseMode = newMouseMode; m_rectMode = true; }