Hey Aleksey,
2010/3/4 Aleksey Chirkin <[email protected]>:
> I noticed that LazyLoading in WMenu does not work.
> Content always loading as though PreLoading activated, but i make
> WMenuItems with LazyLoading option.
>
> Here is example:
(...)
> class Page2 : public WContainerWidget
> {
> public:
> Page2()
> {
> addWidget(new WText("this is page2"));
> std::cout << "Page2 is loaded" << std::endl;
> }
> };
>
(...)
> menu->addItem("page2", new Page2(), WMenuItem::LazyLoading);
Although page2 will not be inserted into the DOM, and therefore not
propagated to the browser, you are already creating the widget and
thus you will see "Page2 is loaded" printed.
If you want to see how it is being loaded just-in-time, you should
reimplement the Page2::load() method and print there (and call the
base implementation).
If you want to defer creation of the widget, you could use a utility
method similar to the following, which accepts a function that returns
a widget:
template <typename Function>
class DeferredWidget : public WContainerWidget
{
public:
DeferredWidget(Function f)
: f_(f) { }
private:
void load() {
WContainerWidget::load();
addWidget(f_());
}
Function f_;
};
template <typename Function>
DeferredWidget<Function> *deferCreate(Function f)
{
return new DeferredWidget<Function>(f);
}
You do it even simpler if creating the widget using the default
constructor is acceptible:
template <typename Widget>
class DeferredWidget : public WContainerWidget
{
public:
DeferredWidget() { }
private:
void load() {
WContainerWidget::load();
addWidget(new Widget());
}
};
menu->addItem("page2", new DeferredWidget<Page2>(), WMenuItem::LazyLoading);
Regards,
koen
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
witty-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/witty-interest