emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 0adb2d507c: Implement frame cascading on Haiku


From: Po Lu
Subject: master 0adb2d507c: Implement frame cascading on Haiku
Date: Sun, 6 Mar 2022 02:15:54 -0500 (EST)

branch: master
commit 0adb2d507cdf386f2cc8b4fb6c5bfc953fec42e8
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Implement frame cascading on Haiku
    
    * haikufns.c (haiku_create_frame): Cascade frame position with
    the focused frame if position is not user or programmer
    specified.
---
 src/haikufns.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/haikufns.c b/src/haikufns.c
index 545edb27ae..24e4613e3e 100644
--- a/src/haikufns.c
+++ b/src/haikufns.c
@@ -565,7 +565,7 @@ unwind_popup (void)
 static Lisp_Object
 haiku_create_frame (Lisp_Object parms)
 {
-  struct frame *f;
+  struct frame *f, *cascade_target;
   Lisp_Object frame, tem;
   Lisp_Object name;
   bool minibuffer_only = false;
@@ -575,6 +575,13 @@ haiku_create_frame (Lisp_Object parms)
   struct haiku_display_info *dpyinfo = NULL;
   struct kboard *kb;
 
+  if (x_display_list->focused_frame)
+    cascade_target = x_display_list->focused_frame;
+  else if (x_display_list->focus_event_frame)
+    cascade_target = x_display_list->focus_event_frame;
+  else
+    cascade_target = NULL;
+
   parms = Fcopy_alist (parms);
 
   Vx_resource_name = Vinvocation_name;
@@ -888,6 +895,9 @@ haiku_create_frame (Lisp_Object parms)
   block_input ();
   if (window_prompting & (USPosition | PPosition))
     haiku_set_offset (f, f->left_pos, f->top_pos, 1);
+  else if (cascade_target)
+    haiku_set_offset (f, cascade_target->left_pos + 15,
+                     cascade_target->top_pos + 15, 1);
   else
     BWindow_center_on_screen (FRAME_HAIKU_WINDOW (f));
   unblock_input ();



reply via email to

[Prev in Thread] Current Thread [Next in Thread]