summaryrefslogtreecommitdiffstats
path: root/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt5/android/QtLayout.java')
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtLayout.java101
1 files changed, 12 insertions, 89 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
index 5bf1b2ff4b..e59ac39d9f 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
@@ -106,111 +106,34 @@ public class QtLayout extends ViewGroup
final WindowManager windowManager = activity.getWindowManager();
Display display;
- int appWidth = 0;
- int appHeight = 0;
-
- int insetLeft = 0;
- int insetTop = 0;
+ final WindowInsets rootInsets = getRootWindowInsets();
int maxWidth = 0;
int maxHeight = 0;
- double xdpi = 0;
- double ydpi = 0;
- double scaledDensity = 0;
- double density = 0;
-
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
- display = windowManager.getDefaultDisplay();
-
- final DisplayMetrics appMetrics = new DisplayMetrics();
- display.getMetrics(appMetrics);
-
- final WindowInsets rootInsets = getRootWindowInsets();
-
- insetLeft = rootInsets.getStableInsetLeft();
- insetTop = rootInsets.getStableInsetTop();
-
- int insetsWidth = rootInsets.getStableInsetRight() + rootInsets.getStableInsetLeft();
- int insetsHeight = rootInsets.getStableInsetTop() + rootInsets.getStableInsetBottom();
+ display = windowManager.getDefaultDisplay();
- appWidth = appMetrics.widthPixels - insetsWidth;
- appHeight = appMetrics.heightPixels - insetsHeight;
-
- final DisplayMetrics maxMetrics = new DisplayMetrics();
- display.getRealMetrics(maxMetrics);
-
- maxWidth = maxMetrics.widthPixels;
- maxHeight = maxMetrics.heightPixels;
-
- density = appMetrics.density;
- xdpi = appMetrics.xdpi;
- ydpi = appMetrics.ydpi;
- scaledDensity = appMetrics.scaledDensity;
+ final DisplayMetrics maxMetrics = new DisplayMetrics();
+ display.getRealMetrics(maxMetrics);
+ maxWidth = maxMetrics.widthPixels;
+ maxHeight = maxMetrics.heightPixels;
} else {
- // after API 30 use getCurrentWindowMetrics for application metrics
- // getMaximumWindowMetrics for the screen metrics
- // resource configuration for density as best practice
- // and the resource display metrics for the rest
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());
-
- insetLeft = insets.left;
- insetTop = insets.top;
-
- 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;
-
maxWidth = maxMetrics.getBounds().width();
maxHeight = maxMetrics.getBounds().height();
-
- final Resources resources = activity.getResources();
- final Configuration configuration = resources.getConfiguration();
- density = configuration.densityDpi / (float) DisplayMetrics.DENSITY_DEFAULT;
-
- final DisplayMetrics displayMetrics = resources.getDisplayMetrics();
- xdpi = displayMetrics.xdpi;
- ydpi = displayMetrics.ydpi;
- density = displayMetrics.density;
- scaledDensity = displayMetrics.scaledDensity;
}
+ final DisplayMetrics displayMetrics = activity.getResources().getDisplayMetrics();
+ double xdpi = displayMetrics.xdpi;
+ double ydpi = displayMetrics.ydpi;
+ double density = displayMetrics.density;
+ double scaledDensity = displayMetrics.scaledDensity;
float refreshRate = display.getRefreshRate();
- if ((appWidth > appHeight) != (w > h)) {
- // This is an intermediate state during display rotation.
- // The new size is still reported for old orientation, while
- // realMetrics contain sizes for new orientation. Setting
- // such parameters will produce inconsistent results, so
- // we just skip them.
- // We will have another onSizeChanged() with normal values
- // a bit later.
- return;
- }
-
- final int flag =
- activity.getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN;
- if (flag == WindowManager.LayoutParams.FLAG_FULLSCREEN) {
- // immersive mode uses the whole screen
- appWidth = maxWidth;
- appHeight = maxHeight;
- }
-
- QtNative.setApplicationDisplayMetrics(maxWidth, maxHeight, appWidth, appHeight,
+ QtNative.setApplicationDisplayMetrics(maxWidth, maxHeight, w, h,
xdpi,ydpi,scaledDensity, density,
refreshRate);