Parcourir la source

Fixed mixed always on top and fullscreen modes.

We should never switch the always on top flag to on when entering
fullscreen. The reason being that on OSX it gives you a wonky
windowed mode inside the fullscreen. Looks crazy.

We now switch the always on flag when we switch window state.
Tobias Hieta il y a 8 ans
Parent
commit
71e28688a6
2 fichiers modifiés avec 16 ajouts et 31 suppressions
  1. 15 29
      src/ui/KonvergoWindow.cpp
  2. 1 2
      src/ui/KonvergoWindow.h

+ 15 - 29
src/ui/KonvergoWindow.cpp

@@ -68,12 +68,9 @@ KonvergoWindow::KonvergoWindow(QWindow* parent) : QQuickWindow(parent), m_debugL
 #ifdef KONVERGO_OPENELEC
   setVisibility(QWindow::FullScreen);
 #else
-  updateFullscreenState(false);
+  updateWindowState(false);
 #endif
 
-  // Check the always on top setting and activate it if necessary.
-  updateAlwaysOnTopState();
-
   emit enableVideoWindowSignal();
 }
 
@@ -239,19 +236,15 @@ void KonvergoWindow::updateMainSectionSettings(const QVariantMap& values)
     SystemComponent::Get().setCursorVisibility(!SettingsComponent::Get().value(SETTINGS_SECTION_MAIN, "disablemouse").toBool());
   }
 
-  if (values.find("alwaysOnTop") != values.end())
-    updateAlwaysOnTopState();
-
-  if (values.find("fullscreen") == values.end())
-    return;
-
-  InputComponent::Get().cancelAutoRepeat();
-
-  updateFullscreenState();
+  if (values.contains("alwaysOnTop") || values.contains("fullscreen"))
+  {
+    InputComponent::Get().cancelAutoRepeat();
+    updateWindowState();
+  }
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-void KonvergoWindow::updateFullscreenState(bool saveGeo)
+void KonvergoWindow::updateWindowState(bool saveGeo)
 {
   if (SettingsComponent::Get().value(SETTINGS_SECTION_MAIN, "fullscreen").toBool() || SystemComponent::Get().isOpenELEC())
   {
@@ -266,24 +259,17 @@ void KonvergoWindow::updateFullscreenState(bool saveGeo)
   {
     setVisibility(QWindow::Windowed);
     loadGeometry();
-  }
-}
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void KonvergoWindow::updateAlwaysOnTopState()
-{
-  QLOG_DEBUG() << "Changing always-on-top state";
-  Qt::WindowFlags forceOnTopFlags = Qt::WindowStaysOnTopHint;
+    Qt::WindowFlags forceOnTopFlags = Qt::WindowStaysOnTopHint;
 #ifdef Q_WS_X11
-  forceOnTopFlags = forceOnTopFlags | Qt::X11BypassWindowManagerHint;
+    forceOnTopFlags = forceOnTopFlags | Qt::X11BypassWindowManagerHint;
 #endif
 
-  if (SettingsComponent::Get().value(SETTINGS_SECTION_MAIN, "alwaysOnTop").toBool())
-    setFlags(flags() | forceOnTopFlags);
-  else
-    setFlags(flags() & ~forceOnTopFlags);
-
-  show();
+    if (SettingsComponent::Get().value(SETTINGS_SECTION_MAIN, "alwaysOnTop").toBool())
+      setFlags(flags() | forceOnTopFlags);
+    else
+      setFlags(flags() &~ forceOnTopFlags);
+  }
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -325,7 +311,7 @@ void KonvergoWindow::RegisterClass()
 /////////////////////////////////////////////////////////////////////////////////////////
 void KonvergoWindow::onScreenCountChanged(int newCount)
 {
-  updateFullscreenState(false);
+  updateWindowState(false);
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////

+ 1 - 2
src/ui/KonvergoWindow.h

@@ -107,8 +107,7 @@ private slots:
   void enableVideoWindow();
   void onVisibilityChanged(QWindow::Visibility visibility);
   void updateMainSectionSettings(const QVariantMap& values);
-  void updateFullscreenState(bool saveGeo = true);
-  void updateAlwaysOnTopState();
+  void updateWindowState(bool saveGeo = true);
   void onScreenCountChanged(int newCount);
   void updateDebugInfo();
   void playerWindowVisible(bool visible);