From 5d98899ffd07ba758d7f73b6e48767853440287b Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Fri, 6 Apr 2018 13:08:09 +0200 Subject: [PATCH] widget as a std::unique_ptr is bad - a widget is often used as a raw pointer and in most cases the parent will take care of destructing it - here the context is also destructing the widget - so move back to QPointer and keep deleting to the context Change-Id: Ief5c4faa08d5e76f723b35d33d09fafc502c2d8a Reviewed-by: Thomas Hartmann --- .../qmldesigner/components/texteditor/texteditorview.cpp | 5 +++-- .../qmldesigner/components/texteditor/texteditorview.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp index 0c1976638a4..85e42b7d803 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp @@ -66,7 +66,7 @@ const char TEXTEDITOR_CONTEXT_ID[] = "QmlDesigner.TextEditorContext"; TextEditorView::TextEditorView(QObject *parent) : AbstractView(parent) , m_widget(new TextEditorWidget(this)) - , m_textEditorContext(new Internal::TextEditorContext(m_widget.get())) + , m_textEditorContext(new Internal::TextEditorContext(m_widget)) { Core::ICore::addContextObject(m_textEditorContext); @@ -89,6 +89,7 @@ TextEditorView::TextEditorView(QObject *parent) TextEditorView::~TextEditorView() { + // m_textEditorContext is responsible for deleting the widget } void TextEditorView::modelAttached(Model *model) @@ -148,7 +149,7 @@ void TextEditorView::nodeReparented(const ModelNode &/*node*/, const NodeAbstrac WidgetInfo TextEditorView::widgetInfo() { - return createWidgetInfo(m_widget.get(), 0, "TextEditor", WidgetInfo::CentralPane, 0, tr("Text Editor"), DesignerWidgetFlags::IgnoreErrors); + return createWidgetInfo(m_widget, 0, "TextEditor", WidgetInfo::CentralPane, 0, tr("Text Editor"), DesignerWidgetFlags::IgnoreErrors); } void TextEditorView::contextHelpId(const Core::IContext::HelpIdCallback &callback) const diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorview.h b/src/plugins/qmldesigner/components/texteditor/texteditorview.h index ea7766115a1..300fa69cc11 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.h +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.h @@ -101,7 +101,7 @@ public: void reformatFile(); private: - std::unique_ptr m_widget; + QPointer m_widget; Internal::TextEditorContext *m_textEditorContext; };