From 6807396fdfd3c9ada578be23941dbd6047033fc5 Mon Sep 17 00:00:00 2001 From: Michael Wetherell Date: Mon, 1 Aug 2005 16:38:35 +0000 Subject: [PATCH] Set default size and position for top level windows git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35049 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mgl/toplevel.cpp | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/mgl/toplevel.cpp b/src/mgl/toplevel.cpp index e75baca885..8252c3cd9a 100644 --- a/src/mgl/toplevel.cpp +++ b/src/mgl/toplevel.cpp @@ -62,7 +62,7 @@ void wxTopLevelWindowMGL::Init() bool wxTopLevelWindowMGL::Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos, + const wxPoint& posOrig, const wxSize& sizeOrig, long style, const wxString &name) @@ -72,14 +72,34 @@ bool wxTopLevelWindowMGL::Create(wxWindow *parent, wxSize size = sizeOrig; if ( size.x == -1 || size.y == -1 ) { - wxSize sizeDpy = wxGetDisplaySize(); + wxSize sizeDefault = GetDefaultSize(); if ( size.x == -1 ) - size.x = sizeDpy.x / 3; + size.x = sizeDefault.x; if ( size.y == -1 ) - size.y = sizeDpy.y / 5; + size.y = sizeDefault.y; } - wxWindow::Create(NULL, id, pos, sizeOrig, style, name); + // for default positioning, centre the first top level window and + // cascade any addtional ones from there. + wxPoint pos = posOrig; + if ( pos.x == -1 || pos.y == -1 ) + { + wxSize sizeDisplay = wxGetDisplaySize(); + static wxPoint nextPos((sizeDisplay.x - size.x) / 2, + (sizeDisplay.y - size.y) / 2); + + if ( pos.x == -1 ) + pos.x = nextPos.x; + if ( pos.y == -1 ) + pos.y = nextPos.y; + if ( pos.x + size.x > sizeDisplay.x || pos.y + size.y > sizeDisplay.y ) + pos = wxPoint(); + + const wxSize cascadeOffset(16, 20); + nextPos = pos + cascadeOffset; + } + + wxWindow::Create(NULL, id, pos, size, style, name); SetParent(parent); if ( parent ) parent->AddChild(this); -- 2.45.2