diff options
Diffstat (limited to 'Source/Core/DolphinQt2/RenderWidget.cpp')
| -rw-r--r-- | Source/Core/DolphinQt2/RenderWidget.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Source/Core/DolphinQt2/RenderWidget.cpp b/Source/Core/DolphinQt2/RenderWidget.cpp index 255bff6cd7..b1c1529baa 100644 --- a/Source/Core/DolphinQt2/RenderWidget.cpp +++ b/Source/Core/DolphinQt2/RenderWidget.cpp @@ -53,6 +53,9 @@ RenderWidget::RenderWidget(QWidget* parent) : QWidget(parent) connect(&Settings::Instance(), &Settings::HideCursorChanged, this, &RenderWidget::OnHideCursorChanged); OnHideCursorChanged(); + connect(&Settings::Instance(), &Settings::KeepWindowOnTopChanged, this, + &RenderWidget::OnKeepOnTopChanged); + OnKeepOnTopChanged(Settings::Instance().IsKeepWindowOnTopEnabled()); m_mouse_timer->start(MOUSE_HIDE_DELAY); SetFillBackground(true); @@ -70,6 +73,14 @@ void RenderWidget::OnHideCursorChanged() setCursor(Settings::Instance().GetHideCursor() ? Qt::BlankCursor : Qt::ArrowCursor); } +void RenderWidget::OnKeepOnTopChanged(bool top) +{ + setWindowFlags(top ? windowFlags() | Qt::WindowStaysOnTopHint : + windowFlags() & ~Qt::WindowStaysOnTopHint); + + show(); +} + void RenderWidget::HandleCursorTimer() { if (isActiveWindow()) @@ -90,6 +101,8 @@ bool RenderWidget::event(QEvent* event) { switch (event->type()) { + case QEvent::Paint: + return !autoFillBackground(); case QEvent::KeyPress: { QKeyEvent* ke = static_cast<QKeyEvent*>(event); @@ -116,9 +129,13 @@ bool RenderWidget::event(QEvent* event) break; case QEvent::WindowActivate: Host::GetInstance()->SetRenderFocus(true); + if (SConfig::GetInstance().m_PauseOnFocusLost && Core::GetState() == Core::State::Paused) + Core::SetState(Core::State::Running); break; case QEvent::WindowDeactivate: Host::GetInstance()->SetRenderFocus(false); + if (SConfig::GetInstance().m_PauseOnFocusLost && Core::GetState() == Core::State::Running) + Core::SetState(Core::State::Paused); break; case QEvent::Resize: { |
