// Created: 08/09/2000
// RCS-ID: $Id$
// Copyright: (c) 2000 Julian Smart, Vadim Zeitlin
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
//// Data
wxContextHelp* m_contextHelp;
+
+ DECLARE_NO_COPY_CLASS(wxContextHelpEvtHandler)
};
// ============================================================================
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)
{
// wxSetCursor(cursor);
#endif
+ m_status = FALSE;
+
win->PushEventHandler(new wxContextHelpEvtHandler(this));
+ //wxPushOrPopEventHandlers(this, win, TRUE);
win->CaptureMouse();
win->ReleaseMouse();
win->PopEventHandler(TRUE);
+ //wxPushOrPopEventHandlers(this, win, FALSE);
win->SetCursor(oldCursor);
{
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);
bool wxContextHelp::EventLoop()
{
m_inHelp = TRUE;
+
while ( m_inHelp )
{
if (wxTheApp->Pending())
wxTheApp->ProcessIdle();
}
}
+
return TRUE;
}
(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;
}
{
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).
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
{
}
{
}
+// removes the association
+void wxHelpProvider::RemoveHelp(wxWindowBase* WXUNUSED(window))
+{
+}
+
wxHelpProvider::~wxHelpProvider()
{
}
void wxSimpleHelpProvider::AddHelp(wxWindowBase *window, const wxString& text)
{
+ m_hashWindows.Delete((long)window);
m_hashWindows.Put((long)window, text);
}
void wxSimpleHelpProvider::AddHelp(wxWindowID id, const wxString& text)
{
+ m_hashIds.Delete((long)id);
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