Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class PdfRendererView @JvmOverloads constructor(

var zoomListener: ZoomListener? = null
var statusListener: StatusCallBack? = null
var tapListener: TapListener? = null

//region Public APIs
fun isZoomedIn(): Boolean = this::recyclerView.isInitialized && recyclerView.isZoomedIn()
Expand Down Expand Up @@ -262,6 +263,10 @@ class PdfRendererView @JvmOverloads constructor(
zoomListener?.onZoomChanged(isZoomedIn, scale)
}

recyclerView.setOnTapListener {
tapListener?.onTap()
}

recyclerView.post {
postInitializationAction?.invoke()
statusListener?.onPdfRenderSuccess()
Expand Down Expand Up @@ -489,4 +494,8 @@ class PdfRendererView @JvmOverloads constructor(
interface ZoomListener {
fun onZoomChanged(isZoomedIn: Boolean, scale: Float)
}

fun interface TapListener {
fun onTap()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class PinchZoomRecyclerView @JvmOverloads constructor(
private var posY = 0f

private var zoomChangeListener: ((Boolean, Float) -> Unit)? = null
private var tapListener: PdfRendererView.TapListener? = null

private var anchorScale = 1f
private var anchorFocusY = 0f
Expand All @@ -61,6 +62,10 @@ class PinchZoomRecyclerView @JvmOverloads constructor(
zoomChangeListener = listener
}

fun setOnTapListener(listener: PdfRendererView.TapListener) {
tapListener = listener
}

/**
* Handles touch interactions — zoom, pan, and scroll.
*/
Expand Down Expand Up @@ -291,6 +296,10 @@ class PinchZoomRecyclerView @JvmOverloads constructor(
* GestureListener handles double-tap zoom.
*/
private inner class GestureListener : GestureDetector.SimpleOnGestureListener() {
override fun onSingleTapUp(e: MotionEvent): Boolean {
tapListener?.onTap()
return true
}
override fun onDoubleTap(e: MotionEvent): Boolean {
if (!isZoomEnabled) return false

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ fun PdfRendererViewCompose(
statusCallBack: PdfRendererView.StatusCallBack? = null,
zoomListener: PdfRendererView.ZoomListener? = null,
onReady: ((PdfRendererView) -> Unit)? = null,
tapListener: PdfRendererView.TapListener? = null
) {
val context = LocalContext.current
val pdfViewRef = remember { mutableStateOf<PdfRendererView?>(null) }
Expand Down Expand Up @@ -83,12 +84,14 @@ fun PdfRendererViewCompose(
PdfRendererView(ctx).also { view ->
view.statusListener = combinedCallback
view.zoomListener = zoomListener
view.tapListener = tapListener
pdfViewRef.value = view
}
},
update = { view ->
view.statusListener = combinedCallback
view.zoomListener = zoomListener
view.tapListener = tapListener

if (!hasInit) {
when {
Expand Down