Reformatted.
[chise/xemacs-chise.git.1] / src / scrollbar.c
index 18360c0..6df936c 100644 (file)
@@ -240,7 +240,8 @@ compute_scrollbar_instance_usage (struct device *d,
 {
   int total = 0;
 
-  total += DEVMETH (d, compute_scrollbar_instance_usage, (d, inst, ovstats));
+  if (HAS_DEVMETH_P(d, compute_scrollbar_instance_usage))
+    total += DEVMETH (d, compute_scrollbar_instance_usage, (d, inst, ovstats));
 
   while (inst)
     {
@@ -409,7 +410,7 @@ update_scrollbar_instance (struct window *w, int vertical,
   int new_minimum = -1, new_maximum = -1;
   int new_slider_size = -1, new_slider_position = -1;
   int new_width = -1, new_height = -1, new_x = -1, new_y = -1;
-  struct window *new_window = 0;       /* kludge city */
+  struct window *new_window = 0; /* #### currently unused */
 
   end_pos = BUF_Z (b) - w->window_end_pos[CURRENT_DISP];
   sb_pos = scrollbar_point (w, 0);
@@ -461,7 +462,7 @@ update_scrollbar_instance (struct window *w, int vertical,
          {
            x_offset = WINDOW_LEFT (w);
          }
-       else 
+       else
          {
            x_offset = WINDOW_RIGHT (w) - scrollbar_width;
            if (window_needs_vertical_divider (w))
@@ -735,26 +736,26 @@ behavior.
      with their standard behaviors.  It is not possible to hide the
      differences down in lwlib because knowledge of XEmacs buffer and
      cursor motion routines is necessary. */
-#if defined (LWLIB_SCROLLBARS_MOTIF) || defined (LWLIB_SCROLLBARS_LUCID) || \
-    defined (LWLIB_SCROLLBARS_ATHENA3D) || defined(HAVE_MS_WINDOWS)
-  window_scroll (window, Qnil, -1, ERROR_ME_NOT);
-#else /* Athena */
-  {
-    Bufpos bufpos;
-    Lisp_Object value = Fcdr (object);
 
-    CHECK_INT (value);
-    Fmove_to_window_line (Qzero, window);
-    /* can't use Fvertical_motion() because it moves the buffer point
-       rather than the window's point.
-
-       #### It does?  Why does it take a window argument then? */
-    bufpos = vmotion (XWINDOW (window), XINT (Fwindow_point (window)),
-                     XINT (value), 0);
-    Fset_window_point (window, make_int (bufpos));
-    Fcenter_to_window_line (Qzero, window);
-  }
-#endif /* Athena */
+  if (NILP (XCDR (object)))
+    window_scroll (window, Qnil, -1, ERROR_ME_NOT);
+  else
+    {
+      Bufpos bufpos;
+      Lisp_Object value = Fcdr (object);
+
+      CHECK_INT (value);
+      Fmove_to_window_line (Qzero, window);
+      /* can't use Fvertical_motion() because it moves the buffer point
+        rather than the window's point.
+
+        #### It does?  Why does it take a window argument then? */
+      bufpos = vmotion (XWINDOW (window), XINT (Fwindow_point (window)),
+                       XINT (value), 0);
+      Fset_window_point (window, make_int (bufpos));
+      Fcenter_to_window_line (Qzero, window);
+    }
+
   zmacs_region_stays = 1;
   return Qnil;
 }
@@ -776,17 +777,17 @@ behavior.
      with their standard behaviors.  It is not possible to hide the
      differences down in lwlib because knowledge of XEmacs buffer and
      cursor motion routines is necessary. */
-#if defined (LWLIB_SCROLLBARS_MOTIF) || defined (LWLIB_SCROLLBARS_LUCID) || \
-    defined (LWLIB_SCROLLBARS_ATHENA3D) || defined (HAVE_MS_WINDOWS)
-  window_scroll (window, Qnil, 1, ERROR_ME_NOT);
-#else /* Athena */
-  {
-    Lisp_Object value = Fcdr (object);
-    CHECK_INT (value);
-    Fmove_to_window_line (value, window);
-    Fcenter_to_window_line (Qzero, window);
-  }
-#endif /* Athena */
+
+  if (NILP (XCDR (object)))
+    window_scroll (window, Qnil, 1, ERROR_ME_NOT);
+  else
+    {
+      Lisp_Object value = Fcdr (object);
+      CHECK_INT (value);
+      Fmove_to_window_line (value, window);
+      Fcenter_to_window_line (Qzero, window);
+    }
+
   zmacs_region_stays = 1;
   return Qnil;
 }
@@ -953,7 +954,7 @@ This is a specifier; use `set-specifier' to change it.
                         offsetof (struct window, scrollbar_width),
                         vertical_scrollbar_changed_in_window,
                         offsetof (struct frame, scrollbar_width),
-                        frame_size_slipped);
+                        frame_size_slipped, 0);
 
   DEFVAR_SPECIFIER ("scrollbar-height", &Vscrollbar_height /*
 *Height of horizontal scrollbars.
@@ -967,7 +968,7 @@ This is a specifier; use `set-specifier' to change it.
                         offsetof (struct window, scrollbar_height),
                         some_window_value_changed,
                         offsetof (struct frame, scrollbar_height),
-                        frame_size_slipped);
+                        frame_size_slipped, 0);
 
   DEFVAR_SPECIFIER ("horizontal-scrollbar-visible-p", &Vhorizontal_scrollbar_visible_p /*
 *Whether the horizontal scrollbar is visible.
@@ -982,7 +983,7 @@ This is a specifier; use `set-specifier' to change it.
                         some_window_value_changed,
                         offsetof (struct frame,
                                   horizontal_scrollbar_visible_p),
-                        frame_size_slipped);
+                        frame_size_slipped, 0);
 
   DEFVAR_SPECIFIER ("vertical-scrollbar-visible-p", &Vvertical_scrollbar_visible_p /*
 *Whether the vertical scrollbar is visible.
@@ -997,14 +998,14 @@ This is a specifier; use `set-specifier' to change it.
                         vertical_scrollbar_changed_in_window,
                         offsetof (struct frame,
                                   vertical_scrollbar_visible_p),
-                        frame_size_slipped);
+                        frame_size_slipped, 0);
 
   DEFVAR_SPECIFIER ("scrollbar-on-left-p", &Vscrollbar_on_left_p /*
 *Whether the vertical scrollbar is on the left side of window or frame.
 This is a specifier; use `set-specifier' to change it.
 */ );
   Vscrollbar_on_left_p = Fmake_specifier (Qboolean);
-  
+
   {
     /* Kludge. Under X, we want athena scrollbars on the left,
        while all other scrollbars go on the right by default. */
@@ -1023,7 +1024,7 @@ This is a specifier; use `set-specifier' to change it.
                         offsetof (struct window, scrollbar_on_left_p),
                         vertical_scrollbar_changed_in_window,
                         offsetof (struct frame, scrollbar_on_left_p),
-                        frame_size_slipped);
+                        frame_size_slipped, 0);
 
   DEFVAR_SPECIFIER ("scrollbar-on-top-p", &Vscrollbar_on_top_p /*
 *Whether the horizontal scrollbar is on the top side of window or frame.
@@ -1036,7 +1037,7 @@ This is a specifier; use `set-specifier' to change it.
                         offsetof (struct window, scrollbar_on_top_p),
                         some_window_value_changed,
                         offsetof (struct frame, scrollbar_on_top_p),
-                        frame_size_slipped);
+                        frame_size_slipped, 0);
 }
 
 void
@@ -1047,5 +1048,5 @@ complex_vars_of_scrollbar (void)
   set_specifier_caching (XGLYPH (Vscrollbar_pointer_glyph)->image,
                         offsetof (struct window, scrollbar_pointer),
                         scrollbar_pointer_changed_in_window,
-                        0, 0);
+                        0, 0, 0);
 }