CommonHostInterface: Add a method to get top-level window handle

This commit is contained in:
Connor McLaughlin
2020-12-29 16:29:14 +10:00
parent a894b295b6
commit a3e4c61a0b
7 changed files with 35 additions and 9 deletions

View File

@ -32,6 +32,8 @@ int main(int argc, char* argv[])
if (!host_interface->ParseCommandLineParameters(argc, argv, &boot_params))
return EXIT_FAILURE;
std::unique_ptr<MainWindow> window = std::make_unique<MainWindow>(host_interface.get());
if (!host_interface->Initialize())
{
host_interface->Shutdown();
@ -40,8 +42,7 @@ int main(int argc, char* argv[])
return EXIT_FAILURE;
}
std::unique_ptr<MainWindow> window = std::make_unique<MainWindow>(host_interface.get());
window->show();
window->initializeAndShow();
// if we're in batch mode, don't bother refreshing the game list as it won't be used
if (!host_interface->inBatchMode())

View File

@ -47,6 +47,20 @@ MainWindow::MainWindow(QtHostInterface* host_interface)
{
m_host_interface->setMainWindow(this);
// force creation of native window
winId();
}
MainWindow::~MainWindow()
{
Assert(!m_display_widget);
m_host_interface->setMainWindow(nullptr);
Assert(!m_debugger_window);
}
void MainWindow::initializeAndShow()
{
m_ui.setupUi(this);
setupAdditionalUi();
connectSignals();
@ -56,14 +70,8 @@ MainWindow::MainWindow(QtHostInterface* host_interface)
restoreStateFromConfig();
switchToGameListView();
}
MainWindow::~MainWindow()
{
Assert(!m_display_widget);
m_host_interface->setMainWindow(nullptr);
Assert(!m_debugger_window);
show();
}
void MainWindow::reportError(const QString& message)

View File

@ -31,6 +31,9 @@ public:
explicit MainWindow(QtHostInterface* host_interface);
~MainWindow();
/// Initializes the window. Call once at startup.
void initializeAndShow();
/// Performs update check if enabled in settings.
void startupUpdateCheck();

View File

@ -619,6 +619,11 @@ bool QtHostInterface::RequestRenderWindowSize(s32 new_window_width, s32 new_wind
return true;
}
void* QtHostInterface::GetTopLevelWindowHandle() const
{
return reinterpret_cast<void*>(m_main_window->winId());
}
void QtHostInterface::PollAndUpdate()
{
CommonHostInterface::PollAndUpdate();

View File

@ -72,6 +72,7 @@ public:
std::string TranslateStdString(const char* context, const char* str) const override;
bool RequestRenderWindowSize(s32 new_window_width, s32 new_window_height) override;
void* GetTopLevelWindowHandle() const override;
ALWAYS_INLINE const GameList* getGameList() const { return m_game_list.get(); }
ALWAYS_INLINE GameList* getGameList() { return m_game_list.get(); }