cooperku_kdanmobile 5 rokov pred
rodič
commit
241194bc3d

+ 14 - 16
src/main/java/com/kdanmobile/reader/screen/contextmenu/MyKMPDFContextMenuCallback.kt

@@ -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)