Skip to content

Commit 78e592e

Browse files
committed
fix: wrap disassembly list in Box to isolate horizontal scroll (#348)
Previously, horizontalScroll modifier was applied directly on InfiniteList (which wraps a LazyColumn). This caused the horizontal scroll gesture to compete with the vertical LazyColumn scroll, resulting in accidental horizontal movement when users slightly tilted their finger while scrolling vertically. Fix: Wrap InfiniteList in a Box that owns horizontal scroll, while InfiniteList/LazyColumn owns only vertical scroll. This ensures vertical scroll takes priority over horizontal, eliminating accidental tab/scroll switching. Fixes #348
1 parent c3a3d43 commit 78e592e

1 file changed

Lines changed: 18 additions & 14 deletions

File tree

app/src/main/java/com/kyhsgeekcode/disassembler/ui/tabs/BinaryDisasmTab.kt

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ import android.util.LongSparseArray
44
import android.util.SparseArray
55
import androidx.activity.compose.BackHandler
66
import androidx.compose.foundation.*
7-
import androidx.compose.foundation.layout.IntrinsicSize
8-
import androidx.compose.foundation.layout.Row
9-
import androidx.compose.foundation.layout.height
10-
import androidx.compose.foundation.layout.width
7+
import androidx.compose.foundation.layout.*
118
import androidx.compose.foundation.lazy.LazyListState
129
import androidx.compose.runtime.*
1310
import androidx.compose.runtime.saveable.rememberSaveable
@@ -203,16 +200,23 @@ fun BinaryDisasmTabContent(
203200
val currentAddress = disasmData.currentAddress.collectAsState()
204201
val showDisasmClickMenu = disasmData.showDisasmClickMenu.collectAsState()
205202
val showCommentEditDialog = disasmData.showCommentEditDialog.collectAsState()
206-
InfiniteList(onLoadMore = { firstVisibleItemIndex, lastVisibleItemIndex ->
207-
disasmData.setCurrentAddressByFirstItemIndex(firstVisibleItemIndex)
208-
disasmData.loadMore(lastVisibleItemIndex)
209-
}, modifier = Modifier.horizontalScroll(rememberScrollState()), listState = listState) {
210-
211-
stickyHeader {
212-
BinaryDisasmHeader(disasmData)
213-
}
214-
items(count.value) { position ->
215-
BinaryDisasmRow(disasmData.getItem(position), disasmData, currentAddress.value)
203+
val scrollState = rememberScrollState()
204+
Box(
205+
modifier = Modifier
206+
.fillMaxSize()
207+
.horizontalScroll(scrollState)
208+
) {
209+
InfiniteList(onLoadMore = { firstVisibleItemIndex, lastVisibleItemIndex ->
210+
disasmData.setCurrentAddressByFirstItemIndex(firstVisibleItemIndex)
211+
disasmData.loadMore(lastVisibleItemIndex)
212+
}, modifier = Modifier.fillMaxWidth(), listState = listState) {
213+
214+
stickyHeader {
215+
BinaryDisasmHeader(disasmData)
216+
}
217+
items(count.value) { position ->
218+
BinaryDisasmRow(disasmData.getItem(position), disasmData, currentAddress.value)
219+
}
216220
}
217221
}
218222

0 commit comments

Comments
 (0)