#include #include #include #include #include #include #include #include #include #include namespace { class Painted : public Wt::WPaintedWidget { int myI; int x; public: Painted( int i, Wt::WContainerWidget* parent = 0 ) : Wt::WPaintedWidget( parent ) , myI( i ) , x( 0 ) { mouseWentUp().connect( SLOT( this, Painted::MouseWentUp ) ); mouseWentDown().connect( SLOT( this, Painted::MouseWentDown ) ); mouseMoved().connect( SLOT( this, Painted::MouseMoved ) ); } virtual void paintEvent( Wt::WPaintDevice* paintDevice ) { Wt::WPainter painter( paintDevice ); painter.drawText( painter.window(), Wt::AlignCenter | Wt::AlignMiddle, boost::lexical_cast< std::string >( myI + x++ ) ); painter.restore(); } void MouseWentDown( const Wt::WMouseEvent& e ) { } void MouseMoved( const Wt::WMouseEvent& e ) { } void MouseWentUp( const Wt::WMouseEvent& e ) { update(); } }; class TestToolTip : public Wt::WApplication { public: TestToolTip( const Wt::WEnvironment& env ) : Wt::WApplication( env ) { setCssTheme( "polished" ); root()->setAttributeValue( "oncontextmenu", "event.cancelBubble = true; event.returnValue = false; return false;" ); root()->mouseWentUp().connect( SLOT( this, TestToolTip::MouseWentUp ) ); root()->mouseWentDown().connect( SLOT( this, TestToolTip::MouseWentDown ) ); root()->mouseMoved().connect( SLOT( this, TestToolTip::MouseMoved ) ); for( int i = 0; i < 20; ++i ) { auto x = new Painted( i, root() ); x->resize( 100, 20 ); x->setToolTip( GetTooltipText(), Wt::XHTMLText); x->doubleClicked().connect( SLOT( this, TestToolTip::DoubleClicked ) ); new Wt::WBreak( root() ); } } void MouseWentDown( const Wt::WMouseEvent& e ) { } void MouseMoved( const Wt::WMouseEvent& e ) { } void MouseWentUp( const Wt::WMouseEvent& e ) { } void DoubleClicked( const Wt::WMouseEvent& e ) { Wt::WPopupMenu* popup = new Wt::WPopupMenu; for( int i = 0; i < 20; ++i ) popup->addItem( boost::lexical_cast< std::string >( i ) + " test" ); popup->popup( e ); } std::string GetTooltipText() { return "Title of tooltip" "
" "
" "Some text text text text text text text text text text text text text text text
" ; } }; }