Qt: Better window size handling

This commit is contained in:
Jeffrey Pfau 2015-08-05 00:42:21 -07:00
parent a1808a2387
commit 742296b8b9
3 changed files with 8 additions and 13 deletions

View File

@ -51,10 +51,6 @@ GBAApp::GBAApp(int& argc, char* argv[])
});
m_windows[0] = w;
#ifndef Q_OS_MAC
w->show();
#endif
GBAArguments args;
if (m_configController.parseArguments(&args, argc, argv)) {
w->argumentsPassed(&args);
@ -62,14 +58,12 @@ GBAApp::GBAApp(int& argc, char* argv[])
w->loadConfig();
}
freeArguments(&args);
w->show();
AudioProcessor::setDriver(static_cast<AudioProcessor::Driver>(m_configController.getQtOption("audioDriver").toInt()));
w->controller()->reloadAudioDriver();
w->controller()->setMultiplayerController(&m_multiplayer);
#ifdef Q_OS_MAC
w->show();
#endif
}
bool GBAApp::event(QEvent* event) {
@ -91,14 +85,9 @@ Window* GBAApp::newWindow() {
});
m_windows[windowId] = w;
w->setAttribute(Qt::WA_DeleteOnClose);
#ifndef Q_OS_MAC
w->show();
#endif
w->loadConfig();
w->controller()->setMultiplayerController(&m_multiplayer);
#ifdef Q_OS_MAC
w->show();
#endif
w->controller()->setMultiplayerController(&m_multiplayer);
return w;
}

View File

@ -172,6 +172,7 @@ void Window::argumentsPassed(GBAArguments* args) {
void Window::resizeFrame(int width, int height) {
QSize newSize(width, height);
m_screenWidget->setSizeHint(newSize);
newSize -= m_screenWidget->size();
newSize += size();
resize(newSize);
@ -434,6 +435,10 @@ void Window::resizeEvent(QResizeEvent*) {
m_config->setOption("fullscreen", isFullScreen());
}
void Window::showEvent(QShowEvent* event) {
resizeFrame(m_screenWidget->sizeHint().width(), m_screenWidget->sizeHint().height());
}
void Window::closeEvent(QCloseEvent* event) {
emit shutdown();
m_config->setQtOption("windowPos", pos());

View File

@ -104,6 +104,7 @@ protected:
virtual void keyPressEvent(QKeyEvent* event) override;
virtual void keyReleaseEvent(QKeyEvent* event) override;
virtual void resizeEvent(QResizeEvent*) override;
virtual void showEvent(QShowEvent*) override;
virtual void closeEvent(QCloseEvent*) override;
virtual void focusInEvent(QFocusEvent*) override;
virtual void focusOutEvent(QFocusEvent*) override;