]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/cshelp.cpp
otherwise all runloop dependent callbacks cannot work outside of the main thread
[wxWidgets.git] / src / common / cshelp.cpp
index 17b26dae3616a4b217f2a93eee3996e1a2b6e854..a7da4a1cf5b9f07053cc1ffdfe2e7bdbd71619de 100644 (file)
@@ -13,7 +13,7 @@
 // declarations
 // ============================================================================
 
 // declarations
 // ============================================================================
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "cshelp.h"
 #endif
 
     #pragma implementation "cshelp.h"
 #endif
 
@@ -91,21 +91,21 @@ wxContextHelp::~wxContextHelp()
 
 // Not currently needed, but on some systems capture may not work as
 // expected so we'll leave it here for now.
 
 // Not currently needed, but on some systems capture may not work as
 // expected so we'll leave it here for now.
-#if 0
+#ifdef __WXMOTIF__
 static void wxPushOrPopEventHandlers(wxContextHelp* help, wxWindow* win, bool push)
 {
     if (push)
         win->PushEventHandler(new wxContextHelpEvtHandler(help));
     else
 static void wxPushOrPopEventHandlers(wxContextHelp* help, wxWindow* win, bool push)
 {
     if (push)
         win->PushEventHandler(new wxContextHelpEvtHandler(help));
     else
-        win->PopEventHandler();
+        win->PopEventHandler(TRUE);
 
 
-    wxNode* node = win->GetChildren().First();
+    wxWindowList::compatibility_iterator node = win->GetChildren().GetFirst();
     while (node)
     {
     while (node)
     {
-        wxWindow* child = (wxWindow*) node->Data();
+        wxWindow* child = node->GetData();
         wxPushOrPopEventHandlers(help, child, push);
 
         wxPushOrPopEventHandlers(help, child, push);
 
-        node = node->Next();
+        node = node->GetNext();
     }
 }
 #endif
     }
 }
 #endif
@@ -128,8 +128,11 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win)
 
     m_status = FALSE;
 
 
     m_status = FALSE;
 
+#ifdef __WXMOTIF__
+    wxPushOrPopEventHandlers(this, win, TRUE);
+#else
     win->PushEventHandler(new wxContextHelpEvtHandler(this));
     win->PushEventHandler(new wxContextHelpEvtHandler(this));
-    //wxPushOrPopEventHandlers(this, win, TRUE);
+#endif
 
     win->CaptureMouse();
 
 
     win->CaptureMouse();
 
@@ -137,8 +140,11 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win)
 
     win->ReleaseMouse();
 
 
     win->ReleaseMouse();
 
+#ifdef __WXMOTIF__
+    wxPushOrPopEventHandlers(this, win, FALSE);
+#else
     win->PopEventHandler(TRUE);
     win->PopEventHandler(TRUE);
-    //wxPushOrPopEventHandlers(this, win, FALSE);
+#endif
 
     win->SetCursor(oldCursor);
 
 
     win->SetCursor(oldCursor);
 
@@ -146,14 +152,14 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win)
     {
         wxPoint pt;
         wxWindow* winAtPtr = wxFindWindowAtPointer(pt);
     {
         wxPoint pt;
         wxWindow* winAtPtr = wxFindWindowAtPointer(pt);
-    /*
+
+#if 0
         if (winAtPtr)
         {
         if (winAtPtr)
         {
-    wxString msg;
-        msg.Printf("Picked %s (%d)", (const char*) winAtPtr->GetName(), winAtPtr->GetId());
-        cout << msg << '\n';
+            printf("Picked %s (%d)\n", winAtPtr->GetName().c_str(),
+                   winAtPtr->GetId());
         }
         }
-    */
+#endif
 
         if (winAtPtr)
             DispatchEvent(winAtPtr, pt);
 
         if (winAtPtr)
             DispatchEvent(winAtPtr, pt);