fix starting game pos and geometry #406
Fix display when loading ROMs with custom geometry. This issue was a combination of `wxSHAPED` and its effect on the custom geometry. It is necessary to force a dummy resize so the display adjusts itself. Align game frame on center, both horizontal and vertical.
This commit is contained in:
parent
2beb561838
commit
2ae72f38cd
|
@ -1046,9 +1046,9 @@ void GameArea::OnIdle(wxIdleEvent& event)
|
||||||
// On windows with the vcpkg version of wxWidgets which is 3.1.2, the
|
// On windows with the vcpkg version of wxWidgets which is 3.1.2, the
|
||||||
// wxEXPAND flag throws an XRC error, but it is necessary on earlier versions of wxWidgets
|
// wxEXPAND flag throws an XRC error, but it is necessary on earlier versions of wxWidgets
|
||||||
#if defined(__WXMSW__) && wxCHECK_VERSION(3, 1, 2)
|
#if defined(__WXMSW__) && wxCHECK_VERSION(3, 1, 2)
|
||||||
GetSizer()->Add(w, frame_priority, gopts.retain_aspect ? (wxSHAPED | wxALIGN_CENTER_HORIZONTAL) : wxEXPAND);
|
GetSizer()->Add(w, frame_priority, gopts.retain_aspect ? (wxSHAPED | wxALIGN_CENTER) : wxEXPAND);
|
||||||
#else
|
#else
|
||||||
GetSizer()->Add(w, frame_priority, gopts.retain_aspect ? (wxSHAPED | wxALIGN_CENTER_HORIZONTAL | wxEXPAND) : wxEXPAND);
|
GetSizer()->Add(w, frame_priority, gopts.retain_aspect ? (wxSHAPED | wxALIGN_CENTER | wxEXPAND) : wxEXPAND);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if wxCHECK_VERSION(2, 9, 0)
|
#if wxCHECK_VERSION(2, 9, 0)
|
||||||
|
@ -1056,6 +1056,8 @@ void GameArea::OnIdle(wxIdleEvent& event)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Layout();
|
Layout();
|
||||||
|
SendSizeEvent();
|
||||||
|
|
||||||
|
|
||||||
if (pointer_blanked)
|
if (pointer_blanked)
|
||||||
w->SetCursor(wxCursor(wxCURSOR_BLANK));
|
w->SetCursor(wxCursor(wxCURSOR_BLANK));
|
||||||
|
|
|
@ -763,22 +763,23 @@ void MainFrame::OnMenu(wxContextMenuEvent& event)
|
||||||
void MainFrame::OnMove(wxMoveEvent& event)
|
void MainFrame::OnMove(wxMoveEvent& event)
|
||||||
{
|
{
|
||||||
(void)event; // unused params
|
(void)event; // unused params
|
||||||
wxRect pos = GetRect();
|
wxPoint pos = GetScreenPosition();
|
||||||
int x = pos.GetX(), y = pos.GetY();
|
int x = pos.x, y = pos.y;
|
||||||
if (x >= 0 && y >= 0 && !IsFullScreen())
|
if (x >= 0 && y >= 0 && !IsFullScreen())
|
||||||
{
|
{
|
||||||
windowPositionX = x;
|
windowPositionX = x;
|
||||||
windowPositionY = y;
|
windowPositionY = y;
|
||||||
update_opts();
|
|
||||||
}
|
}
|
||||||
|
update_opts();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainFrame::OnSize(wxSizeEvent& event)
|
void MainFrame::OnSize(wxSizeEvent& event)
|
||||||
{
|
{
|
||||||
wxFrame::OnSize(event);
|
wxFrame::OnSize(event);
|
||||||
wxRect pos = GetRect();
|
wxRect pos = GetRect();
|
||||||
|
wxPoint windowPos = GetScreenPosition();
|
||||||
int height = pos.GetHeight(), width = pos.GetWidth();
|
int height = pos.GetHeight(), width = pos.GetWidth();
|
||||||
int x = pos.GetX(), y = pos.GetY();
|
int x = windowPos.x, y = windowPos.y;
|
||||||
bool isFullscreen = IsFullScreen();
|
bool isFullscreen = IsFullScreen();
|
||||||
if (height > 0 && width > 0 && !isFullscreen)
|
if (height > 0 && width > 0 && !isFullscreen)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue