summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtLayout.java25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtLayout.java b/src/android/jar/src/org/qtproject/qt/android/QtLayout.java
index a234f921d3..3c01c76400 100644
--- a/src/android/jar/src/org/qtproject/qt/android/QtLayout.java
+++ b/src/android/jar/src/org/qtproject/qt/android/QtLayout.java
@@ -90,8 +90,16 @@ public class QtLayout extends ViewGroup
final DisplayMetrics appMetrics = new DisplayMetrics();
display.getMetrics(appMetrics);
- appWidth = appMetrics.widthPixels;
- appHeight = appMetrics.heightPixels;
+ final WindowInsets rootInsets = getRootWindowInsets();
+
+ insetLeft = rootInsets.getStableInsetLeft();
+ insetTop = rootInsets.getStableInsetTop();
+
+ int insetsWidth = rootInsets.getStableInsetRight() + rootInsets.getStableInsetLeft();
+ int insetsHeight = rootInsets.getStableInsetTop() + rootInsets.getStableInsetBottom();
+
+ appWidth = appMetrics.widthPixels - insetsWidth;
+ appHeight = appMetrics.heightPixels - insetsHeight;
final DisplayMetrics maxMetrics = new DisplayMetrics();
display.getRealMetrics(maxMetrics);
@@ -104,9 +112,6 @@ public class QtLayout extends ViewGroup
ydpi = appMetrics.ydpi;
scaledDensity = appMetrics.scaledDensity;
- final WindowInsets rootInsets = getRootWindowInsets();
- insetLeft = rootInsets.getSystemWindowInsetLeft();
- insetTop = rootInsets.getSystemWindowInsetTop();
} else {
// after API 30 use getCurrentWindowMetrics for application metrics
// getMaximumWindowMetrics for the screen metrics
@@ -115,10 +120,10 @@ public class QtLayout extends ViewGroup
display = activity.getDisplay();
final WindowMetrics appMetrics = windowManager.getCurrentWindowMetrics();
+ final WindowMetrics maxMetrics = windowManager.getMaximumWindowMetrics();
final WindowInsets windowInsets = appMetrics.getWindowInsets();
- Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars()
- | WindowInsets.Type.displayCutout());
+ Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.tappableElement());
insetLeft = insets.left;
insetTop = insets.top;
@@ -126,10 +131,14 @@ public class QtLayout extends ViewGroup
int insetsWidth = insets.right + insets.left;
int insetsHeight = insets.top + insets.bottom;
+ if (h == maxMetrics.getBounds().height()){
+ //when h == maxheight the system is ignoring insets
+ insetsWidth = insetsHeight = insetLeft = insetTop = 0;
+ }
+
appWidth = appMetrics.getBounds().width() - insetsWidth;
appHeight = appMetrics.getBounds().height() - insetsHeight;
- final WindowMetrics maxMetrics = windowManager.getMaximumWindowMetrics();
maxWidth = maxMetrics.getBounds().width();
maxHeight = maxMetrics.getBounds().height();