diff --git a/include/wx/qt/tooltip.h b/include/wx/qt/tooltip.h index 1f52f5b3b9..12b3d35ea0 100644 --- a/include/wx/qt/tooltip.h +++ b/include/wx/qt/tooltip.h @@ -10,7 +10,8 @@ #include "wx/object.h" -class wxWindow; +class WXDLLIMPEXP_FWD_CORE wxWindow; + class WXDLLIMPEXP_CORE wxToolTip : public wxObject { public: diff --git a/include/wx/qt/window.h b/include/wx/qt/window.h index 90065c928e..a2f1542a27 100644 --- a/include/wx/qt/window.h +++ b/include/wx/qt/window.h @@ -173,6 +173,11 @@ public: virtual QScrollArea *QtGetScrollBarsContainer() const; +#if wxUSE_TOOLTIPS + // applies tooltip to the widget. + virtual void QtApplyToolTip(const wxString& text); +#endif // wxUSE_TOOLTIPS + protected: virtual void DoGetTextExtent(const wxString& string, int *x, int *y, diff --git a/src/qt/tooltip.cpp b/src/qt/tooltip.cpp index f78b44f978..38a37a6a61 100644 --- a/src/qt/tooltip.cpp +++ b/src/qt/tooltip.cpp @@ -43,12 +43,16 @@ wxToolTip::wxToolTip(const wxString &tip) { - SetTip( tip ); + m_window = NULL; + SetTip(tip); } void wxToolTip::SetTip(const wxString& tip) { m_text = tip; + + if ( m_window ) + m_window->QtApplyToolTip(m_text); } const wxString &wxToolTip::GetTip() const @@ -59,6 +63,7 @@ const wxString &wxToolTip::GetTip() const void wxToolTip::SetWindow(wxWindow *win) { + wxCHECK_RET(win != NULL, "window should not be NULL"); m_window = win; - wxMISSING_FUNCTION(); + m_window->QtApplyToolTip(m_text); } diff --git a/src/qt/window.cpp b/src/qt/window.cpp index 050cb37a8d..88e1b4b1e0 100644 --- a/src/qt/window.cpp +++ b/src/qt/window.cpp @@ -951,14 +951,22 @@ void wxWindowQt::DoMoveWindow(int x, int y, int width, int height) #if wxUSE_TOOLTIPS +void wxWindowQt::QtApplyToolTip(const wxString& text) +{ + GetHandle()->setToolTip(wxQtConvertString(text)); +} + void wxWindowQt::DoSetToolTip( wxToolTip *tip ) { + if ( m_tooltip == tip ) + return; + wxWindowBase::DoSetToolTip( tip ); - if ( tip != NULL ) - GetHandle()->setToolTip( wxQtConvertString( tip->GetTip() )); + if ( m_tooltip ) + m_tooltip->SetWindow(this); else - GetHandle()->setToolTip( QString() ); + QtApplyToolTip(wxString()); } #endif // wxUSE_TOOLTIPS