diff options
author | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2022-05-16 18:16:04 +0300 |
---|---|---|
committer | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2022-05-16 18:16:04 +0300 |
commit | 231d3670981a33ec42b91ad1cb33c1fc50551066 (patch) | |
tree | b1ef1096f4e279baaa2ea0d2daf14b5c4185a82f /src/android/jar/src/org/qtproject/qt5/android/QtLayout.java | |
parent | ffdd372c7bbda62e9d937f406319f38e3e982774 (diff) | |
parent | 8fc1a885d19a2dfb1a3a684aea1cfa41967e041f (diff) |
Merge remote-tracking branch 'origin/tqtc/lts-5.15.5' into tqtc/lts-5.15-opensourcev5.15.5-lts-lgpl
Change-Id: I0cdb390124e783dc9cd832a9954baa76a0e9eb6b
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.java | 30 |
1 files changed, 26 insertions, 4 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 f22b8176c8..45b5c0b061 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java @@ -46,10 +46,13 @@ import android.util.AttributeSet; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; +import android.graphics.Rect; public class QtLayout extends ViewGroup { private Runnable m_startApplicationRunnable; + private int m_bottomDisplayFrame = -1; + public QtLayout(Context context, Runnable startRunnable) { super(context); @@ -66,13 +69,30 @@ public class QtLayout extends ViewGroup super(context, attrs, defStyle); } - @Override - protected void onSizeChanged (int w, int h, int oldw, int oldh) + private void handleSizeChanged (int w, int h, int oldw, int oldh) { DisplayMetrics metrics = new DisplayMetrics(); ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics); - QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, w, h, - metrics.xdpi, metrics.ydpi, metrics.scaledDensity, metrics.density); + + Rect r = new Rect(); + ((Activity) getContext()).getWindow().getDecorView().getWindowVisibleDisplayFrame(r); + + if (m_bottomDisplayFrame != r.bottom) { + m_bottomDisplayFrame = r.bottom; + QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, w, h, + metrics.xdpi, + metrics.ydpi, + metrics.scaledDensity, + metrics.density, + ((metrics.heightPixels == h) || (metrics.heightPixels == h + r.top))); + } + } + + @Override + protected void onSizeChanged (int w, int h, int oldw, int oldh) + { + handleSizeChanged (w, h, oldw, oldh); + if (m_startApplicationRunnable != null) { m_startApplicationRunnable.run(); m_startApplicationRunnable = null; @@ -150,6 +170,8 @@ public class QtLayout extends ViewGroup } } + + handleSizeChanged (r, b, 0, 0); } // Override to allow type-checking of LayoutParams. |