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 <thomas.hartmann@qt.io>
This commit is contained in:
Tim Jenssen
2018-04-06 13:08:09 +02:00
committed by Thomas Hartmann
parent d745e2fac0
commit 5d98899ffd
2 changed files with 4 additions and 3 deletions

View File

@@ -66,7 +66,7 @@ const char TEXTEDITOR_CONTEXT_ID[] = "QmlDesigner.TextEditorContext";
TextEditorView::TextEditorView(QObject *parent) TextEditorView::TextEditorView(QObject *parent)
: AbstractView(parent) : AbstractView(parent)
, m_widget(new TextEditorWidget(this)) , 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); Core::ICore::addContextObject(m_textEditorContext);
@@ -89,6 +89,7 @@ TextEditorView::TextEditorView(QObject *parent)
TextEditorView::~TextEditorView() TextEditorView::~TextEditorView()
{ {
// m_textEditorContext is responsible for deleting the widget
} }
void TextEditorView::modelAttached(Model *model) void TextEditorView::modelAttached(Model *model)
@@ -148,7 +149,7 @@ void TextEditorView::nodeReparented(const ModelNode &/*node*/, const NodeAbstrac
WidgetInfo TextEditorView::widgetInfo() 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 void TextEditorView::contextHelpId(const Core::IContext::HelpIdCallback &callback) const

View File

@@ -101,7 +101,7 @@ public:
void reformatFile(); void reformatFile();
private: private:
std::unique_ptr<TextEditorWidget> m_widget; QPointer<TextEditorWidget> m_widget;
Internal::TextEditorContext *m_textEditorContext; Internal::TextEditorContext *m_textEditorContext;
}; };