bool wxContextHelpEvtHandler::ProcessEvent(wxEvent& event)
{
- switch (event.GetEventType())
+ if (event.GetEventType() == wxEVT_LEFT_DOWN)
{
- case wxEVT_LEFT_DOWN:
- {
- //wxMouseEvent& mouseEvent = (wxMouseEvent&) event;
- m_contextHelp->SetStatus(TRUE);
- m_contextHelp->EndContextHelp();
- return TRUE;
- break;
- }
- case wxEVT_CHAR:
- case wxEVT_KEY_DOWN:
- case wxEVT_ACTIVATE:
- case wxEVT_MOUSE_CAPTURE_CHANGED:
- {
- m_contextHelp->SetStatus(FALSE);
- m_contextHelp->EndContextHelp();
- return TRUE;
- break;
- }
- case wxEVT_PAINT:
- case wxEVT_ERASE_BACKGROUND:
- {
- event.Skip();
- return FALSE;
- break;
- }
+ m_contextHelp->SetStatus(TRUE);
+ m_contextHelp->EndContextHelp();
+ return TRUE;
+ }
+
+ if ((event.GetEventType() == wxEVT_CHAR) ||
+ (event.GetEventType() == wxEVT_KEY_DOWN) ||
+ (event.GetEventType() == wxEVT_ACTIVATE) ||
+ (event.GetEventType() == wxEVT_MOUSE_CAPTURE_CHANGED))
+ {
+ m_contextHelp->SetStatus(FALSE);
+ m_contextHelp->EndContextHelp();
+ return TRUE;
+ }
+
+ if ((event.GetEventType() == wxEVT_PAINT) ||
+ (event.GetEventType() == wxEVT_ERASE_BACKGROUND))
+ {
+ event.Skip();
+ return FALSE;
}
return TRUE;
wxHelpEvent helpEvent(wxEVT_HELP, subjectOfHelp->GetId(), pt) ;
helpEvent.SetEventObject(this);
eventProcessed = win->GetEventHandler()->ProcessEvent(helpEvent);
-
+
// Go up the window hierarchy until the event is handled (or not).
// I.e. keep submitting ancestor windows until one is recognised
// by the app code that processes the ids and displays help.
{
}
-void wxContextHelpButton::OnContextHelp(wxCommandEvent& event)
+void wxContextHelpButton::OnContextHelp(wxCommandEvent& WXUNUSED(event))
{
wxContextHelp contextHelp(GetParent());
}
bool wxSimpleHelpProvider::ShowHelp(wxWindowBase *window)
{
+#if wxUSE_TIPWINDOW
+ static wxTipWindow* s_tipWindow = NULL;
+
+ if (s_tipWindow)
+ {
+ // Prevent s_tipWindow being nulled in OnIdle,
+ // thereby removing the chance for the window to be closed by ShowHelp
+ s_tipWindow->SetTipWindowPtr(NULL);
+ s_tipWindow->Close();
+ }
+ s_tipWindow = NULL;
+
wxString text = GetHelp(window);
if ( !text.empty() )
{
- new wxTipWindow((wxWindow *)window, text);
+ s_tipWindow = new wxTipWindow((wxWindow *)window, text, 100, & s_tipWindow);
return TRUE;
}
+#endif // wxUSE_TIPWINDOW
return FALSE;
}