From 02a8ef8b5c760228aa4ead8e45a11ded3b067f3a Mon Sep 17 00:00:00 2001 From: Arin Alexander Date: Tue, 18 Apr 2017 20:00:59 +0300 Subject: [PATCH] Crash on destroy has been fixed --- .../dialogdesigner/lrdialogdesigner.cpp | 2 +- limereport/lrreportdesignwidget.cpp | 1 + limereport/lrreportdesignwindow.cpp | 63 +++++++++++-------- limereport/lrreportdesignwindow.h | 1 + 4 files changed, 40 insertions(+), 27 deletions(-) diff --git a/limereport/dialogdesigner/lrdialogdesigner.cpp b/limereport/dialogdesigner/lrdialogdesigner.cpp index e71fb78..6a33752 100644 --- a/limereport/dialogdesigner/lrdialogdesigner.cpp +++ b/limereport/dialogdesigner/lrdialogdesigner.cpp @@ -96,7 +96,7 @@ DialogDesignerManager::DialogDesignerManager(QObject *parent) : QObject(parent) m_actionEditor->setObjectName("ActionEditor"); m_formEditor->setActionEditor(m_actionEditor); m_designerToolWindows.append(m_actionEditor); - connect(m_formEditor, SIGNAL(destroyed(QObject*)), this, SLOT(slotObjectDestroyed(QObject*)) ); + connect(m_actionEditor, SIGNAL(destroyed(QObject*)), this, SLOT(slotObjectDestroyed(QObject*)) ); m_designerIntegration = new QDesignerIntegration(m_formEditor,this); m_formEditor->setIntegration(m_designerIntegration); diff --git a/limereport/lrreportdesignwidget.cpp b/limereport/lrreportdesignwidget.cpp index ec1332c..7c7c2bc 100644 --- a/limereport/lrreportdesignwidget.cpp +++ b/limereport/lrreportdesignwidget.cpp @@ -253,6 +253,7 @@ void ReportDesignWidget::createNewDialogTab(const QString& dialogName, const QBy QWidget* dialogDesigner = m_dialogDesignerManager->createFormEditor(description); int pageIndex = m_tabWidget->addTab(dialogDesigner,QIcon(),dialogName); m_tabWidget->setTabWhatsThis(pageIndex,"dialog"); + m_tabWidget->setCurrentIndex(pageIndex); } DialogDesigner*ReportDesignWidget::activeDialogPage() diff --git a/limereport/lrreportdesignwindow.cpp b/limereport/lrreportdesignwindow.cpp index b2df5a1..b44eff7 100644 --- a/limereport/lrreportdesignwindow.cpp +++ b/limereport/lrreportdesignwindow.cpp @@ -78,8 +78,8 @@ ReportDesignWindow::ReportDesignWindow(ReportEnginePrivate *report, QWidget *par createDialogPropertyEditor(); createDialogObjectInspector(); createDialogActionEditor(); - createDialogResourceEditor(); createDialogSignalSlotEditor(); + createDialogResourceEditor(); createDialogDesignerToolBar(); #endif m_instance=this; @@ -330,7 +330,9 @@ void ReportDesignWindow::createToolBars() createReportToolBar(); - m_pageTools << m_mainToolBar << m_reportToolBar << m_fontEditorBar << m_textAlignmentEditorBar << m_itemsBordersEditorBar; + m_pageTools << m_mainToolBar << m_reportToolBar << m_fontEditorBar + << m_textAlignmentEditorBar << m_itemsAlignmentEditorBar + << m_itemsBordersEditorBar; } @@ -544,42 +546,45 @@ void ReportDesignWindow::createDialogPropertyEditor() void ReportDesignWindow::createDialogObjectInspector() { - QDockWidget *doc = new QDockWidget(this); - doc->setWindowTitle(tr("Object Inspector")); - doc->setWidget(m_reportDesignWidget->toolWindow(ReportDesignWidget::ObjectInspector)); - doc->setObjectName("ObjectInspector"); - addDockWidget(Qt::RightDockWidgetArea,doc); - m_dialogEditors.append(doc); + QDockWidget *dock = new QDockWidget(this); + dock->setWindowTitle(tr("Object Inspector")); + dock->setWidget(m_reportDesignWidget->toolWindow(ReportDesignWidget::ObjectInspector)); + dock->setObjectName("ObjectInspector"); + addDockWidget(Qt::RightDockWidgetArea,dock); + m_dialogEditors.append(dock); } void ReportDesignWindow::createDialogActionEditor() { - QDockWidget *doc = new QDockWidget(this); - doc->setWindowTitle(tr("Action Editor")); - doc->setWidget(m_reportDesignWidget->toolWindow(ReportDesignWidget::ActionEditor)); - doc->setObjectName("ActionEditor"); - addDockWidget(Qt::BottomDockWidgetArea,doc); - m_dialogEditors.append(doc); + QDockWidget *dock = new QDockWidget(this); + dock->setWindowTitle(tr("Action Editor")); + dock->setWidget(m_reportDesignWidget->toolWindow(ReportDesignWidget::ActionEditor)); + dock->setObjectName("ActionEditor"); + addDockWidget(Qt::BottomDockWidgetArea,dock); + m_dialogEditors.append(dock); + m_docksToTabify.append(dock); } void ReportDesignWindow::createDialogResourceEditor() { - QDockWidget *doc = new QDockWidget(this); - doc->setWindowTitle(tr("Resource Editor")); - doc->setWidget(m_reportDesignWidget->toolWindow(ReportDesignWidget::ResourceEditor)); - doc->setObjectName("ResourceEditor"); - addDockWidget(Qt::BottomDockWidgetArea,doc); - m_dialogEditors.append(doc); + QDockWidget *dock = new QDockWidget(this); + dock->setWindowTitle(tr("Resource Editor")); + dock->setWidget(m_reportDesignWidget->toolWindow(ReportDesignWidget::ResourceEditor)); + dock->setObjectName("ResourceEditor"); + addDockWidget(Qt::BottomDockWidgetArea,dock); + m_dialogEditors.append(dock); + m_docksToTabify.append(dock); } void ReportDesignWindow::createDialogSignalSlotEditor() { - QDockWidget *doc = new QDockWidget(this); - doc->setWindowTitle(tr("SignalSlot Editor")); - doc->setWidget(m_reportDesignWidget->toolWindow(ReportDesignWidget::SignalSlotEditor)); - doc->setObjectName("SignalSlotEditor"); - addDockWidget(Qt::BottomDockWidgetArea,doc); - m_dialogEditors.append(doc); + QDockWidget *dock = new QDockWidget(this); + dock->setWindowTitle(tr("SignalSlot Editor")); + dock->setWidget(m_reportDesignWidget->toolWindow(ReportDesignWidget::SignalSlotEditor)); + dock->setObjectName("SignalSlotEditor"); + addDockWidget(Qt::BottomDockWidgetArea,dock); + m_dialogEditors.append(dock); + m_docksToTabify.append(dock); } void ReportDesignWindow::createDialogDesignerToolBar() @@ -1252,9 +1257,15 @@ void ReportDesignWindow::showDefaultEditors(){ foreach (QDockWidget* w, m_pageEditors) { w->setVisible(m_editorTabType != ReportDesignWidget::Dialog); } +#ifdef HAVE_QTDESIGNER_INTEGRATION foreach (QDockWidget* w, m_dialogEditors) { w->setVisible(m_editorTabType == ReportDesignWidget::Dialog); } + for ( int i = 0; i < m_docksToTabify.size() - 1; ++i){ + tabifyDockWidget(m_docksToTabify.at(i),m_docksToTabify.at(i+1)); + } + m_docksToTabify.at(0)->raise(); +#endif } void ReportDesignWindow::slotActivePageChanged() diff --git a/limereport/lrreportdesignwindow.h b/limereport/lrreportdesignwindow.h index c3e2578..658c984 100644 --- a/limereport/lrreportdesignwindow.h +++ b/limereport/lrreportdesignwindow.h @@ -259,6 +259,7 @@ private: QMap m_recentFiles; QVector m_pageEditors; QVector m_dialogEditors; + QVector m_docksToTabify; ReportDesignWidget::EditorTabType m_editorTabType; QByteArray m_pageEditorsState; QByteArray m_dialogEditorsState;