Bug #7669 » 0002-Fix-WPopupWidget-use-in-autocomplete-example.patch
examples/widgetgallery/examples/AutoComplete.cpp | ||
---|---|---|
contactOptions.appendReplacedText = ", ";
|
||
Wt::WSuggestionPopup *sp =
|
||
container->addNew<Wt::WSuggestionPopup>(
|
||
container->addChildNew<Wt::WSuggestionPopup>(
|
||
Wt::WSuggestionPopup::generateMatcherJS(contactOptions),
|
||
Wt::WSuggestionPopup::generateReplacerJS(contactOptions));
|
||
src/Wt/WContainerWidget.h | ||
---|---|---|
template <typename Widget, typename ...Args>
|
||
Widget *addNew( Args&& ...args )
|
||
{
|
||
static_assert(!std::is_convertible<Widget*, WPopupWidget*>::value,
|
||
"Cannot use addNew() for types derived from WPopupWidget. "
|
||
"Did you mean to use addChildNew()?");
|
||
std::unique_ptr<Widget> w{new Widget(std::forward<Args>(args)...)};
|
||
Widget *result = w.get();
|
||
addWidget(std::unique_ptr<WWidget>{std::move(w)});
|
src/Wt/WObject.h | ||
---|---|---|
return result;
|
||
}
|
||
/*! \brief Create a child WObject and add it, returning a raw pointer.
|
||
*
|
||
* This is implemented as:
|
||
*
|
||
* \code
|
||
* std::unique_ptr<Child> child{new Child(std::forward<Args>(args)...)};
|
||
* Child *result = child.get();
|
||
* addChild(std::unique_ptr<WObject>(std::move(child)));
|
||
* return result;
|
||
* \endcode
|
||
*
|
||
* This is a useful shorthand for adding a new child object, and
|
||
* getting a reference to it, e.g.:
|
||
*
|
||
* \code
|
||
* Wt::WMessageBox *mb = addChildNew<Wt::WMessageBox>("Status", "All is well...", Wt::Icon::Information, Wt::StandardButton::Ok);
|
||
* \endcode
|
||
*/
|
||
template <typename Child, typename ...Args>
|
||
Child *addChildNew( Args&& ...args )
|
||
{
|
||
std::unique_ptr<Child> child{new Child(std::forward<Args>(args)...)};
|
||
Child *result = child.get();
|
||
addChild(std::unique_ptr<WObject>(std::move(child)));
|
||
return result;
|
||
}
|
||
/*! \brief Remove a child WObject, so its lifetime is no longer determined by this WObject
|
||
*/
|
||
std::unique_ptr<WObject> removeChild(WObject *child);
|