]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/helpbase.cpp
Rewrote wxToolBar another time.
[wxWidgets.git] / src / common / helpbase.cpp
index 8696ad47aa0529ab0e2efc17f3f05d4ec7a1d263..e8f7722899c114ea71eab2eddb378666a57786ce 100644 (file)
 #include "wx/defs.h"
 #endif
 
-#include "wx/helpbase.h"
-#include "wx/app.h"
-
 #if wxUSE_HELP
 
-IMPLEMENT_CLASS(wxHelpControllerBase, wxObject)
-
-/*
- * Invokes context-sensitive help
- */
-
-// This class exists in order to eat events until the left mouse
-// button is pressed
-class wxContextHelpEvtHandler: public wxEvtHandler
-{
-public:
-    wxContextHelpEvtHandler(wxContextHelp* contextHelp)
-    {
-        m_contextHelp = contextHelp;
-    }
-
-    virtual bool ProcessEvent(wxEvent& event);
-
-//// Data
-    wxContextHelp* m_contextHelp;
-};
-
-IMPLEMENT_DYNAMIC_CLASS(wxContextHelp, wxObject)
-
-wxContextHelp::wxContextHelp(wxWindow* win, bool beginHelp)
-{
-    m_inHelp = FALSE;
-
-    if (beginHelp)
-        BeginContextHelp(win);
-}
-
-wxContextHelp::~wxContextHelp()
-{
-    if (m_inHelp)
-        EndContextHelp();
-}
-
-// Begin 'context help mode'
-bool wxContextHelp::BeginContextHelp(wxWindow* win)
-{
-    if (!win)
-        win = wxTheApp->GetTopWindow();
-    if (!win)
-        return FALSE;
-
-    wxCursor cursor(wxCURSOR_QUESTION_ARROW);
-    wxCursor oldCursor = win->GetCursor();
-    win->SetCursor(cursor);
-    wxSetCursor(cursor);
-
-    win->PushEventHandler(new wxContextHelpEvtHandler(this));
-
-    win->CaptureMouse();
-
-    EventLoop();
-
-    win->ReleaseMouse();
-
-    win->PopEventHandler(TRUE);
-
-    win->SetCursor(oldCursor);
-
-    if (m_status)
-    {
-        wxPoint pt;
-        wxWindow* winAtPtr = wxFindWindowAtPointer(pt);
-        if (winAtPtr)
-            DispatchEvent(winAtPtr, pt);
-    }
-
-    return TRUE;
-}
-
-bool wxContextHelp::EndContextHelp()
-{
-    m_inHelp = FALSE;
-
-    return TRUE;
-}
-
-bool wxContextHelp::EventLoop()
-{
-    m_inHelp = TRUE;
-    while ( m_inHelp )
-    {
-        if (wxTheApp->Pending())
-        {
-            wxTheApp->Dispatch();
-        }
-        else
-        {
-            wxTheApp->ProcessIdle();
-        }
-    }
-    return TRUE;
-}
-
-bool wxContextHelpEvtHandler::ProcessEvent(wxEvent& event)
-{
-    switch (event.GetEventType())
-    {
-        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;
-        }
-    }
-
-    return TRUE;
-}
+#include "wx/helpbase.h"
 
-// Dispatch the help event to the relevant window
-bool wxContextHelp::DispatchEvent(wxWindow* win, const wxPoint& pt)
-{
-    wxWindow* subjectOfHelp = win;
-    bool eventProcessed = FALSE;
-    while (subjectOfHelp && !eventProcessed)
-    {
-        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.
-        subjectOfHelp = subjectOfHelp->GetParent();
-    }
-    return eventProcessed;
-}
+IMPLEMENT_CLASS(wxHelpControllerBase, wxObject)
 
 #endif // wxUSE_HELP