]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/frame.cpp
//... => /* ... */
[wxWidgets.git] / src / motif / frame.cpp
index aa411fcb4260e0f0cee2148d779307bbc64064f0..a5272571d00aa641282412b915f2bb1db1ad9c9d 100644 (file)
@@ -65,12 +65,12 @@ static bool wxTopLevelUsed = FALSE;
 
 #if !USE_SHARED_LIBRARY
 BEGIN_EVENT_TABLE(wxFrame, wxWindow)
-EVT_SIZE(wxFrame::OnSize)
-EVT_ACTIVATE(wxFrame::OnActivate)
-EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight)
-EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
-EVT_IDLE(wxFrame::OnIdle)
-EVT_CLOSE(wxFrame::OnCloseWindow)
+  EVT_SIZE(wxFrame::OnSize)
+  EVT_ACTIVATE(wxFrame::OnActivate)
+  EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight)
+  EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
+  EVT_IDLE(wxFrame::OnIdle)
+  EVT_CLOSE(wxFrame::OnCloseWindow)
 END_EVENT_TABLE()
 
 IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
@@ -144,9 +144,31 @@ bool wxFrame::Create(wxWindow *parent,
 
     wxModelessWindows.Append(this);
 
-    int x = pos.x; int y = pos.y;
-    int width = size.x; int height = size.y;
-
+    int x = pos.x, y = pos.y;
+    int width = size.x, height = size.y;
+    
+    // Set reasonable values for position and size if defaults have
+    // been requested 
+    // 
+    // MB TODO: something better than these arbitrary values ?
+    //
+    if ( width == -1 ) width = 400;
+    if ( height = -1 ) height = 400;
+
+    int displayW, displayH;
+    wxDisplaySize( &displayW, &displayH );
+
+    if ( x == -1 )
+    {
+        x = (displayW - width) / 2;
+        if (x < 10) x = 10;
+    }
+    if ( y == -1 )
+    {
+        y = (displayH - height) / 2;
+        if (y < 10) y = 10;        
+    }
+        
     if (wxTopLevelUsed)
     {
         // Change suggested by Matthew Flatt
@@ -300,6 +322,8 @@ bool wxFrame::Create(wxWindow *parent,
 
 wxFrame::~wxFrame()
 {
+    m_isBeingDeleted = TRUE;
+    
     if (m_clientArea)
       XtRemoveEventHandler((Widget) m_clientArea, ExposureMask, FALSE,
           wxUniversalRepaintProc, (XtPointer) this);