]> code.delx.au - gnu-emacs/commitdiff
Clean up initialization and customization of horizontal scroll bars.
authorMartin Rudalics <rudalics@gmx.at>
Wed, 3 Sep 2014 15:10:29 +0000 (17:10 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Wed, 3 Sep 2014 15:10:29 +0000 (17:10 +0200)
* frame.el (frame-initialize): Remove horizontal-scroll-bars
from frame-initial-frame-alist.
* scroll-bar.el (previous-horizontal-scroll-bar-mode)
(horizontal-scroll-bar-mode-explicit)
(set-horizontal-scroll-bar-mode, get-horizontal-scroll-bar-mode)
(toggle-horizontal-scroll-bar): Remove.
(horizontal-scroll-bar-mode): Remove defcustom.
(horizontal-scroll-bar-mode): Fix doc-string.
(scroll-bar-toolkit-scroll)
(scroll-bar-toolkit-horizontal-scroll): Add doc-strings stubs.
* buffer.c (scroll-bar-height): Fix typo in doc-string.
* frame.c (Vdefault_frame_horizontal_scroll_bars): Remove
variable.
* nsfns.m (Fx_create_frame):
* w32fns.c (Fx_create_frame):
* xfns.c (Fx_create_frame): Default horizontal scroll bars to
nil.

etc/NEWS
lisp/ChangeLog
lisp/frame.el
lisp/scroll-bar.el
src/ChangeLog
src/buffer.c
src/frame.c
src/nsfns.m
src/w32fns.c
src/xfns.c

index 1d9f8ca850f9cad9e42a7fcd2afe81212d63b4a5..776519fa5cf77d13e9c9f4b0b11e0f7d34566adf 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -231,6 +231,17 @@ optional repeat-count argument.
 *** New macros `thread-first' and `thread-last' allow threading a form
     as the first or last argument of subsequent forms.
 
+\f
+* Changes in Frames and Windows Code in Emacs 24.5
+
+** Emacs can now draw horizontal scroll bars on some platforms that
+provide toolkit scroll bars, namely Gtk, Lucid, Motif and Windows.
+Horizontal scroll bars are turned off by default.  Use the command
+`horizontal-scroll-bar-mode' to toggle them on all frames; the frame
+parameter `horizontal-scroll-bars' to turn them on/off on individual
+frames; the function `set-window-scroll-bars' to turn them on/off on
+individual windows.
+
 \f
 * Changes in Emacs 24.5 on Non-Free Operating Systems
 
index 29fec987a2e265d3182ca0758d26e4f9990af4ae..d4bb37d32c6ef7b541feddae414580808f8c5e48 100644 (file)
@@ -1,3 +1,16 @@
+2014-09-03  Martin Rudalics  <rudalics@gmx.at>
+
+       * frame.el (frame-initialize): Remove horizontal-scroll-bars
+       from frame-initial-frame-alist.
+       * scroll-bar.el (previous-horizontal-scroll-bar-mode)
+       (horizontal-scroll-bar-mode-explicit)
+       (set-horizontal-scroll-bar-mode, get-horizontal-scroll-bar-mode)
+       (toggle-horizontal-scroll-bar): Remove.
+       (horizontal-scroll-bar-mode): Remove defcustom.
+       (horizontal-scroll-bar-mode): Fix doc-string.
+       (scroll-bar-toolkit-scroll)
+       (scroll-bar-toolkit-horizontal-scroll): Add doc-strings stubs.
+
 2014-09-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * emacs-lisp/package.el (package-generate-description-file):
index d528eef673530e3dbe78f7c4cf970f7613e22d10..f144cf234054423c0b13d40fdfeff64488aaf960 100644 (file)
@@ -174,10 +174,6 @@ This function runs the hook `focus-out-hook'."
            (progn
              (setq frame-initial-frame-alist
                    (append initial-frame-alist default-frame-alist nil))
-             (or (assq 'horizontal-scroll-bars frame-initial-frame-alist)
-                 (setq frame-initial-frame-alist
-                       (cons '(horizontal-scroll-bars . t)
-                             frame-initial-frame-alist)))
              (setq frame-initial-frame-alist
                    (cons (cons 'window-system initial-window-system)
                          frame-initial-frame-alist))
index 2dd394fa2af6cfbbb71f44c23d2fbd82f42ec21f..588ac3b0f8acd7a3076f07e4482d880156ac159a 100644 (file)
@@ -90,16 +90,11 @@ SIDE must be the symbol `left' or `right'."
 (defvar scroll-bar-mode)
 (defvar horizontal-scroll-bar-mode)
 (defvar previous-scroll-bar-mode nil)
-(defvar previous-horizontal-scroll-bar-mode nil)
 
 (defvar scroll-bar-mode-explicit nil
   "Non-nil means `set-scroll-bar-mode' should really do something.
 This is nil while loading `scroll-bar.el', and t afterward.")
 
-(defvar horizontal-scroll-bar-mode-explicit nil
-  "Non-nil means `set-horizontal-scroll-bar-mode' should really do something.
-This is nil while loading `scroll-bar.el', and t afterward.")
-
 (defun set-scroll-bar-mode (value)
   "Set the scroll bar mode to VALUE and put the new value into effect.
 See the `scroll-bar-mode' variable for possible values to use."
@@ -112,18 +107,6 @@ See the `scroll-bar-mode' variable for possible values to use."
     (modify-all-frames-parameters (list (cons 'vertical-scroll-bars
                                              scroll-bar-mode)))))
 
-(defun set-horizontal-scroll-bar-mode (value)
-  "Set the horizontal scroll bar mode to VALUE and put the new value into effect.
-See the `horizontal-scroll-bar-mode' variable for possible values to use."
-  (if horizontal-scroll-bar-mode
-      (setq previous-horizontal-scroll-bar-mode horizontal-scroll-bar-mode))
-
-  (setq horizontal-scroll-bar-mode value)
-
-  (when horizontal-scroll-bar-mode-explicit
-    (modify-all-frames-parameters (list (cons 'horizontal-scroll-bars
-                                             horizontal-scroll-bar-mode)))))
-
 (defcustom scroll-bar-mode default-frame-scroll-bars
   "Specify whether to have vertical scroll bars, and on which side.
 Possible values are nil (no scroll bars), `left' (scroll bars on left)
@@ -140,32 +123,14 @@ Setting the variable with a customization buffer also takes effect."
   :initialize 'custom-initialize-default
   :set (lambda (_sym val) (set-scroll-bar-mode val)))
 
-(defcustom horizontal-scroll-bar-mode default-frame-horizontal-scroll-bars
-  "Specify whether to have horizontal scroll bars, and on which side.
-To set this variable in a Lisp program, use `set-horizontal-scroll-bar-mode'
-to make it take real effect.
-Setting the variable with a customization buffer also takes effect."
-  :type '(choice (const :tag "none (nil)" nil)
-                (const t))
-  :group 'frames
-  ;; The default value for :initialize would try to use :set
-  ;; when processing the file in cus-dep.el.
-  :initialize 'custom-initialize-default
-  :set (lambda (_sym val) (set-horizontal-scroll-bar-mode val)))
-
 ;; We just set scroll-bar-mode, but that was the default.
 ;; If it is set again, that is for real.
 (setq scroll-bar-mode-explicit t)
-(setq horizontal-scroll-bar-mode-explicit t)
 
 (defun get-scroll-bar-mode ()
   (declare (gv-setter set-scroll-bar-mode))
   scroll-bar-mode)
 
-(defun get-horizontal-scroll-bar-mode ()
-  (declare (gv-setter set-horizontal-scroll-bar-mode))
-  horizontal-scroll-bar-mode)
-
 (define-minor-mode scroll-bar-mode
   "Toggle vertical scroll bars on all frames (Scroll Bar mode).
 With a prefix argument ARG, enable Scroll Bar mode if ARG is
@@ -187,10 +152,17 @@ enable the mode if ARG is omitted or nil.
 
 This command applies to all frames that exist and frames to be
 created in the future."
-  :variable ((get-horizontal-scroll-bar-mode)
-             . (lambda (v) (set-horizontal-scroll-bar-mode
-                           (if v (or previous-scroll-bar-mode
-                                     default-frame-horizontal-scroll-bars))))))
+  :init-value nil
+  :global t
+  :group 'frames
+  (dolist (frame (frame-list))
+    (set-frame-parameter
+     frame 'horizontal-scroll-bars horizontal-scroll-bar-mode))
+  ;; Handle `default-frame-alist' entry.
+  (setq default-frame-alist
+       (cons (cons 'horizontal-scroll-bars horizontal-scroll-bar-mode)
+             (assq-delete-all 'horizontal-scroll-bars
+                              default-frame-alist))))
 
 (defun toggle-scroll-bar (arg)
   "Toggle whether or not the selected frame has vertical scroll bars.
@@ -209,22 +181,6 @@ when they are turned on; if it is nil, they go on the left."
    (list (cons 'vertical-scroll-bars
               (if (> arg 0)
                   (or scroll-bar-mode default-frame-scroll-bars))))))
-
-(defun toggle-horizontal-scroll-bar (arg)
-  "Toggle whether or not the selected frame has horizontal scroll bars.
-With arg, turn horizontal scroll bars on if and only if arg is positive."
-  (interactive "P")
-  (if (null arg)
-      (setq arg
-           (if (cdr (assq 'horizontal-scroll-bars
-                          (frame-parameters (selected-frame))))
-               -1 1))
-    (setq arg (prefix-numeric-value arg)))
-  (modify-frame-parameters
-   (selected-frame)
-   (list (cons 'horizontal-scroll-bars
-              (if (> arg 0)
-                  (or horizontal-scroll-bar-mode default-frame-horizontal-scroll-bars))))))
 \f
 ;;;; Buffer navigation using the scroll bar.
 
@@ -412,6 +368,7 @@ EVENT should be a scroll bar click."
 ;;; Tookit scroll bars.
 
 (defun scroll-bar-toolkit-scroll (event)
+  "Handle event EVENT on vertical scroll bar."
   (interactive "e")
   (let* ((end-position (event-end event))
         (window (nth 0 end-position))
@@ -453,6 +410,7 @@ EVENT should be a scroll bar click."
        (setq point-before-scroll before-scroll))))))
 
 (defun scroll-bar-toolkit-horizontal-scroll (event)
+  "Handle event EVENT on horizontal scroll bar."
   (interactive "e")
   (let* ((end-position (event-end event))
         (window (nth 0 end-position))
index cfafd9d8fa3f2ba67958792d02a62c9ba87ac21b..4f189e5be38a58ea91fa66c82e6f09c48a1667ff 100644 (file)
@@ -1,3 +1,13 @@
+2014-09-03  Martin Rudalics  <rudalics@gmx.at>
+
+       * buffer.c (scroll-bar-height): Fix typo in doc-string.
+       * frame.c (Vdefault_frame_horizontal_scroll_bars): Remove
+       variable.
+       * nsfns.m (Fx_create_frame):
+       * w32fns.c (Fx_create_frame):
+       * xfns.c (Fx_create_frame): Default horizontal scroll bars to
+       nil.
+
 2014-09-03  Eli Zaretskii  <eliz@gnu.org>
 
        * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in
index 62431cb8fe1b61047ba3ea137bb96cf0c622b0be..45e614fb449f2e3c39aaa0464c18d931270cac6c 100644 (file)
@@ -5919,7 +5919,7 @@ A value of nil means to use the scroll bar width from the window's frame.  */);
   DEFVAR_PER_BUFFER ("scroll-bar-height", &BVAR (current_buffer, scroll_bar_height),
                     Qintegerp,
                     doc: /* Height of this buffer's scroll bars in pixels.
-A value of nil means to use the scroll bar heiht from the window's frame.  */);
+A value of nil means to use the scroll bar height from the window's frame.  */);
 
   DEFVAR_PER_BUFFER ("vertical-scroll-bar", &BVAR (current_buffer, vertical_scroll_bar_type),
                     Qvertical_scroll_bar,
index 501f01a3122aa8c25f198b92730ccca1cc0d64cc..96617976ecd1cef890fc3c1f16daaa3703d3b908 100644 (file)
@@ -4872,16 +4872,6 @@ Setting this variable does not affect existing frames, only new ones.  */);
   Vdefault_frame_scroll_bars = Qnil;
 #endif
 
-  DEFVAR_LISP ("default-frame-horizontal-scroll-bars", Vdefault_frame_horizontal_scroll_bars,
-              doc: /* Default value for horizontal scroll bars on this window-system.  */);
-#if (defined (HAVE_WINDOW_SYSTEM)                                      \
-     && ((defined (USE_TOOLKIT_SCROLL_BARS) && !defined (HAVE_NS))     \
-        || defined (HAVE_NTGUI)))
-  Vdefault_frame_horizontal_scroll_bars = Qt;
-#else
-  Vdefault_frame_horizontal_scroll_bars = Qnil;
-#endif
-
   DEFVAR_BOOL ("scroll-bar-adjust-thumb-portion",
                scroll_bar_adjust_thumb_portion_p,
                doc: /* Adjust thumb for overscrolling for Gtk+ and MOTIF.
index ca8f4922ccd927b0cb5d95883aee3490047a566b..052c428fae5cfc136b7ae445398a971ca4df9818 100644 (file)
@@ -1244,7 +1244,7 @@ This function is an internal primitive--use `make-frame' instead.  */)
                           "verticalScrollBars", "VerticalScrollBars",
                           RES_TYPE_SYMBOL);
   }
-  x_default_parameter (f, parms, Qhorizontal_scroll_bars, Qt,
+  x_default_parameter (f, parms, Qhorizontal_scroll_bars, Qnil,
                       "horizontalScrollBars", "HorizontalScrollBars",
                       RES_TYPE_SYMBOL);
   x_default_parameter (f, parms, Qforeground_color, build_string ("Black"),
index ac0e693e1c085aaff9bc208c09dce859562378b9..fee80d24690da2693779e8b54363e4774a7f83f5 100644 (file)
@@ -4569,7 +4569,7 @@ This function is an internal primitive--use `make-frame' instead.  */)
                       NULL, NULL, RES_TYPE_NUMBER);
   x_default_parameter (f, parameters, Qvertical_scroll_bars, Qright,
                       "verticalScrollBars", "ScrollBars", RES_TYPE_SYMBOL);
-  x_default_parameter (f, parameters, Qhorizontal_scroll_bars, Qbottom,
+  x_default_parameter (f, parameters, Qhorizontal_scroll_bars, Qnil,
                       "horizontalScrollBars", "ScrollBars", RES_TYPE_SYMBOL);
 
   /* Also do the stuff which must be set before the window exists.  */
index 0c07d6cb03df8f6417c9bda4e9de0946c4db5347..ec915a69f80b0e97aef3b7a35aeb34a4bf28c678 100644 (file)
@@ -3112,15 +3112,9 @@ This function is an internal primitive--use `make-frame' instead.  */)
 #endif
                       "verticalScrollBars", "ScrollBars",
                       RES_TYPE_SYMBOL);
-  x_default_parameter (f, parms, Qhorizontal_scroll_bars,
-#if defined (USE_GTK) && defined (USE_TOOLKIT_SCROLL_BARS)
-                      Qt,
-#else
-                      Qnil,
-#endif
+  x_default_parameter (f, parms, Qhorizontal_scroll_bars, Qnil,
                       "horizontalScrollBars", "ScrollBars",
                       RES_TYPE_SYMBOL);
-
   /* Also do the stuff which must be set before the window exists.  */
   x_default_parameter (f, parms, Qforeground_color, build_string ("black"),
                       "foreground", "Foreground", RES_TYPE_STRING);