Thank you for the detailed explanation. I realized my mistake and now I know how to solve my problem.
I would like to ask whether there is an opportunity to use WMenu without WStackedWidget? Or use WStackedWidget as simple WContainerWidget. In terms of dynamic content, use of the stack is not always justified, in our case, we will win more of the content update, rather than from the cache. Is there a way to disable caching in WMenu? Regards, Aleksey 2010/3/4 Koen Deforche <[email protected]>: > 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 > ------------------------------------------------------------------------------ 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
