X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/33ac7e6f01acbac1cff0ad400d8ea7f0bfd0a62f..217c78b80b34f31b4341d6257e28077255d6eb93:/src/common/cshelp.cpp diff --git a/src/common/cshelp.cpp b/src/common/cshelp.cpp index cb9a8d895f..4d173898bc 100644 --- a/src/common/cshelp.cpp +++ b/src/common/cshelp.cpp @@ -6,7 +6,7 @@ // Created: 08/09/2000 // RCS-ID: $Id$ // Copyright: (c) 2000 Julian Smart, Vadim Zeitlin -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -87,6 +87,27 @@ wxContextHelp::~wxContextHelp() EndContextHelp(); } +// Not currently needed, but on some systems capture may not work as +// expected so we'll leave it here for now. +#if 0 +static void wxPushOrPopEventHandlers(wxContextHelp* help, wxWindow* win, bool push) +{ + if (push) + win->PushEventHandler(new wxContextHelpEvtHandler(help)); + else + win->PopEventHandler(); + + wxNode* node = win->GetChildren().First(); + while (node) + { + wxWindow* child = (wxWindow*) node->Data(); + wxPushOrPopEventHandlers(help, child, push); + + node = node->Next(); + } +} +#endif + // Begin 'context help mode' bool wxContextHelp::BeginContextHelp(wxWindow* win) { @@ -103,7 +124,10 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win) // wxSetCursor(cursor); #endif + m_status = FALSE; + win->PushEventHandler(new wxContextHelpEvtHandler(this)); + //wxPushOrPopEventHandlers(this, win, TRUE); win->CaptureMouse(); @@ -112,6 +136,7 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win) win->ReleaseMouse(); win->PopEventHandler(TRUE); + //wxPushOrPopEventHandlers(this, win, FALSE); win->SetCursor(oldCursor); @@ -119,14 +144,14 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win) { wxPoint pt; wxWindow* winAtPtr = wxFindWindowAtPointer(pt); - /* + /* if (winAtPtr) { - wxString msg; + wxString msg; msg.Printf("Picked %s (%d)", (const char*) winAtPtr->GetName(), winAtPtr->GetId()); cout << msg << '\n'; } - */ + */ if (winAtPtr) DispatchEvent(winAtPtr, pt); @@ -145,6 +170,7 @@ bool wxContextHelp::EndContextHelp() bool wxContextHelp::EventLoop() { m_inHelp = TRUE; + while ( m_inHelp ) { if (wxTheApp->Pending()) @@ -156,6 +182,7 @@ bool wxContextHelp::EventLoop() wxTheApp->ProcessIdle(); } } + return TRUE; } @@ -173,7 +200,8 @@ bool wxContextHelpEvtHandler::ProcessEvent(wxEvent& event) (event.GetEventType() == wxEVT_ACTIVATE) || (event.GetEventType() == wxEVT_MOUSE_CAPTURE_CHANGED)) { - m_contextHelp->SetStatus(FALSE); + // May have already been set to TRUE by a left-click + //m_contextHelp->SetStatus(FALSE); m_contextHelp->EndContextHelp(); return TRUE; } @@ -197,6 +225,7 @@ bool wxContextHelp::DispatchEvent(wxWindow* win, const wxPoint& pt) { 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). @@ -218,7 +247,7 @@ bool wxContextHelp::DispatchEvent(wxWindow* win, const wxPoint& pt) */ #if !defined(__WXMSW__) -static char * csquery_xpm[] = { +static const char * csquery_xpm[] = { "12 11 2 1", " c None", ". c #000000", @@ -246,8 +275,15 @@ wxContextHelpButton::wxContextHelpButton(wxWindow* parent, const wxPoint& pos, const wxSize& size, long style) +#if defined(__WXPM__) + : wxBitmapButton(parent, id, wxBitmap(wxCSQUERY_BITMAP + ,wxBITMAP_TYPE_RESOURCE + ), + pos, size, style) +#else : wxBitmapButton(parent, id, wxBITMAP(csquery), pos, size, style) +#endif { } @@ -275,6 +311,11 @@ void wxHelpProvider::AddHelp(wxWindowID WXUNUSED(id), { } +// removes the association +void wxHelpProvider::RemoveHelp(wxWindowBase* WXUNUSED(window)) +{ +} + wxHelpProvider::~wxHelpProvider() { } @@ -303,8 +344,15 @@ void wxSimpleHelpProvider::AddHelp(wxWindowID id, const wxString& text) m_hashIds.Put(id, text); } +// removes the association +void wxSimpleHelpProvider::RemoveHelp(wxWindowBase* window) +{ + m_hashWindows.Delete((long)window); +} + bool wxSimpleHelpProvider::ShowHelp(wxWindowBase *window) { +#if wxUSE_TIPWINDOW static wxTipWindow* s_tipWindow = NULL; if (s_tipWindow) @@ -323,6 +371,7 @@ bool wxSimpleHelpProvider::ShowHelp(wxWindowBase *window) return TRUE; } +#endif // wxUSE_TIPWINDOW return FALSE; }