centre on screen the dialogs without epxlicit position
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12682 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -252,35 +252,39 @@ bool wxTopLevelWindowMSW::CreateDialog(const wxChar *dlgTemplate,
|
|||||||
|
|
||||||
// move the dialog to its initial position without forcing repainting
|
// move the dialog to its initial position without forcing repainting
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
if ( MSWGetCreateWindowCoords(pos, size, x, y, w, h) )
|
if ( !MSWGetCreateWindowCoords(pos, size, x, y, w, h) )
|
||||||
{
|
{
|
||||||
// we can't use CW_USEDEFAULT here as we're not calling CreateWindow()
|
x =
|
||||||
// and passing CW_USEDEFAULT to MoveWindow() results in resizing the
|
w = (int)CW_USEDEFAULT;
|
||||||
// window to (0, 0) size which breaks quite a lot of things, e.g. the
|
}
|
||||||
// sizer calculation in wxSizer::Fit()
|
|
||||||
if ( w == (int)CW_USEDEFAULT )
|
// we can't use CW_USEDEFAULT here as we're not calling CreateWindow()
|
||||||
{
|
// and passing CW_USEDEFAULT to MoveWindow() results in resizing the
|
||||||
// the exact number doesn't matter, the dialog will be resized
|
// window to (0, 0) size which breaks quite a lot of things, e.g. the
|
||||||
// again soon anyhow but it should be big enough to allow
|
// sizer calculation in wxSizer::Fit()
|
||||||
// calculation relying on "totalSize - clientSize > 0" work, i.e.
|
if ( w == (int)CW_USEDEFAULT )
|
||||||
// at least greater than the title bar height
|
{
|
||||||
w =
|
// the exact number doesn't matter, the dialog will be resized
|
||||||
h = 100;
|
// again soon anyhow but it should be big enough to allow
|
||||||
}
|
// calculation relying on "totalSize - clientSize > 0" work, i.e.
|
||||||
|
// at least greater than the title bar height
|
||||||
if ( x == (int)CW_USEDEFAULT )
|
w =
|
||||||
{
|
h = 100;
|
||||||
// well, where should we put it? maybe centre it on screen?
|
}
|
||||||
x =
|
|
||||||
y = 0;
|
if ( x == (int)CW_USEDEFAULT )
|
||||||
}
|
{
|
||||||
|
// centre it on the screen - what else can we do?
|
||||||
if ( !::MoveWindow(GetHwnd(), x, y, w, h, FALSE) )
|
wxSize sizeDpy = wxGetDisplaySize();
|
||||||
{
|
|
||||||
wxLogLastError(wxT("MoveWindow"));
|
x = (sizeDpy.x - w) / 2;
|
||||||
}
|
y = (sizeDpy.y - h) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !::MoveWindow(GetHwnd(), x, y, w, h, FALSE) )
|
||||||
|
{
|
||||||
|
wxLogLastError(wxT("MoveWindow"));
|
||||||
}
|
}
|
||||||
//else: leave it at default position
|
|
||||||
|
|
||||||
if ( !title.empty() )
|
if ( !title.empty() )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user