diff src/xfns.c @ 91633:e33a0659fabe

(Fx_create_frame): Do not override the explicitly set parent window ID of a frame. (x_window): Reparent frame if embedded. (Fx_create_frame): Don't set border width if embedded.
author Jan Djärv <jan.h.d@swipnet.se>
date Thu, 07 Feb 2008 14:08:07 +0000
parents 606f2d163a64
children 153651069fb2
line wrap: on
line diff
--- a/src/xfns.c	Thu Feb 07 14:07:55 2008 +0000
+++ b/src/xfns.c	Thu Feb 07 14:08:07 2008 +0000
@@ -2720,6 +2720,10 @@
   XtManageChild (pane_widget);
   XtRealizeWidget (shell_widget);
 
+  if (FRAME_X_EMBEDDED_P (f))
+    XReparentWindow (FRAME_X_DISPLAY (f), XtWindow (shell_widget),
+		     f->output_data.x->parent_desc, 0, 0);
+
   FRAME_X_WINDOW (f) = XtWindow (frame_widget);
 
   validate_x_resource_name ();
@@ -3459,8 +3463,10 @@
   xlwmenu_default_font = FRAME_FONT (f);
 #endif
 
-  x_default_parameter (f, parms, Qborder_width, make_number (2),
-		       "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
+  /* Frame contents get displaced if an embedded X window has a border.  */
+  if (! FRAME_X_EMBEDDED_P (f))
+    x_default_parameter (f, parms, Qborder_width, make_number (2),
+			 "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
 
   /* This defaults to 1 in order to match xterm.  We recognize either
      internalBorderWidth or internalBorder (which is what xterm calls
@@ -3531,8 +3537,6 @@
   x_default_parameter (f, parms, Qfullscreen, Qnil,
                        "fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
 
-  f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
-
   /* Compute the size of the X window.  */
   window_prompting = x_figure_window_size (f, parms, 1);