Skip to content

Commit

Permalink
Fix crash when reopening existing layouts
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Dec 6, 2017
1 parent b6dab6f commit ac6c131
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 0 deletions.
1 change: 1 addition & 0 deletions python/gui/layout/qgslayoutviewtoolselect.sip
Expand Up @@ -25,6 +25,7 @@ class QgsLayoutViewToolSelect : QgsLayoutViewTool
%Docstring
Constructor for QgsLayoutViewToolSelect.
%End
~QgsLayoutViewToolSelect();

virtual void layoutPressEvent( QgsLayoutViewMouseEvent *event );

Expand Down
1 change: 1 addition & 0 deletions src/app/layout/qgslayoutdesignerdialog.cpp
Expand Up @@ -617,6 +617,7 @@ QgsLayout *QgsLayoutDesignerDialog::currentLayout()

void QgsLayoutDesignerDialog::setCurrentLayout( QgsLayout *layout )
{
layout->deselectAll();
mLayout = layout;
connect( mLayout, &QgsLayout::destroyed, this, &QgsLayoutDesignerDialog::close );

Expand Down
3 changes: 3 additions & 0 deletions src/gui/layout/qgslayoutmousehandles.cpp
Expand Up @@ -311,6 +311,9 @@ bool QgsLayoutMouseHandles::selectionRotation( double &rotation ) const

double QgsLayoutMouseHandles::rectHandlerBorderTolerance()
{
if ( !mView )
return 0;

//calculate size for resize handles
//get view scale factor
double viewScaleFactor = mView->transform().m11();
Expand Down
7 changes: 7 additions & 0 deletions src/gui/layout/qgslayoutviewtoolselect.cpp
Expand Up @@ -30,6 +30,12 @@ QgsLayoutViewToolSelect::QgsLayoutViewToolSelect( QgsLayoutView *view )
mRubberBand->setPen( QPen( QBrush( QColor( 254, 58, 29, 100 ) ), 0, Qt::DotLine ) );
}

QgsLayoutViewToolSelect::~QgsLayoutViewToolSelect()
{
if ( mMouseHandles )
mMouseHandles->deleteLater();
}

void QgsLayoutViewToolSelect::layoutPressEvent( QgsLayoutViewMouseEvent *event )
{
if ( mMouseHandles->shouldBlockEvent( event ) )
Expand Down Expand Up @@ -276,6 +282,7 @@ QgsLayoutMouseHandles *QgsLayoutViewToolSelect::mouseHandles()
void QgsLayoutViewToolSelect::setLayout( QgsLayout *layout )
{
// existing handles are owned by previous layout
mMouseHandles->deleteLater();

//add mouse selection handles to layout, and initially hide
mMouseHandles = new QgsLayoutMouseHandles( layout, view() );
Expand Down
1 change: 1 addition & 0 deletions src/gui/layout/qgslayoutviewtoolselect.h
Expand Up @@ -40,6 +40,7 @@ class GUI_EXPORT QgsLayoutViewToolSelect : public QgsLayoutViewTool
* Constructor for QgsLayoutViewToolSelect.
*/
QgsLayoutViewToolSelect( QgsLayoutView *view SIP_TRANSFERTHIS );
~QgsLayoutViewToolSelect();

void layoutPressEvent( QgsLayoutViewMouseEvent *event ) override;
void layoutMoveEvent( QgsLayoutViewMouseEvent *event ) override;
Expand Down

0 comments on commit ac6c131

Please sign in to comment.