diff options
author | Po Lu <luangruo@yahoo.com> | 2022-04-11 07:45:37 +0000 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2022-04-11 07:45:37 +0000 |
commit | 7140b1e82d7d20c59ee8e0d7a47f6608cb60cb0c (patch) | |
tree | be3738a9dcb0cd33cc028567923254db3169be1b | |
parent | a6bfc3cb87e91d37e0a7b67e9c68224fb432c989 (diff) | |
download | emacs-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.c | 11 |
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); |