diff --git a/dw/layout.cc b/dw/layout.cc index 7186212..3337bab 100644 --- a/dw/layout.cc +++ b/dw/layout.cc @@ -425,18 +425,16 @@ void Layout::removeWidget () updateCursor (); } -void Layout::setWidget (Widget *widget) +void Layout::setWidget (std::unique_ptr< Widget > widget) { - DBG_OBJ_ASSOC_CHILD (widget); + DBG_OBJ_ASSOC_CHILD (widget.get()); widgetAtPoint = NULL; if (topLevel) { topLevel.reset(); } textZone->zoneFree (); - std::unique_ptr< Widget > widget_unique; - widget_unique.reset( widget ); - addWidget (std::move( widget_unique )); + addWidget (std::move( widget )); updateCursor (); diff --git a/dw/layout.hh b/dw/layout.hh index a47ee2b..4f24c49 100644 --- a/dw/layout.hh +++ b/dw/layout.hh @@ -283,7 +283,7 @@ public: lout::misc::ZoneAllocator *textZone; void addWidget (std::unique_ptr< Widget > widget); - void setWidget (Widget *widget); + void setWidget (std::unique_ptr< Widget > widget); void attachView (View *view); void detachView (View *view); diff --git a/dw/ui.cc b/dw/ui.cc index 6bd2ad2..cba694d 100644 --- a/dw/ui.cc +++ b/dw/ui.cc @@ -348,7 +348,9 @@ void ComplexButtonResource::init (Widget *widget) layout = new Layout (createPlatform (), false); setLayout (layout); DBG_OBJ_ASSOC_CHILD (layout); - layout->setWidget (widget); + std::unique_ptr< Widget > widget_unique; + widget_unique.reset( widget ); + layout->setWidget (std::move( widget_unique )); layout->connect (&layoutReceiver); if (getEmbed ()) diff --git a/src/web.cc b/src/web.cc index 6fdb413..e3b5aea 100644 --- a/src/web.cc +++ b/src/web.cc @@ -85,7 +85,9 @@ int a_Web_dispatch_by_type (const char *Type, DilloWeb *Web, dw->setStyle (styleEngine.style (Web->bw)); /* This method frees the old dw if any */ - layout->setWidget(dw); + std::unique_ptr< Widget > dw_unique; + dw_unique.reset( dw ); + layout->setWidget(std::move( dw_unique )); /* Set the page title with the bare filename (e.g. for images), * HTML pages with a