summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/RenderWidget.cpp
diff options
context:
space:
mode:
authorTilka <tilkax@gmail.com>2018-04-22 11:26:18 +0100
committerGitHub <noreply@github.com>2018-04-22 11:26:18 +0100
commit50e80d66db3bd479a0d6ce7768e3919b3bfcd032 (patch)
tree8dd8e2fa561d332188ffeea89ff240f3a23fc141 /Source/Core/DolphinQt2/RenderWidget.cpp
parentc131b7c3b4b045b201d36f08f3a7622b5b843eea (diff)
parentcaa18edc794845b1cbf957754ac9dfc4211beb6d (diff)
Merge pull request #6678 from spycrab/qt_pause_focusloss
Qt: RenderWidget fixes
Diffstat (limited to 'Source/Core/DolphinQt2/RenderWidget.cpp')
-rw-r--r--Source/Core/DolphinQt2/RenderWidget.cpp17
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:
{