]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/window.cpp
Don't complain under MicroWindows if a wxDC's HDC is NULL - it happens
[wxWidgets.git] / src / motif / window.cpp
index 53a0dd26e3c385204efd2a9ef3dc86befa2b6b06..ba7350acb3729372804f170208a9e5c44d147232 100644 (file)
@@ -2099,22 +2099,21 @@ static void wxCanvasInputEvent(Widget drawingArea,
                     {
                         // I have a dclick
                         canvas->SetLastClick(0, ts);
-                        switch ( eventType )
+
+                        wxEventType typeDouble;
+                        if ( eventType == wxEVT_LEFT_DOWN )
+                            typeDouble = wxEVT_LEFT_DCLICK;
+                        else if ( eventType == wxEVT_MIDDLE_DOWN )
+                            typeDouble = wxEVT_MIDDLE_DCLICK;
+                        else if ( eventType == wxEVT_RIGHT_DOWN )
+                            typeDouble = wxEVT_RIGHT_DCLICK;
+                        else
+                            typeDouble = wxEVT_NULL;
+
+                        if ( typeDouble != wxEVT_NULL )
                         {
-                        case wxEVT_LEFT_DOWN:
-                            wxevent.SetEventType(wxEVT_LEFT_DCLICK);
-                            break;
-                        case wxEVT_MIDDLE_DOWN:
-                            wxevent.SetEventType(wxEVT_MIDDLE_DCLICK);
-                            break;
-                        case wxEVT_RIGHT_DOWN:
-                            wxevent.SetEventType(wxEVT_RIGHT_DCLICK);
-                            break;
-
-                        default :
-                            break;
+                            wxevent.SetEventType(typeDouble);
                         }
-
                     }
                     else
                     {
@@ -2656,22 +2655,12 @@ bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Widget widget,
                 {
                     // I have a dclick
                     win->SetLastClick(0, ts);
-                    switch ( eventType )
-                    {
-                        case wxEVT_LEFT_DOWN:
-                            eventType = wxEVT_LEFT_DCLICK;
-                            break;
-                        case wxEVT_MIDDLE_DOWN:
-                            eventType = wxEVT_MIDDLE_DCLICK;
-                            break;
-                        case wxEVT_RIGHT_DOWN:
-                            eventType = wxEVT_RIGHT_DCLICK;
-                            break;
-
-                        default :
-                            break;
-                    }
-                    
+                    if ( eventType == wxEVT_LEFT_DOWN )
+                        eventType = wxEVT_LEFT_DCLICK;
+                    else if ( eventType == wxEVT_MIDDLE_DOWN )
+                        eventType = wxEVT_MIDDLE_DCLICK;
+                    else if ( eventType == wxEVT_RIGHT_DOWN )
+                        eventType = wxEVT_RIGHT_DCLICK;
                 }
                 else
                 {
@@ -2984,7 +2973,7 @@ void wxWindow::ChangeFont(bool keepOriginalSize)
 wxWindow *wxGetActiveWindow()
 {
     // TODO
-    wxFAIL_MSG(_("Not implemented"));
+    wxFAIL_MSG("Not implemented");
     return NULL;
 }
 
@@ -2992,15 +2981,24 @@ wxWindow *wxGetActiveWindow()
 // position.
 wxWindow* wxFindWindowAtPointer(wxPoint& pt)
 {
-    wxFAIL_MSG(_("Not implemented"));
-    return NULL;
+    return wxFindWindowAtPoint(wxGetMousePosition());
 }
 
 // Get the current mouse position.
 wxPoint wxGetMousePosition()
 {
-    wxFAIL_MSG(_("Not implemented"));
-    return wxPoint;
+    Display *display = (Display*) wxGetDisplay();
+    Window rootWindow = RootWindowOfScreen (DefaultScreenOfDisplay(display));
+    Window rootReturn, childReturn;
+    int rootX, rootY, winX, winY;
+    unsigned int maskReturn;
+
+    XQueryPointer (display,
+                  rootWindow,
+                  &rootReturn,
+                   &childReturn,
+                   &rootX, &rootY, &winX, &winY, &maskReturn);
+    return wxPoint(rootX, rootY);
 }
 
 // ----------------------------------------------------------------------------