From 3c1f220c5ec6ea824e6a0c12d77fd8ce01ee0d1b Mon Sep 17 00:00:00 2001
From: emmauss <emmausssss@gmail.com>
Date: Thu, 23 Jul 2020 13:12:19 +0000
Subject: [PATCH] fix fullscreen toggling (#1364)

---
 Ryujinx/Ui/MainWindow.cs | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/Ryujinx/Ui/MainWindow.cs b/Ryujinx/Ui/MainWindow.cs
index 27fcd3339e..92e0c95678 100644
--- a/Ryujinx/Ui/MainWindow.cs
+++ b/Ryujinx/Ui/MainWindow.cs
@@ -94,6 +94,7 @@ namespace Ryujinx.Ui
             this.DefaultWidth  = monitorWidth < 1280 ? monitorWidth : 1280;
             this.DefaultHeight = monitorHeight < 760 ? monitorHeight : 760;
 
+            this.WindowStateEvent += MainWindow_WindowStateEvent;
             this.DeleteEvent      += Window_Close;
             _fullScreen.Activated += FullScreen_Toggled;
 
@@ -192,6 +193,11 @@ namespace Ryujinx.Ui
             _statusBar.Hide();
         }
 
+        private void MainWindow_WindowStateEvent(object o, WindowStateEventArgs args)
+        {
+            _fullScreen.Label = args.Event.NewWindowState.HasFlag(Gdk.WindowState.Fullscreen) ? "Exit Fullscreen" : "Enter Fullscreen";
+        }
+
 #if USE_DEBUGGING
         private void _openDebugger_Opened(object sender, EventArgs e)
         {
@@ -505,6 +511,11 @@ namespace Ryujinx.Ui
 
                 _glWidget.ShowAll();
                 EditFooterForGameRender();
+
+                if (this.Window.State.HasFlag(Gdk.WindowState.Fullscreen))
+                {
+                    ToggleExtraWidgets(false);
+                }
             });
 
             _glWidget.WaitEvent.WaitOne();
@@ -520,6 +531,11 @@ namespace Ryujinx.Ui
             // NOTE: Everything that is here will not be executed when you close the UI.
             Application.Invoke(delegate
             {
+                if (this.Window.State.HasFlag(Gdk.WindowState.Fullscreen))
+                {
+                    ToggleExtraWidgets(true);
+                }
+
                 _viewBox.Remove(_glWidget);
                 _glWidget.Exit();
 
@@ -583,10 +599,6 @@ namespace Ryujinx.Ui
                     _footerBox.Hide();
                 }
             }
-
-            bool fullScreenToggled = this.Window.State.HasFlag(Gdk.WindowState.Fullscreen);
-
-            _fullScreen.Label = fullScreenToggled ? "Exit Fullscreen" : "Enter Fullscreen";
         }
 
         private static void UpdateGameMetadata(string titleId)