aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/haikufns.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/haikufns.c b/src/haikufns.c
index 545edb27ae0..24e4613e3ee 100644
--- a/src/haikufns.c
+++ b/src/haikufns.c
@@ -565,7 +565,7 @@ unwind_popup (void)
565static Lisp_Object 565static Lisp_Object
566haiku_create_frame (Lisp_Object parms) 566haiku_create_frame (Lisp_Object parms)
567{ 567{
568 struct frame *f; 568 struct frame *f, *cascade_target;
569 Lisp_Object frame, tem; 569 Lisp_Object frame, tem;
570 Lisp_Object name; 570 Lisp_Object name;
571 bool minibuffer_only = false; 571 bool minibuffer_only = false;
@@ -575,6 +575,13 @@ haiku_create_frame (Lisp_Object parms)
575 struct haiku_display_info *dpyinfo = NULL; 575 struct haiku_display_info *dpyinfo = NULL;
576 struct kboard *kb; 576 struct kboard *kb;
577 577
578 if (x_display_list->focused_frame)
579 cascade_target = x_display_list->focused_frame;
580 else if (x_display_list->focus_event_frame)
581 cascade_target = x_display_list->focus_event_frame;
582 else
583 cascade_target = NULL;
584
578 parms = Fcopy_alist (parms); 585 parms = Fcopy_alist (parms);
579 586
580 Vx_resource_name = Vinvocation_name; 587 Vx_resource_name = Vinvocation_name;
@@ -888,6 +895,9 @@ haiku_create_frame (Lisp_Object parms)
888 block_input (); 895 block_input ();
889 if (window_prompting & (USPosition | PPosition)) 896 if (window_prompting & (USPosition | PPosition))
890 haiku_set_offset (f, f->left_pos, f->top_pos, 1); 897 haiku_set_offset (f, f->left_pos, f->top_pos, 1);
898 else if (cascade_target)
899 haiku_set_offset (f, cascade_target->left_pos + 15,
900 cascade_target->top_pos + 15, 1);
891 else 901 else
892 BWindow_center_on_screen (FRAME_HAIKU_WINDOW (f)); 902 BWindow_center_on_screen (FRAME_HAIKU_WINDOW (f));
893 unblock_input (); 903 unblock_input ();