]> git.eshelyaron.com Git - emacs.git/commitdiff
Always cascade from toplevel frames on Haiku
authorPo Lu <luangruo@yahoo.com>
Mon, 11 Apr 2022 07:45:37 +0000 (07:45 +0000)
committerPo Lu <luangruo@yahoo.com>
Mon, 11 Apr 2022 07:45:37 +0000 (07:45 +0000)
* 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.

src/haikufns.c

index 767f555317cc0e4d2e110e28f7c3c5178a169083..ef95d42f0f14a66a9b1937aaa3dbe08e4b8c256c 100644 (file)
@@ -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);