summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsView.java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2025-02-19 20:40:12 +0800
committerPo Lu <luangruo@yahoo.com>2025-02-19 20:40:12 +0800
commitded77feffface0c167edacf0d807273f3d4878db (patch)
tree7849fa1827ed2ad92420d5e43589a8a43d0eaca9 /java/org/gnu/emacs/EmacsView.java
parente97be722d392056b6ef9e47664273ee2ca7df374 (diff)
Fix remaining Android bugs reported over the past months
* java/org/gnu/emacs/EmacsActivity.java (attachWindow): Guarantee that child windows promoted to toplevels receive layout parameters that direct them to receive their parents' dimensions. Otherwise, the size of the window as a child is retained on Huawei HarmonyOS 4.2 and possibly other Android distributions. * java/org/gnu/emacs/EmacsService.java (updateCursorAnchorInfo): Run anchor updates on the UI thread, as `InputMethodManager#updateCursorAnchorInfo' is liable to call `View#requestLayout'. * java/org/gnu/emacs/EmacsView.java (onMeasure): Always call `measureChildren', or child frames' onLayout handlers might not be invoked after they request a layout cycle and are duly processed in `onLayout'. (swapBuffers): Delete erroneous commentary. * java/org/gnu/emacs/EmacsWindow.java (viewLayout): If overrideRedirect, don't inadvertently clear rect.left and rect.top by recording the window's WM window-relative position. Fix typos. (reparentTo): Invalidate focus after transferring frame. (translateCoordinates): Account for override-redirect windows. Mostly important for mouse-drag-and-drop-region.
Diffstat (limited to 'java/org/gnu/emacs/EmacsView.java')
-rw-r--r--java/org/gnu/emacs/EmacsView.java9
1 files changed, 4 insertions, 5 deletions
diff --git a/java/org/gnu/emacs/EmacsView.java b/java/org/gnu/emacs/EmacsView.java
index 8af76c73937..5abea711506 100644
--- a/java/org/gnu/emacs/EmacsView.java
+++ b/java/org/gnu/emacs/EmacsView.java
@@ -296,6 +296,9 @@ public final class EmacsView extends ViewGroup
&& height > MeasureSpec.getSize (heightMeasureSpec))
height = MeasureSpec.getSize (heightMeasureSpec);
+ /* This is strictly necessary to propagate layout requests to
+ children. */
+ this.measureChildren (widthMeasureSpec, heightMeasureSpec);
super.setMeasuredDimension (width, height);
}
@@ -467,9 +470,6 @@ public final class EmacsView extends ViewGroup
}
}
- /* This method is called from both the UI thread and the Emacs
- thread. */
-
public void
swapBuffers ()
{
@@ -620,8 +620,7 @@ public final class EmacsView extends ViewGroup
detachViewFromParent (index);
/* The view at 0 is the surface view. */
- attachViewToParent (child, 1,
- child.getLayoutParams ());
+ attachViewToParent (child, 1, child.getLayoutParams ());
}
}