abouttreesummaryrefslogcommitdiff
path: root/srcs
diff options
context:
space:
mode:
authorJules Aguillon2024-05-29 12:00:41 +0200
committerGitHub2024-05-29 12:00:41 +0200
commit93d58571cc813004d6741489f001c6013cc3b296 (patch)
tree4fac40c1d58daf5d754e4d52457d11d27d20b83d /srcs
parent1a290f96f26b848a217ee5db3d6d5920c7c38a27 (diff)
downloadunexpected-keyboard-93d58571cc813004d6741489f001c6013cc3b296.tar.gz
unexpected-keyboard-93d58571cc813004d6741489f001c6013cc3b296.zip
Fix overflow due to navigation on the right and cutouts (#641)
Take display cutouts and navigation bars when computing the keyboard width on SDK >= 30.
Diffstat (limited to 'srcs')
-rw-r--r--srcs/juloo.keyboard2/Keyboard2View.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java
index 2eea6ea..36ea2be 100644
--- a/srcs/juloo.keyboard2/Keyboard2View.java
+++ b/srcs/juloo.keyboard2/Keyboard2View.java
@@ -3,6 +3,7 @@ package juloo.keyboard2;
import android.content.Context;
import android.content.ContextWrapper;
import android.graphics.Canvas;
+import android.graphics.Insets;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
@@ -13,6 +14,9 @@ import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
+import android.view.WindowInsets;
+import android.view.WindowManager;
+import android.view.WindowMetrics;
import java.util.Arrays;
public class Keyboard2View extends View
@@ -256,6 +260,17 @@ public class Keyboard2View extends View
int height =
(int)(_config.keyHeight * _keyboard.keysHeight
+ _config.marginTop + _config.margin_bottom);
+ // Compatibility with display cutouts and navigation on the right
+ if (VERSION.SDK_INT >= 30)
+ {
+ WindowMetrics metrics =
+ ((WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE))
+ .getCurrentWindowMetrics();
+ Insets insets = metrics.getWindowInsets().getInsetsIgnoringVisibility(
+ WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()
+ | WindowInsets.Type.displayCutout());
+ width = metrics.getBounds().width() - insets.right - insets.left;
+ }
setMeasuredDimension(width, height);
_keyWidth = (width - (_config.horizontal_margin * 2)) / _keyboard.keysWidth;
}