commit ffd68f352cf480df880899e4c81d26ff24bf0933
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Sep 20 11:15:13 2020 +0100

    Make it so that the Navigation Bar does not re-appear when we pop up a DialogFragment.
    
    Now there's noly 1 case when it still reappears: it's when we pop up a PopupWindow.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogAbout.java b/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
index 5fa2a8ea..a4546fb1 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
@@ -116,6 +116,8 @@ public class RubikDialogAbout extends AppCompatDialogFragment
     if( window!=null )
       {
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
       }
 
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogEffects.java b/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
index faa31951..fd191890 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogEffects.java
@@ -269,6 +269,8 @@ public class RubikDialogEffects extends AppCompatDialogFragment implements SeekB
     if( window!=null )
       {
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
       }
 
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogError.java b/src/main/java/org/distorted/dialogs/RubikDialogError.java
index f959cf22..8fbcf605 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogError.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogError.java
@@ -26,6 +26,8 @@ import android.util.DisplayMetrics;
 import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.TextView;
 
@@ -91,6 +93,14 @@ public class RubikDialogError extends AppCompatDialogFragment
     final Dialog dialog = builder.create();
     dialog.setCanceledOnTouchOutside(false);
 
+    Window window = dialog.getWindow();
+
+    if( window!=null )
+      {
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
+      }
+
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
       {
       @Override
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogNewRecord.java b/src/main/java/org/distorted/dialogs/RubikDialogNewRecord.java
index f3f8fce6..422a65cc 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogNewRecord.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogNewRecord.java
@@ -165,6 +165,8 @@ public class RubikDialogNewRecord extends AppCompatDialogFragment
     if( window!=null )
       {
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
       }
 
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogPattern.java b/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
index 53343643..74bd8393 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
@@ -116,6 +116,9 @@ public class RubikDialogPattern extends AppCompatDialogFragment
       window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                       WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
       }
 
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogPrivacy.java b/src/main/java/org/distorted/dialogs/RubikDialogPrivacy.java
index f6e03409..90938eea 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogPrivacy.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogPrivacy.java
@@ -28,6 +28,8 @@ import android.util.DisplayMetrics;
 import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.TextView;
 
@@ -93,6 +95,14 @@ public class RubikDialogPrivacy extends AppCompatDialogFragment
     final Dialog dialog = builder.create();
     dialog.setCanceledOnTouchOutside(false);
 
+    Window window = dialog.getWindow();
+
+    if( window!=null )
+      {
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
+      }
+
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
       {
       @Override
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogScores.java b/src/main/java/org/distorted/dialogs/RubikDialogScores.java
index 806bbb64..a2081f83 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogScores.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogScores.java
@@ -131,6 +131,8 @@ public class RubikDialogScores extends AppCompatDialogFragment
     if( window!=null )
       {
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
       }
 
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogSetName.java b/src/main/java/org/distorted/dialogs/RubikDialogSetName.java
index 8d0944f7..876c3230 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogSetName.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogSetName.java
@@ -189,6 +189,8 @@ public class RubikDialogSetName extends AppCompatDialogFragment
     if( window!=null )
       {
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
       }
 
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogSolved.java b/src/main/java/org/distorted/dialogs/RubikDialogSolved.java
index 2738c5fc..15364752 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogSolved.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogSolved.java
@@ -101,6 +101,8 @@ public class RubikDialogSolved extends AppCompatDialogFragment
     if( window!=null )
       {
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
       }
 
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogSolverError.java b/src/main/java/org/distorted/dialogs/RubikDialogSolverError.java
index 7a03e1f3..b81a2fb5 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogSolverError.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogSolverError.java
@@ -99,6 +99,8 @@ public class RubikDialogSolverError extends AppCompatDialogFragment
     if( window!=null )
       {
       window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
       }
 
     dialog.setOnShowListener(new DialogInterface.OnShowListener()
diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index 45b38a82..9621b7af 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -65,6 +65,13 @@ public class RubikActivity extends AppCompatActivity
     public static final float MENU_MEDIUM_TEXT_SIZE= 0.04f;
     public static final float MENU_SMALL_TEXT_SIZE = 0.035f;
 
+    public static final int FLAGS =  View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                                   | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+                                   | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                                   | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                                   | View.SYSTEM_UI_FLAG_FULLSCREEN
+                                   | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+
     private boolean mJustStarted;
     private FirebaseAnalytics mFirebaseAnalytics;
     private static int mScreenWidth, mScreenHeight;
@@ -101,21 +108,10 @@ public class RubikActivity extends AppCompatActivity
       {
       mCurrentApiVersion = android.os.Build.VERSION.SDK_INT;
 
-      final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
-                      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
-                      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-                      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
-                      | View.SYSTEM_UI_FLAG_FULLSCREEN
-                      | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
-
-      // This work only for android 4.4+
       if(mCurrentApiVersion >= Build.VERSION_CODES.KITKAT)
         {
-        getWindow().getDecorView().setSystemUiVisibility(flags);
+        getWindow().getDecorView().setSystemUiVisibility(FLAGS);
 
-        // Code below is to handle presses of Volume up or Volume down.
-        // Without this, after pressing volume buttons, the navigation bar will
-        // show up and won't hide
         final View decorView = getWindow().getDecorView();
 
         decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener()
@@ -125,7 +121,7 @@ public class RubikActivity extends AppCompatActivity
             {
             if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
               {
-              decorView.setSystemUiVisibility(flags);
+              decorView.setSystemUiVisibility(FLAGS);
               }
             }
           });
@@ -141,12 +137,7 @@ public class RubikActivity extends AppCompatActivity
 
       if(mCurrentApiVersion >= Build.VERSION_CODES.KITKAT && hasFocus)
         {
-        getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE
-                                                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
-                                                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-                                                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
-                                                        | View.SYSTEM_UI_FLAG_FULLSCREEN
-                                                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
+        getWindow().getDecorView().setSystemUiVisibility(FLAGS);
         }
       }
 
