From b4b9f90edca2ef7bb7f113087e8f2a5702766529 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 12 May 2025 19:57:12 +0300 Subject: [PATCH] Improve mouse accessibility --- .../core/ui/widgets/SelectableTextView.kt | 9 ++ .../details/ui/adapter/ChapterGridItemAD.kt | 2 + .../settings/about/AppUpdateActivity.kt | 18 ++-- .../main/res/layout/activity_app_update.xml | 88 +++++++++---------- app/src/main/res/layout/activity_image.xml | 4 +- .../main/res/layout/activity_sync_auth.xml | 1 + app/src/main/res/layout/item_category.xml | 4 +- app/src/main/res/layout/item_color_scheme.xml | 2 +- app/src/main/res/layout/item_download.xml | 3 + app/src/main/res/layout/item_nav_config.xml | 9 +- .../main/res/layout/item_source_catalog.xml | 2 +- .../main/res/layout/item_source_config.xml | 6 +- .../main/res/layout/item_storage_config.xml | 1 + .../main/res/layout/layout_details_table.xml | 1 + .../layout/layout_sheet_header_adaptive.xml | 3 +- app/src/main/res/values/strings.xml | 1 + 16 files changed, 92 insertions(+), 62 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/SelectableTextView.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/SelectableTextView.kt index 41e0f2fc8..cc9913fc9 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/SelectableTextView.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/SelectableTextView.kt @@ -1,11 +1,14 @@ package org.koitharu.kotatsu.core.ui.widgets import android.content.Context +import android.os.Build import android.text.Selection import android.text.Spannable import android.util.AttributeSet import android.view.MotionEvent +import android.view.PointerIcon import androidx.annotation.AttrRes +import androidx.core.view.PointerIconCompat import com.google.android.material.textview.MaterialTextView class SelectableTextView @JvmOverloads constructor( @@ -14,6 +17,12 @@ class SelectableTextView @JvmOverloads constructor( @AttrRes defStyleAttr: Int = android.R.attr.textViewStyle, ) : MaterialTextView(context, attrs, defStyleAttr) { + init { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + pointerIcon = PointerIcon.getSystemIcon(context, PointerIconCompat.TYPE_TEXT) + } + } + override fun dispatchTouchEvent(event: MotionEvent?): Boolean { fixSelectionRange() return super.dispatchTouchEvent(event) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/adapter/ChapterGridItemAD.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/adapter/ChapterGridItemAD.kt index 92e13f385..4bfc7b0d2 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/adapter/ChapterGridItemAD.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/adapter/ChapterGridItemAD.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.details.ui.adapter import android.graphics.Typeface +import androidx.appcompat.widget.TooltipCompat import androidx.core.view.isVisible import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter @@ -22,6 +23,7 @@ fun chapterGridItemAD( bind { payloads -> if (payloads.isEmpty()) { binding.textViewTitle.text = item.chapter.numberString() ?: "?" + TooltipCompat.setTooltipText(itemView, item.chapter.title) } binding.imageViewNew.isVisible = item.isNew binding.imageViewCurrent.isVisible = item.isCurrent diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/about/AppUpdateActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/about/AppUpdateActivity.kt index ecd0d1d78..dd7c41855 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/about/AppUpdateActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/about/AppUpdateActivity.kt @@ -10,12 +10,15 @@ import android.content.IntentFilter import android.os.Build import android.os.Bundle import android.view.View +import android.view.ViewGroup.MarginLayoutParams import android.widget.TextView import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.core.content.ContextCompat import androidx.core.text.buildSpannedString import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams +import androidx.core.view.updatePadding import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint import io.noties.markwon.Markwon @@ -91,12 +94,15 @@ class AppUpdateActivity : BaseActivity(), View.OnClick insets: WindowInsetsCompat ): WindowInsetsCompat { val barsInsets = insets.systemBarsInsets - val basePadding = resources.getDimensionPixelOffset(R.dimen.screen_padding) - viewBinding.root.setPadding( - barsInsets.left + basePadding, - barsInsets.top + basePadding, - barsInsets.right + basePadding, - barsInsets.bottom + basePadding, + viewBinding.root.updatePadding(top = barsInsets.top) + viewBinding.dockedToolbarChild.updateLayoutParams { + leftMargin = barsInsets.left + rightMargin = barsInsets.right + bottomMargin = barsInsets.bottom + } + viewBinding.scrollView.updatePadding( + left = barsInsets.left, + right = barsInsets.right, ) return insets.consumeAllSystemBarsInsets() } diff --git a/app/src/main/res/layout/activity_app_update.xml b/app/src/main/res/layout/activity_app_update.xml index 7d83f7110..84f64f303 100644 --- a/app/src/main/res/layout/activity_app_update.xml +++ b/app/src/main/res/layout/activity_app_update.xml @@ -1,94 +1,92 @@ - + android:orientation="vertical"> + app:drawableTopCompat="@drawable/ic_app_update" /> + android:layout_marginTop="@dimen/screen_padding" + android:layout_weight="1"> - + android:fitsSystemWindows="false"> - + - +