Add WindowManager::getLastSelectedWindow() to replace getMainWindow() (#4816)

1. No longer can return a nullptr if no window was ever focused
  2. When closing a window, it will no longer return an invalid pointer
This commit is contained in:
Mm2PL
2023-09-16 22:53:44 +02:00
committed by GitHub
parent 38c994be49
commit d752ce86fd
4 changed files with 25 additions and 4 deletions
+8 -1
View File
@@ -103,8 +103,10 @@ bool Window::event(QEvent *event)
{
switch (event->type())
{
case QEvent::WindowActivate:
case QEvent::WindowActivate: {
getApp()->windows->selectedWindow_ = this;
break;
}
case QEvent::WindowDeactivate: {
auto page = this->notebook_->getOrAddSelectedPage();
@@ -142,6 +144,11 @@ void Window::closeEvent(QCloseEvent *)
app->windows->closeAll();
}
// Ensure selectedWindow_ is never an invalid pointer.
// WindowManager will return the main window if no window is pointed to by
// `selectedWindow_`.
getApp()->windows->selectedWindow_ = nullptr;
this->closed.invoke();
if (this->type_ == WindowType::Main)