diff src/window.c @ 255:084402c475ba r20-5b26

Import from CVS: tag r20-5b26
author cvs
date Mon, 13 Aug 2007 10:21:18 +0200
parents 677f6a0ee643
children 65c19d2020f7
line wrap: on
line diff
--- a/src/window.c	Mon Aug 13 10:20:29 2007 +0200
+++ b/src/window.c	Mon Aug 13 10:21:18 2007 +0200
@@ -4481,6 +4481,32 @@
   int prev_index;             /* index into saved_windows */
   Lisp_Object dedicated;
   char start_at_line_beg; /* boolean */
+  Lisp_Object display_table;
+  Lisp_Object modeline_shadow_thickness;
+  Lisp_Object has_modeline_p;
+#ifdef HAVE_SCROLLBARS
+  Lisp_Object scrollbar_width;
+  Lisp_Object scrollbar_height;
+  Lisp_Object scrollbar_pointer;
+#endif /* HAVE_SCROLLBARS */
+#ifdef HAVE_TOOLBARS
+  Lisp_Object toolbar[4];
+  Lisp_Object toolbar_size[4];
+  Lisp_Object toolbar_border_width[4];
+  Lisp_Object toolbar_visible_p[4];
+  Lisp_Object toolbar_buttons_captioned_p;
+  Lisp_Object default_toolbar;
+  Lisp_Object default_toolbar_width, default_toolbar_height;
+  Lisp_Object default_toolbar_visible_p;
+  Lisp_Object default_toolbar_border_width;
+#endif /* HAVE_TOOLBARS */
+  Lisp_Object left_margin_width, right_margin_width;
+  Lisp_Object minimum_line_ascent, minimum_line_descent;
+  Lisp_Object use_left_overflow, use_right_overflow;
+#ifdef HAVE_MENUBARS
+  Lisp_Object menubar_visible_p;
+#endif /* HAVE_MENUBARS */
+  Lisp_Object text_cursor_visible_p;
 };
 
 /* If you add anything to this structure make sure window_config_equal
@@ -4595,7 +4621,49 @@
     win1->parent_index == win2->parent_index &&
     win1->prev_index   == win2->prev_index &&
     EQ (win1->dedicated, win2->dedicated) &&
-    win1->start_at_line_beg == win2->start_at_line_beg;
+    win1->start_at_line_beg == win2->start_at_line_beg &&
+    internal_equal(win1->display_table, win2->display_table, 0) &&
+    EQ(win1->modeline_shadow_thickness, win2->modeline_shadow_thickness) &&
+    EQ(win1->has_modeline_p, win2->has_modeline_p) &&
+#ifdef HAVE_SCROLLBARS
+    EQ(win1->scrollbar_width, win2->scrollbar_width) &&
+    EQ(win1->scrollbar_height, win2->scrollbar_height) &&
+    EQ(win1->scrollbar_pointer, win2->scrollbar_pointer) &&
+#endif /* HAVE_SCROLLBARS */
+#ifdef HAVE_TOOLBARS
+    internal_equal(win1->toolbar[0], win2->toolbar[0], 0) &&
+    internal_equal(win1->toolbar[1], win2->toolbar[1], 0) &&
+    internal_equal(win1->toolbar[2], win2->toolbar[2], 0) &&
+    internal_equal(win1->toolbar[3], win2->toolbar[3], 0) &&
+    internal_equal(win1->toolbar_border_width[0], win2->toolbar_border_width[0], 0) &&
+    internal_equal(win1->toolbar_border_width[1], win2->toolbar_border_width[1], 0) &&
+    internal_equal(win1->toolbar_border_width[2], win2->toolbar_border_width[2], 0) &&
+    internal_equal(win1->toolbar_border_width[3], win2->toolbar_border_width[3], 0) &&
+    internal_equal(win1->toolbar_size[0], win2->toolbar_size[0], 0) &&
+    internal_equal(win1->toolbar_size[1], win2->toolbar_size[1], 0) &&
+    internal_equal(win1->toolbar_size[2], win2->toolbar_size[2], 0) &&
+    internal_equal(win1->toolbar_size[3], win2->toolbar_size[3], 0) &&
+    internal_equal(win1->toolbar_visible_p[0], win2->toolbar_visible_p[0], 0) &&
+    internal_equal(win1->toolbar_visible_p[1], win2->toolbar_visible_p[1], 0) &&
+    internal_equal(win1->toolbar_visible_p[2], win2->toolbar_visible_p[2], 0) &&
+    internal_equal(win1->toolbar_visible_p[3], win2->toolbar_visible_p[3], 0) &&
+    EQ(win1->toolbar_buttons_captioned_p, win2->toolbar_buttons_captioned_p) &&
+    internal_equal(win1->default_toolbar, win2->default_toolbar, 0) &&
+    EQ(win1->default_toolbar_width, win2->default_toolbar_width) &&
+    EQ(win1->default_toolbar_height, win2->default_toolbar_height) &&
+    EQ(win1->default_toolbar_visible_p, win2->default_toolbar_visible_p) &&
+    EQ(win1->default_toolbar_border_width, win2->default_toolbar_border_width) &&
+#endif /* HAVE_TOOLBARS */
+    EQ(win1->left_margin_width, win2->left_margin_width) &&
+    EQ(win1->right_margin_width, win2->right_margin_width) &&
+    EQ(win1->minimum_line_ascent, win2->minimum_line_ascent) &&
+    EQ(win1->minimum_line_descent, win2->minimum_line_descent) &&
+    EQ(win1->use_left_overflow, win2->use_left_overflow) &&
+    EQ(win1->use_right_overflow, win2->use_right_overflow) &&
+#ifdef HAVE_MENUBARS
+    EQ(win1->menubar_visible_p, win2->menubar_visible_p) &&
+#endif /* HAVE_MENUBARS */
+    EQ(win1->text_cursor_visible_p, win2->text_cursor_visible_p);
 }
 
 /* Returns a boolean indicating whether the two given configurations
@@ -4872,10 +4940,41 @@
 	  WINDOW_WIDTH (w) = WINDOW_WIDTH (p);
 	  WINDOW_HEIGHT (w) = WINDOW_HEIGHT (p);
 	  w->hscroll = p->hscroll;
-	  /* #### Here we need to restore the saved specs for
-	     has-modeline-p, scrollbar-width, scrollbar-height,
-	     modeline-shadow-thickness, left-margin-width,
-	     right-margin-width, and current-display-table. */
+	  w->display_table = p->display_table;
+	  w->modeline_shadow_thickness = p->modeline_shadow_thickness;
+	  w->has_modeline_p = p->has_modeline_p;
+#ifdef HAVE_SCROLLBARS
+	  w->scrollbar_width = p->scrollbar_width;
+	  w->scrollbar_height = p->scrollbar_height;
+	  w->scrollbar_pointer = p->scrollbar_pointer;
+#endif /* HAVE_SCROLLBARS */
+#ifdef HAVE_TOOLBARS
+	  {
+	    int ix;
+	    for (ix = 0; ix < 4; ix++)
+	      {
+		w->toolbar[ix] = p->toolbar[ix];
+		w->toolbar_size[ix] = p->toolbar_size[ix];
+		w->toolbar_border_width[ix] = p->toolbar_border_width[ix];
+		w->toolbar_visible_p[ix] = p->toolbar_visible_p[ix];
+	      }
+	  }
+	  w->toolbar_buttons_captioned_p = p->toolbar_buttons_captioned_p;
+	  w->default_toolbar = p->default_toolbar;
+	  w->default_toolbar_width = p->default_toolbar_width;
+	  w->default_toolbar_visible_p = p->default_toolbar_visible_p;
+	  w->default_toolbar_border_width = p->default_toolbar_border_width;
+#endif /* HAVE_TOOLBARS */
+	  w->left_margin_width = p->left_margin_width;
+	  w->right_margin_width = p->right_margin_width;
+	  w->minimum_line_ascent = p->minimum_line_ascent;
+	  w->minimum_line_descent = p->minimum_line_descent;
+	  w->use_left_overflow = p->use_left_overflow;
+	  w->use_right_overflow = p->use_right_overflow;
+#ifdef HAVE_MENUBARS
+	  w->menubar_visible_p = p->menubar_visible_p;
+#endif /* HAVE_MENUBARS */
+	  w->text_cursor_visible_p = p->text_cursor_visible_p;
 	  w->dedicated = p->dedicated;
 	  w->line_cache_last_updated = Qzero;
 	  SET_LAST_MODIFIED (w, 1);
@@ -5108,10 +5207,42 @@
       WINDOW_WIDTH (p) = WINDOW_WIDTH (w);
       WINDOW_HEIGHT (p) = WINDOW_HEIGHT (w);
       p->hscroll = w->hscroll;
-      /* #### Here we need to save the specs for
-	 has-modeline-p, scrollbar-width, scrollbar-height,
-	 modeline-shadow-thickness, left-margin-width,
-	 right-margin-width, current-display-table, etc. */
+      p->display_table = w->display_table;
+      p->modeline_shadow_thickness = w->modeline_shadow_thickness;
+      p->has_modeline_p = w->has_modeline_p;
+#ifdef HAVE_SCROLLBARS
+      p->scrollbar_width = w->scrollbar_width;
+      p->scrollbar_height = w->scrollbar_height;
+      p->scrollbar_pointer = w->scrollbar_pointer;
+#endif /* HAVE_SCROLLBARS */
+#ifdef HAVE_TOOLBARS
+      {
+	int ix;
+ 	for (ix = 0; ix < 4; ix++)
+	  {
+	    p->toolbar[ix] = w->toolbar[ix];
+	    p->toolbar_size[ix] = w->toolbar_size[ix];
+	    p->toolbar_border_width[ix] = w->toolbar_border_width[ix];
+	    p->toolbar_visible_p[ix] = w->toolbar_visible_p[ix];
+	  }
+      }
+      p->toolbar_buttons_captioned_p = w->toolbar_buttons_captioned_p;
+      p->default_toolbar = w->default_toolbar;
+      p->default_toolbar_width = w->default_toolbar_width;
+      p->default_toolbar_visible_p = w->default_toolbar_visible_p;
+      p->default_toolbar_border_width = w->default_toolbar_border_width;
+#endif /* HAVE_TOOLBARS */
+      p->left_margin_width = w->left_margin_width;
+      p->right_margin_width = w->right_margin_width;
+      p->minimum_line_ascent = w->minimum_line_ascent;
+      p->minimum_line_descent = w->minimum_line_descent;
+      p->use_left_overflow = w->use_left_overflow;
+      p->use_right_overflow = w->use_right_overflow;
+#ifdef HAVE_MENUBARS
+      p->menubar_visible_p = w->menubar_visible_p;
+#endif /* HAVE_MENUBARS */
+      p->text_cursor_visible_p = w->text_cursor_visible_p;
+
       if (!NILP (w->buffer))
 	{
 	  /* Save w's value of point in the window configuration.