mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-11 08:47:52 -06:00
Fix window geometry shenanigans
This commit is contained in:
parent
8da7ef41c0
commit
5a2a39c3ab
2 changed files with 16 additions and 26 deletions
|
@ -352,22 +352,6 @@ void GUI_App::persist_window_geometry(wxTopLevelWindow *window)
|
||||||
|
|
||||||
window_pos_restore(window, name);
|
window_pos_restore(window, name);
|
||||||
|
|
||||||
// #ifdef _WIN32
|
|
||||||
// // On windows, the wxEVT_SHOW is not received if the window is created maximized
|
|
||||||
// // cf. https://groups.google.com/forum/#!topic/wx-users/c7ntMt6piRI
|
|
||||||
// // so we sanitize the position right away
|
|
||||||
// window_pos_sanitize(window);
|
|
||||||
// #else
|
|
||||||
// // On other platforms on the other hand it's needed to wait before the window is actually on screen
|
|
||||||
// // and some initial round of events is complete otherwise position / display index is not reported correctly.
|
|
||||||
// window->Bind(wxEVT_SHOW, [=](wxShowEvent &event) {
|
|
||||||
// CallAfter([=]() {
|
|
||||||
// window_pos_sanitize(window);
|
|
||||||
// });
|
|
||||||
// event.Skip();
|
|
||||||
// });
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
on_window_geometry(window, [=]() {
|
on_window_geometry(window, [=]() {
|
||||||
window_pos_sanitize(window);
|
window_pos_sanitize(window);
|
||||||
});
|
});
|
||||||
|
|
|
@ -28,18 +28,24 @@ wxTopLevelWindow* find_toplevel_parent(wxWindow *window)
|
||||||
|
|
||||||
void on_window_geometry(wxTopLevelWindow *tlw, std::function<void()> callback)
|
void on_window_geometry(wxTopLevelWindow *tlw, std::function<void()> callback)
|
||||||
{
|
{
|
||||||
tlw->Bind(wxEVT_CREATE, [=](wxWindowCreateEvent &event) {
|
#ifdef _WIN32
|
||||||
#ifdef __linux__
|
// On windows, the wxEVT_SHOW is not received if the window is created maximized
|
||||||
// On Linux, the geometry is only available after wxEVT_CREATE + CallAfter
|
// cf. https://groups.google.com/forum/#!topic/wx-users/c7ntMt6piRI
|
||||||
// cf. https://groups.google.com/forum/?pli=1#!topic/wx-users/fERSXdpVwAI
|
// OTOH the geometry is available very soon, so we can call the callback right away
|
||||||
tlw->CallAfter([=]() {
|
|
||||||
#endif
|
|
||||||
callback();
|
callback();
|
||||||
#ifdef __linux__
|
#elif defined __linux__
|
||||||
|
tlw->Bind(wxEVT_SHOW, [=](wxShowEvent &evt) {
|
||||||
|
// On Linux, the geometry is only available after wxEVT_SHOW + CallAfter
|
||||||
|
// cf. https://groups.google.com/forum/?pli=1#!topic/wx-users/fERSXdpVwAI
|
||||||
|
tlw->CallAfter([=]() { callback(); });
|
||||||
|
evt.Skip();
|
||||||
|
});
|
||||||
|
#elif defined __APPLE__
|
||||||
|
tlw->Bind(wxEVT_SHOW, [=](wxShowEvent &evt) {
|
||||||
|
callback();
|
||||||
|
evt.Skip();
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
event.Skip();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue