]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/window.cpp
compilation fix for newer wxGTK
[wxWidgets.git] / src / motif / window.cpp
index 59022eb1cc2fd7168d321089838f4d47f40f1d1f..620a925f4e36f1329a1665c38f65c860ffa2e9b4 100644 (file)
@@ -1584,8 +1584,30 @@ bool wxWindow::Validate()
 // Get the window with the focus
 wxWindow *wxWindow::FindFocus()
 {
-    // TODO
-    return NULL;
+    // TODO Problems:
+    // (1) Can there be multiple focussed widgets in an application?
+    // In which case we need to find the top-level window that's
+    // currently active.
+    // (2) The widget with the focus may not be in the widget table
+    // depending on which widgets I put in the table
+
+    wxNode *node = wxTopLevelWindows.First();
+    while (node)
+    {
+        wxWindow *win = (wxWindow *)node->Data();
+
+        Widget w = XmGetFocusWidget ((Widget) win->GetTopWidget()) ;
+
+        if (w != (Widget) NULL)
+        {
+            wxWindow* focusWin = wxGetWindowFromTable(w);
+            if (focusWin)
+                return focusWin;
+        }
+
+        node = node->Next();
+    }
+    return (wxWindow*) NULL;
 }
 
 void wxWindow::AddChild(wxWindow *child)
@@ -2139,7 +2161,7 @@ void wxWindow::SetValidator(const wxValidator& validator)
 {
     if ( m_windowValidator )
         delete m_windowValidator;
-    m_windowValidator = validator.Clone();
+    m_windowValidator = (wxValidator*) validator.Clone();
     
     if ( m_windowValidator )
         m_windowValidator->SetWindow(this) ;