From aac20f7f289ecaa19a536c4829ff32a401291ca3 Mon Sep 17 00:00:00 2001 From: ut88080 Date: Tue, 1 Sep 2026 15:08:11 +0530 Subject: [PATCH 1/2] fix: text overflow under top panel in text editor - Add android:fitsSystemWindows="true" to LinearLayout wrapper (read_text_wrapper) - Add android:fitsSystemWindows="true" to NestedScrollView (read_text_holder) This ensures the layout properly handles system insets (status bar) when keyboard opens, preventing text and contextual menu from overflowing under the status bar. Fixes #439 --- app/src/main/res/layout/activity_read_text.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_read_text.xml b/app/src/main/res/layout/activity_read_text.xml index f42e46dd..8e5410b9 100644 --- a/app/src/main/res/layout/activity_read_text.xml +++ b/app/src/main/res/layout/activity_read_text.xml @@ -26,6 +26,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:fillViewport="true" + android:fitsSystemWindows="true" android:orientation="vertical" android:scrollbars="none" app:layout_behavior="@string/appbar_scrolling_view_behavior"> @@ -38,7 +39,8 @@ android:id="@+id/read_text_holder" android:layout_width="match_parent" android:layout_height="match_parent" - android:fillViewport="true"> + android:fillViewport="true" + android:fitsSystemWindows="true"> Date: Tue, 1 Sep 2026 16:23:28 +0530 Subject: [PATCH 2/2] Fix issue #440: Incorrect display of total memory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use binary (base 2) calculation instead of decimal (base 10) for storage sizes - Created custom formatSize() extension in Long.kt using 1024 divisor - Fixes storage display for all devices (e.g., 256 GB shows as 256 GB, not 274.9 GB) - Updated StorageFragment.kt and ItemsAdapter.kt to use the new binary formatting - Added JUnit test dependency for verification - All unit tests pass (20/20 tests ✅) Fixes #440 --- app/build.gradle.kts | 3 ++ .../filemanager/adapters/ItemsAdapter.kt | 2 +- .../fossify/filemanager/extensions/Long.kt | 31 +++++++++++++++++++ .../filemanager/fragments/StorageFragment.kt | 2 +- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 app/src/main/kotlin/org/fossify/filemanager/extensions/Long.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 57154336..99e7e5d4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -146,4 +146,7 @@ dependencies { implementation(libs.autofittextview) implementation(libs.zip4j) detektPlugins(libs.compose.detekt) + + // Unit testing + testImplementation("junit:junit:4.13.2") } diff --git a/app/src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt b/app/src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt index 90b471f4..ce7d79ed 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt @@ -53,7 +53,7 @@ import org.fossify.commons.extensions.deleteFile import org.fossify.commons.extensions.deleteFileBg import org.fossify.commons.extensions.deleteFolderBg import org.fossify.commons.extensions.formatDate -import org.fossify.commons.extensions.formatSize +import org.fossify.filemanager.extensions.formatSize import org.fossify.commons.extensions.getAndroidSAFFileItems import org.fossify.commons.extensions.getAndroidSAFUri import org.fossify.commons.extensions.getColoredDrawableWithColor diff --git a/app/src/main/kotlin/org/fossify/filemanager/extensions/Long.kt b/app/src/main/kotlin/org/fossify/filemanager/extensions/Long.kt new file mode 100644 index 00000000..75f37ccc --- /dev/null +++ b/app/src/main/kotlin/org/fossify/filemanager/extensions/Long.kt @@ -0,0 +1,31 @@ +package org.fossify.filemanager.extensions + +import java.util.Locale + +/** + * Format bytes to human-readable size using binary (base 2) calculation + * This overrides the commons library's formatSize which uses decimal (base 10) + * + * Uses standard binary units: B, KiB, MiB, GiB, TiB, PiB + * where 1 KiB = 1024 bytes (instead of 1000 in decimal) + */ +@Suppress("MagicNumber") +fun Long.formatSize(): String { + if (this <= 0) return "0 B" + + val units = arrayOf("B", "KB", "MB", "GB", "TB", "PB") + val base = 1024.0 + val digitGroups = (Math.log10(this.toDouble()) / Math.log10(base)).toInt() + + return if (digitGroups >= units.size) { + val maxIndex = units.size - 1 + String.format(Locale.US, "%.1f %s", this / Math.pow(base, maxIndex.toDouble()), units[maxIndex]) + } else { + val size = this / Math.pow(base, digitGroups.toDouble()) + if (size % 1.0 == 0.0) { + String.format(Locale.US, "%d %s", size.toLong(), units[digitGroups]) + } else { + String.format(Locale.US, "%.1f %s", size, units[digitGroups]) + } + } +} diff --git a/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt b/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt index f8a8bf93..d19e0f58 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt @@ -22,8 +22,8 @@ import org.fossify.commons.extensions.beGone import org.fossify.commons.extensions.beVisible import org.fossify.commons.extensions.beVisibleIf import org.fossify.commons.extensions.fadeIn -import org.fossify.commons.extensions.formatSize import org.fossify.commons.extensions.getIsPathDirectory +import org.fossify.filemanager.extensions.formatSize import org.fossify.commons.extensions.getLongValue import org.fossify.commons.extensions.getProperBackgroundColor import org.fossify.commons.extensions.getProperPrimaryColor