]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/frame.cpp
Cured last focus bug (I hope); some wxMotif mods
[wxWidgets.git] / src / motif / frame.cpp
index 024c031119bdd08bcb27c906cdf73f9bf718683b..d024c6db916724d7f65fc6edfcf80aec869fcd3d 100644 (file)
@@ -44,6 +44,7 @@
 #include <Xm/AtomMgr.h>
 #include <Xm/LabelG.h>
 #include <Xm/Frame.h>
+#include <Xm/DrawingA.h>
 #if   XmVersion > 1000
 #include <Xm/Protocols.h>
 #endif
@@ -56,6 +57,10 @@ void wxFrameFocusProc(Widget workArea, XtPointer clientData,
 static void wxFrameMapProc(Widget frameShell, XtPointer clientData, 
                            XCrossingEvent * event);
 
+// From wxWindow
+extern void wxCanvasRepaintProc (Widget, XtPointer, XmDrawingAreaCallbackStruct * cbs);
+extern void wxCanvasInputEvent (Widget drawingArea, XtPointer data, XmDrawingAreaCallbackStruct * cbs);
+
 extern wxList wxModelessWindows;
 extern wxList wxPendingDelete;
 
@@ -190,11 +195,13 @@ bool wxFrame::Create(wxWindow *parent,
         //                    XmNresizePolicy, XmRESIZE_ANY,
         NULL);
     
+    XtAddCallback ((Widget) m_clientArea, XmNexposeCallback, (XtCallbackProc) wxCanvasRepaintProc, (XtPointer) this);
+    XtAddCallback ((Widget) m_clientArea, XmNinputCallback, (XtCallbackProc) wxCanvasInputEvent, (XtPointer) this);
+
     XtVaSetValues((Widget) m_frameWidget,
         XmNworkWindow, (Widget) m_workArea,
         NULL);
     
-    
     XtManageChild((Widget) m_clientArea);
     XtManageChild((Widget) m_workArea);
     
@@ -289,7 +296,10 @@ wxFrame::~wxFrame()
 {
     if (GetMainWidget())
         Show(FALSE);
-    
+
+    XtRemoveCallback ((Widget) m_clientArea, XmNexposeCallback, (XtCallbackProc) wxCanvasRepaintProc, (XtPointer) this);
+    XtRemoveCallback ((Widget) m_clientArea, XmNinputCallback, (XtCallbackProc) wxCanvasInputEvent, (XtPointer) this);
+
     if (m_frameMenuBar)
     {
         m_frameMenuBar->DestroyMenuBar();