summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-04-11 07:45:37 +0000
committerPo Lu <luangruo@yahoo.com>2022-04-11 07:45:37 +0000
commit7140b1e82d7d20c59ee8e0d7a47f6608cb60cb0c (patch)
treebe3738a9dcb0cd33cc028567923254db3169be1b
parenta6bfc3cb87e91d37e0a7b67e9c68224fb432c989 (diff)
downloademacs-7140b1e82d7d20c59ee8e0d7a47f6608cb60cb0c.tar.gz
Always cascade from toplevel frames on Haiku
* src/haikufns.c (haiku_create_frame): Cascade from toplevel frames, since otherwise the positions are wrong anyway, and it doesn't make sense to cascade from a frame that disappears when it becomes deactivated.
-rw-r--r--src/haikufns.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/haikufns.c b/src/haikufns.c
index 767f555317c..ef95d42f0f1 100644
--- a/src/haikufns.c
+++ b/src/haikufns.c
@@ -582,6 +582,11 @@ haiku_create_frame (Lisp_Object parms)
else
cascade_target = NULL;
+ /* Always cascade from the most toplevel frame. */
+
+ while (cascade_target && FRAME_PARENT_FRAME (cascade_target))
+ cascade_target = FRAME_PARENT_FRAME (cascade_target);
+
parms = Fcopy_alist (parms);
Vx_resource_name = Vinvocation_name;
@@ -624,6 +629,7 @@ haiku_create_frame (Lisp_Object parms)
f = make_frame_without_minibuffer (tem, kb, display);
else
f = make_frame (1);
+
XSETFRAME (frame, f);
f->terminal = dpyinfo->terminal;
@@ -810,6 +816,11 @@ haiku_create_frame (Lisp_Object parms)
|| !FRAME_LIVE_P (XFRAME (parent_frame)))
parent_frame = Qnil;
+ /* It doesn't make sense to center child frames, the resulting
+ position makes no sense. */
+ if (!NILP (parent_frame))
+ window_prompting |= PPosition;
+
fset_parent_frame (f, parent_frame);
store_frame_param (f, Qparent_frame, parent_frame);