Plumb Widget ownership up higher.
This commit is contained in:
@ -390,11 +390,10 @@ FltkPlatform::FltkResourceFactory::createLabelButtonResource (const char
|
|||||||
}
|
}
|
||||||
|
|
||||||
core::ui::ComplexButtonResource *
|
core::ui::ComplexButtonResource *
|
||||||
FltkPlatform::FltkResourceFactory::createComplexButtonResource (core::Widget
|
FltkPlatform::FltkResourceFactory::createComplexButtonResource (std::unique_ptr< core::Widget > widget,
|
||||||
*widget,
|
|
||||||
bool relief)
|
bool relief)
|
||||||
{
|
{
|
||||||
return new ui::FltkComplexButtonResource (platform, widget, relief);
|
return new ui::FltkComplexButtonResource (platform, std::move( widget ), relief);
|
||||||
}
|
}
|
||||||
|
|
||||||
core::ui::ListResource *
|
core::ui::ListResource *
|
||||||
|
|||||||
@ -104,7 +104,7 @@ private:
|
|||||||
core::ui::LabelButtonResource *createLabelButtonResource (const char
|
core::ui::LabelButtonResource *createLabelButtonResource (const char
|
||||||
*label);
|
*label);
|
||||||
core::ui::ComplexButtonResource *
|
core::ui::ComplexButtonResource *
|
||||||
createComplexButtonResource (core::Widget *widget, bool relief);
|
createComplexButtonResource (std::unique_ptr< core::Widget > widget, bool relief);
|
||||||
core::ui::ListResource *
|
core::ui::ListResource *
|
||||||
createListResource (core::ui::ListResource::SelectionMode selectionMode,
|
createListResource (core::ui::ListResource::SelectionMode selectionMode,
|
||||||
int rows);
|
int rows);
|
||||||
|
|||||||
@ -726,16 +726,14 @@ void FltkLabelButtonResource::setLabel (const char *label)
|
|||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
FltkComplexButtonResource::FltkComplexButtonResource (FltkPlatform *platform,
|
FltkComplexButtonResource::FltkComplexButtonResource (FltkPlatform *platform,
|
||||||
dw::core::Widget
|
std::unique_ptr< dw::core::Widget > widget,
|
||||||
*widget, bool relief):
|
bool relief):
|
||||||
FltkSpecificResource <dw::core::ui::ComplexButtonResource> (platform)
|
FltkSpecificResource <dw::core::ui::ComplexButtonResource> (platform)
|
||||||
{
|
{
|
||||||
flatView = topView = NULL;
|
flatView = topView = NULL;
|
||||||
this->relief = relief;
|
this->relief = relief;
|
||||||
FltkResource::init (platform);
|
FltkResource::init (platform);
|
||||||
std::unique_ptr< dw::core::Widget > widget_unique;
|
ComplexButtonResource::init (std::move( widget ));
|
||||||
widget_unique.reset( widget );
|
|
||||||
ComplexButtonResource::init (std::move( widget_unique ));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FltkComplexButtonResource::~FltkComplexButtonResource ()
|
FltkComplexButtonResource::~FltkComplexButtonResource ()
|
||||||
|
|||||||
@ -284,7 +284,7 @@ protected:
|
|||||||
Fl_Widget *createNewWidget (core::Allocation *allocation);
|
Fl_Widget *createNewWidget (core::Allocation *allocation);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FltkComplexButtonResource (FltkPlatform *platform, dw::core::Widget *widget,
|
FltkComplexButtonResource (FltkPlatform *platform, std::unique_ptr< dw::core::Widget > widget,
|
||||||
bool relief);
|
bool relief);
|
||||||
~FltkComplexButtonResource ();
|
~FltkComplexButtonResource ();
|
||||||
};
|
};
|
||||||
|
|||||||
2
dw/ui.hh
2
dw/ui.hh
@ -582,7 +582,7 @@ class ResourceFactory: public lout::object::Object
|
|||||||
public:
|
public:
|
||||||
virtual LabelButtonResource *createLabelButtonResource (const char *label)
|
virtual LabelButtonResource *createLabelButtonResource (const char *label)
|
||||||
= 0;
|
= 0;
|
||||||
virtual ComplexButtonResource *createComplexButtonResource (Widget *widget,
|
virtual ComplexButtonResource *createComplexButtonResource (std::unique_ptr< Widget > widget,
|
||||||
bool relief)
|
bool relief)
|
||||||
= 0;
|
= 0;
|
||||||
virtual ListResource *createListResource (ListResource::SelectionMode
|
virtual ListResource *createListResource (ListResource::SelectionMode
|
||||||
|
|||||||
@ -960,10 +960,12 @@ void Html_tag_open_button(DilloHtml *html, const char *tag, int tagsize)
|
|||||||
* but it caused 100% CPU usage.
|
* but it caused 100% CPU usage.
|
||||||
*/
|
*/
|
||||||
page = new Textblock (false, true);
|
page = new Textblock (false, true);
|
||||||
|
std::unique_ptr< Widget > page_unique;
|
||||||
|
page_unique.reset( page );
|
||||||
page->setStyle (html->backgroundStyle ());
|
page->setStyle (html->backgroundStyle ());
|
||||||
|
|
||||||
ResourceFactory *factory = HT2LT(html)->getResourceFactory();
|
ResourceFactory *factory = HT2LT(html)->getResourceFactory();
|
||||||
Resource *resource = factory->createComplexButtonResource(page, true);
|
Resource *resource = factory->createComplexButtonResource(std::move( page_unique ), true);
|
||||||
embed = new Embed(resource);
|
embed = new Embed(resource);
|
||||||
// a_Dw_button_set_sensitive (DW_BUTTON (button), FALSE);
|
// a_Dw_button_set_sensitive (DW_BUTTON (button), FALSE);
|
||||||
|
|
||||||
@ -2043,10 +2045,12 @@ static Embed *Html_input_image(DilloHtml *html, const char *tag, int tagsize)
|
|||||||
// widget. Notice that the order of the casts matters, because
|
// widget. Notice that the order of the casts matters, because
|
||||||
// of multiple inheritance.
|
// of multiple inheritance.
|
||||||
dw::Image *dwi = (dw::Image*)(dw::core::ImgRenderer*)Image->img_rndr;
|
dw::Image *dwi = (dw::Image*)(dw::core::ImgRenderer*)Image->img_rndr;
|
||||||
|
std::unique_ptr< dw::core::Widget > dwi_unique;
|
||||||
|
dwi_unique.reset( dwi );
|
||||||
dwi->setStyle (html->backgroundStyle ());
|
dwi->setStyle (html->backgroundStyle ());
|
||||||
ResourceFactory *factory = HT2LT(html)->getResourceFactory();
|
ResourceFactory *factory = HT2LT(html)->getResourceFactory();
|
||||||
ComplexButtonResource *complex_b_r =
|
ComplexButtonResource *complex_b_r =
|
||||||
factory->createComplexButtonResource(dwi, false);
|
factory->createComplexButtonResource(std::move( dwi_unique ), false);
|
||||||
button = new Embed(complex_b_r);
|
button = new Embed(complex_b_r);
|
||||||
HT2TB(html)->addWidget (button, html->style ());
|
HT2TB(html)->addWidget (button, html->style ());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user