From 886399565c3868a9015fc93c96484513dcd167fd Mon Sep 17 00:00:00 2001 From: David Kramer Date: Thu, 2 Sep 2021 18:32:24 -0500 Subject: [PATCH] Fixed: Fix bubble outline being cut off --- .../com/termux/window/FloatingBubbleManager.java | 13 ++++++++++++- app/src/main/res/drawable/round_button.xml | 8 -------- .../main/res/drawable/round_button_with_outline.xml | 2 +- app/src/main/res/values/dimens.xml | 4 ++++ 4 files changed, 17 insertions(+), 10 deletions(-) delete mode 100644 app/src/main/res/drawable/round_button.xml create mode 100644 app/src/main/res/values/dimens.xml diff --git a/app/src/main/java/com/termux/window/FloatingBubbleManager.java b/app/src/main/java/com/termux/window/FloatingBubbleManager.java index ed49bf0..ae30b39 100644 --- a/app/src/main/java/com/termux/window/FloatingBubbleManager.java +++ b/app/src/main/java/com/termux/window/FloatingBubbleManager.java @@ -1,8 +1,10 @@ package com.termux.window; +import android.graphics.Outline; import android.graphics.drawable.Drawable; import android.view.View; import android.view.ViewGroup; +import android.view.ViewOutlineProvider; import android.view.WindowManager; import com.termux.shared.view.ViewUtils; @@ -57,7 +59,15 @@ public void displayAsFloatingBubble() { layoutParams.height = BUBBLE_SIZE_PX; TerminalView terminalView = getTerminalView(); - terminalView.setBackgroundResource(R.drawable.round_button); + final int strokeWidth = (int) terminalView.getResources().getDimension(R.dimen.bubble_outline_stroke_width); + terminalView.setOutlineProvider(new ViewOutlineProvider() { + @SuppressWarnings("SuspiciousNameCombination") + @Override + public void getOutline(View view, Outline outline) { + // shrink TerminalView clipping a bit so it doesn't cut off our bubble outline + outline.setOval(strokeWidth, strokeWidth, view.getWidth() - strokeWidth, view.getHeight() - strokeWidth); + } + }); terminalView.setClipToOutline(true); TermuxFloatView termuxFloatView = getTermuxFloatView(); @@ -82,6 +92,7 @@ public void displayAsFloatingWindow() { TerminalView terminalView = getTerminalView(); terminalView.setBackground(mOriginalTerminalViewBackground); + terminalView.setOutlineProvider(null); terminalView.setClipToOutline(false); TermuxFloatView termuxFloatView = getTermuxFloatView(); diff --git a/app/src/main/res/drawable/round_button.xml b/app/src/main/res/drawable/round_button.xml deleted file mode 100644 index c5f59c9..0000000 --- a/app/src/main/res/drawable/round_button.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/round_button_with_outline.xml b/app/src/main/res/drawable/round_button_with_outline.xml index 0a14446..79b8df4 100644 --- a/app/src/main/res/drawable/round_button_with_outline.xml +++ b/app/src/main/res/drawable/round_button_with_outline.xml @@ -4,7 +4,7 @@ + android:width="@dimen/bubble_outline_stroke_width" /> \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..289703c --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,4 @@ + + + 1dp + \ No newline at end of file