From a71db1ba563c95e506161da70fb1bc8377396794 Mon Sep 17 00:00:00 2001 From: bhanu-dev82 Date: Wed, 19 Mar 2025 20:19:42 +0530 Subject: [PATCH] Fix color of shift locked state background to mach the key_pressed color also fixed caps_lock key to respect theme --- .../main/java/be/scri/views/KeyboardView.kt | 39 ++++++++----------- .../main/res/drawable/ic_caps_lock_off.xml | 10 ++--- app/src/main/res/drawable/ic_caps_lock_on.xml | 10 ++--- 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/be/scri/views/KeyboardView.kt b/app/src/main/java/be/scri/views/KeyboardView.kt index 628dabccd..1fad7824d 100644 --- a/app/src/main/java/be/scri/views/KeyboardView.kt +++ b/app/src/main/java/be/scri/views/KeyboardView.kt @@ -645,6 +645,10 @@ class KeyboardView } else { R.color.special_key_light } + val pressedColorResId = if (isUserDarkMode) R.color.dark_key_press_color else R.color.light_key_press_color + val pressedColor = resources.getColor(pressedColorResId, context.theme) + val specialKeyColorValue = resources.getColor(mSpecialKeyColor!!, context.theme) + paint.color = mTextColor val keyBackgroundPaint = Paint().apply { @@ -698,25 +702,21 @@ class KeyboardView (key.y + key.height - keyMargin + shadowOffset - padding).toFloat(), ) canvas.drawRoundRect(shadowRect, rectRadius, rectRadius, shadowPaint) + + val backgroundColor = + when { + key.pressed -> pressedColor + code == KEYCODE_SHIFT && mKeyboard!!.mShiftState == SHIFT_LOCKED -> pressedColor + code in listOf(KEYCODE_DELETE, KEYCODE_SHIFT, KEYCODE_MODE_CHANGE) -> specialKeyColorValue + code == KEYCODE_ENTER -> mEnterKeyColor + else -> keyBackgroundColor + } + keyBackgroundPaint.color = backgroundColor canvas.drawRoundRect(keyRect, rectRadius, rectRadius, keyBackgroundPaint) // Switch the character to uppercase if shift is pressed. val label = adjustCase(key.label)?.toString() - if (key.focused || code == KEYCODE_ENTER) { - keyBackgroundPaint.color = Color.DKGRAY - canvas.drawRoundRect(keyRect, rectRadius, rectRadius, keyBackgroundPaint) - keyBackgroundPaint.color = mEnterKeyColor - canvas.drawRoundRect(keyRect, rectRadius, rectRadius, keyBackgroundPaint) - keyBackgroundPaint.color = keyBackgroundColor - } - - if ((code == KEYCODE_DELETE || code == KEYCODE_SHIFT || code == KEYCODE_MODE_CHANGE)) { - keyBackgroundPaint.color = resources.getColor(mSpecialKeyColor!!) - canvas.drawRoundRect(keyRect, rectRadius, rectRadius, keyBackgroundPaint) - keyBackgroundPaint.color = keyBackgroundColor - } - canvas.translate(key.x.toFloat(), key.y.toFloat()) if (label?.isNotEmpty() == true) { // For characters, use large font. For labels like "Done", use small font. @@ -770,6 +770,7 @@ class KeyboardView else -> R.drawable.ic_caps_lock_off } key.icon = resources.getDrawable(drawableId, context.theme) + key.icon!!.applyColorFilter(mTextColor) } if (code == KEYCODE_LEFT_ARROW || code == KEYCODE_RIGHT_ARROW) { @@ -870,16 +871,8 @@ class KeyboardView if (mCurrentKeyIndex != NOT_A_KEY && keys.size > mCurrentKeyIndex) { val newKey = keys[mCurrentKeyIndex] val code = newKey.code - val pressedKeys = - listOf( - KEYCODE_SHIFT, - KEYCODE_MODE_CHANGE, - KEYCODE_DELETE, - KEYCODE_ENTER, - KEYCODE_SPACE, - ) - newKey.pressed = code in pressedKeys + newKey.pressed = true invalidateKey(mCurrentKeyIndex) sendAccessibilityEventForUnicodeCharacter(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED, code) diff --git a/app/src/main/res/drawable/ic_caps_lock_off.xml b/app/src/main/res/drawable/ic_caps_lock_off.xml index 4bb7301d8..45cc36295 100644 --- a/app/src/main/res/drawable/ic_caps_lock_off.xml +++ b/app/src/main/res/drawable/ic_caps_lock_off.xml @@ -6,18 +6,16 @@ android:viewportHeight="960"> + android:pathData="M480,140 l-300,300 M480,140 l300,300" /> - + android:pathData="M180,680 h600" /> diff --git a/app/src/main/res/drawable/ic_caps_lock_on.xml b/app/src/main/res/drawable/ic_caps_lock_on.xml index 9d3c0e44c..591d7e6c0 100644 --- a/app/src/main/res/drawable/ic_caps_lock_on.xml +++ b/app/src/main/res/drawable/ic_caps_lock_on.xml @@ -6,18 +6,18 @@ android:viewportHeight="960"> + android:pathData="M480,140 L180,440 L480,440 L780,440 L480,140Z" /> + android:pathData="M180,680 h600" />