From 4c668ab1058138d81f799dffc8be5d294769709c Mon Sep 17 00:00:00 2001 From: ilia Date: Wed, 5 Aug 2026 14:14:47 -0400 Subject: [PATCH] Lighten draw scrim and cover the full screen Draw mode was inset under status/nav (bright bands) and too dark to read. --- CHANGELOG.md | 5 +++++ app/build.gradle.kts | 4 ++-- .../accessibility/CrklAccessibilityService.kt | 18 +++++++++++------- .../example/crkl/accessibility/OverlayView.kt | 13 ++++++++++--- .../main/kotlin/com/example/crkl/ui/CrklUi.kt | 3 ++- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e12a1cb..aa46659 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 1.16.4-light-scrim — 2026-08-05 + +- Draw mode scrim covers the full screen (was inset under status/nav) +- Lighter dim so underlying text stays readable + ## 1.16.3-tight-select — 2026-08-05 - Fix: circling a short heading no longer steals the large text block above it diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1aedd4f..9f6b6d6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,8 +11,8 @@ android { applicationId = "com.example.crkl" minSdk = 27 targetSdk = 34 - versionCode = 20 - versionName = "1.16.3-tight-select" + versionCode = 21 + versionName = "1.16.4-light-scrim" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/kotlin/com/example/crkl/accessibility/CrklAccessibilityService.kt b/app/src/main/kotlin/com/example/crkl/accessibility/CrklAccessibilityService.kt index 3b9deeb..a6d16d2 100644 --- a/app/src/main/kotlin/com/example/crkl/accessibility/CrklAccessibilityService.kt +++ b/app/src/main/kotlin/com/example/crkl/accessibility/CrklAccessibilityService.kt @@ -159,21 +159,25 @@ class CrklAccessibilityService : AccessibilityService() { } private fun fullScreenParams(): WindowManager.LayoutParams { - val metrics = resources.displayMetrics - val nav = navigationBarHeight() - val status = statusBarHeight() - val height = (metrics.heightPixels - nav - status).coerceAtLeast(dp(200)) + // True full-bleed — previous inset for status/nav left a bright band + // at the top (and bottom) that made draw mode look broken. return WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, - height, + WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or - WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, + WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or + WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN or + WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, PixelFormat.TRANSLUCENT ).apply { gravity = Gravity.TOP or Gravity.START x = 0 - y = status + y = 0 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + layoutInDisplayCutoutMode = + WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES + } } } diff --git a/app/src/main/kotlin/com/example/crkl/accessibility/OverlayView.kt b/app/src/main/kotlin/com/example/crkl/accessibility/OverlayView.kt index 561ef9b..f4f86a6 100644 --- a/app/src/main/kotlin/com/example/crkl/accessibility/OverlayView.kt +++ b/app/src/main/kotlin/com/example/crkl/accessibility/OverlayView.kt @@ -255,7 +255,13 @@ class OverlayView( val pad = dp(16f) val w = dp(88f) val h = dp(36f) - exitRect.set(width - pad - w, pad, width - pad, pad + h) + val top = statusBarInset() + pad + exitRect.set(width - pad - w, top, width - pad, top + h) + } + + private fun statusBarInset(): Float { + val id = resources.getIdentifier("status_bar_height", "dimen", "android") + return if (id > 0) resources.getDimension(id) else dp(24f) } private fun toScreenBounds(local: RectF): RectF { @@ -323,11 +329,12 @@ class OverlayView( val failing = System.currentTimeMillis() < failFlashUntil val pillW = dp(280f) val pillH = dp(38f) + val pillTop = statusBarInset() + dp(12f) val pill = RectF( width / 2f - pillW / 2f, - dp(52f), + pillTop, width / 2f + pillW / 2f, - dp(52f) + pillH + pillTop + pillH ) canvas.drawRoundRect(pill, dp(19f), dp(19f), hintPillPaint) canvas.drawRoundRect(pill, dp(19f), dp(19f), hintRingPaint) diff --git a/app/src/main/kotlin/com/example/crkl/ui/CrklUi.kt b/app/src/main/kotlin/com/example/crkl/ui/CrklUi.kt index ea58dc5..95da76c 100644 --- a/app/src/main/kotlin/com/example/crkl/ui/CrklUi.kt +++ b/app/src/main/kotlin/com/example/crkl/ui/CrklUi.kt @@ -16,7 +16,8 @@ object CrklUi { val Mist = Color.parseColor("#6B7A88") val MistLight = Color.parseColor("#9AA6B2") val Hairline = Color.parseColor("#1A0E1A24") - val Dim = Color.argb(140, 8, 14, 20) + /** Scrim while drawing — light enough to read underlying text. */ + val Dim = Color.argb(56, 8, 14, 20) val Danger = Color.parseColor("#B85A4A") val Ok = Color.parseColor("#2A7A4B") val ChipFg = Color.parseColor("#FFFFFF") -- 2.49.1