|
@@ -71,30 +71,18 @@ open class MyKMPDFContextMenuCallback(private val kmpdfFactory: KMPDFFactory?) :
|
|
|
}
|
|
|
popupWindow?.isOutsideTouchable = false
|
|
|
popupWindow?.isFocusable = false
|
|
|
- showPopupWindow(view, position)
|
|
|
+ tryToShowPopupWindow(view, position)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private fun showPopupWindow(view: View, position: Point) {
|
|
|
+ private fun tryToShowPopupWindow(view: View, position: Point) {
|
|
|
if (null != view.windowToken) {
|
|
|
- view.post {
|
|
|
- try {
|
|
|
- popupWindow?.showAtLocation(view, Gravity.LEFT or Gravity.TOP, position.x, position.y)
|
|
|
- } catch (e: Exception) {
|
|
|
- e.printStackTrace()
|
|
|
- }
|
|
|
- }
|
|
|
+ showPopupWindow(view, position)
|
|
|
} else {
|
|
|
view.addOnAttachStateChangeListener(object: View.OnAttachStateChangeListener {
|
|
|
override fun onViewAttachedToWindow(view: View) {
|
|
|
if (null != view.windowToken) {
|
|
|
- view.post {
|
|
|
- try {
|
|
|
- popupWindow?.showAtLocation(view, Gravity.LEFT or Gravity.TOP, position.x, position.y)
|
|
|
- } catch (e: Exception) {
|
|
|
- e.printStackTrace()
|
|
|
- }
|
|
|
- }
|
|
|
+ showPopupWindow(view, position)
|
|
|
view.removeOnAttachStateChangeListener(this)
|
|
|
}
|
|
|
}
|
|
@@ -105,6 +93,16 @@ open class MyKMPDFContextMenuCallback(private val kmpdfFactory: KMPDFFactory?) :
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private fun showPopupWindow(view: View, position: Point) {
|
|
|
+ view.post {
|
|
|
+ try {
|
|
|
+ popupWindow?.showAtLocation(view, Gravity.LEFT or Gravity.TOP, position.x, position.y)
|
|
|
+ } catch (e: Exception) {
|
|
|
+ e.printStackTrace()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private fun computeDisplayPosition(context: Context, type: KMPDFContextMenuCallback.ContextMenuType?, view: View, contentView: View): Point {
|
|
|
// get the size of context menu
|
|
|
contentView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED)
|