From: Martin Rudalics Date: Wed, 3 Sep 2014 15:10:29 +0000 (+0200) Subject: Clean up initialization and customization of horizontal scroll bars. X-Git-Tag: emacs-25.0.90~2635^2~679^2~361 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=568df136f13451a098d166918b9602cf8dedf976;p=emacs.git Clean up initialization and customization of horizontal scroll bars. * 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. --- diff --git a/etc/NEWS b/etc/NEWS index 1d9f8ca850f..776519fa5cf 100644 --- 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. + +* 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. + * Changes in Emacs 24.5 on Non-Free Operating Systems diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 29fec987a2e..d4bb37d32c6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,16 @@ +2014-09-03 Martin Rudalics + + * 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 * emacs-lisp/package.el (package-generate-description-file): diff --git a/lisp/frame.el b/lisp/frame.el index d528eef6735..f144cf23405 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -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)) diff --git a/lisp/scroll-bar.el b/lisp/scroll-bar.el index 2dd394fa2af..588ac3b0f8a 100644 --- a/lisp/scroll-bar.el +++ b/lisp/scroll-bar.el @@ -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)))))) ;;;; 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)) diff --git a/src/ChangeLog b/src/ChangeLog index cfafd9d8fa3..4f189e5be38 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2014-09-03 Martin Rudalics + + * 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 * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in diff --git a/src/buffer.c b/src/buffer.c index 62431cb8fe1..45e614fb449 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -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, diff --git a/src/frame.c b/src/frame.c index 501f01a3122..96617976ecd 100644 --- a/src/frame.c +++ b/src/frame.c @@ -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. diff --git a/src/nsfns.m b/src/nsfns.m index ca8f4922ccd..052c428fae5 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -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"), diff --git a/src/w32fns.c b/src/w32fns.c index ac0e693e1c0..fee80d24690 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -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. */ diff --git a/src/xfns.c b/src/xfns.c index 0c07d6cb03d..ec915a69f80 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -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);