Commit 568df136 authored by Martin Rudalics's avatar Martin Rudalics

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.
parent 62fca472
...@@ -231,6 +231,17 @@ optional repeat-count argument. ...@@ -231,6 +231,17 @@ optional repeat-count argument.
*** New macros `thread-first' and `thread-last' allow threading a form *** New macros `thread-first' and `thread-last' allow threading a form
as the first or last argument of subsequent forms. 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 * Changes in Emacs 24.5 on Non-Free Operating Systems
......
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> 2014-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/package.el (package-generate-description-file): * emacs-lisp/package.el (package-generate-description-file):
......
...@@ -174,10 +174,6 @@ This function runs the hook `focus-out-hook'." ...@@ -174,10 +174,6 @@ This function runs the hook `focus-out-hook'."
(progn (progn
(setq frame-initial-frame-alist (setq frame-initial-frame-alist
(append initial-frame-alist default-frame-alist nil)) (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 (setq frame-initial-frame-alist
(cons (cons 'window-system initial-window-system) (cons (cons 'window-system initial-window-system)
frame-initial-frame-alist)) frame-initial-frame-alist))
......
...@@ -90,16 +90,11 @@ SIDE must be the symbol `left' or `right'." ...@@ -90,16 +90,11 @@ SIDE must be the symbol `left' or `right'."
(defvar scroll-bar-mode) (defvar scroll-bar-mode)
(defvar horizontal-scroll-bar-mode) (defvar horizontal-scroll-bar-mode)
(defvar previous-scroll-bar-mode nil) (defvar previous-scroll-bar-mode nil)
(defvar previous-horizontal-scroll-bar-mode nil)
(defvar scroll-bar-mode-explicit nil (defvar scroll-bar-mode-explicit nil
"Non-nil means `set-scroll-bar-mode' should really do something. "Non-nil means `set-scroll-bar-mode' should really do something.
This is nil while loading `scroll-bar.el', and t afterward.") 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) (defun set-scroll-bar-mode (value)
"Set the scroll bar mode to VALUE and put the new value into effect. "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." 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." ...@@ -112,18 +107,6 @@ See the `scroll-bar-mode' variable for possible values to use."
(modify-all-frames-parameters (list (cons 'vertical-scroll-bars (modify-all-frames-parameters (list (cons 'vertical-scroll-bars
scroll-bar-mode))))) 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 (defcustom scroll-bar-mode default-frame-scroll-bars
"Specify whether to have vertical scroll bars, and on which side. "Specify whether to have vertical scroll bars, and on which side.
Possible values are nil (no scroll bars), `left' (scroll bars on left) 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." ...@@ -140,32 +123,14 @@ Setting the variable with a customization buffer also takes effect."
:initialize 'custom-initialize-default :initialize 'custom-initialize-default
:set (lambda (_sym val) (set-scroll-bar-mode val))) :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. ;; We just set scroll-bar-mode, but that was the default.
;; If it is set again, that is for real. ;; If it is set again, that is for real.
(setq scroll-bar-mode-explicit t) (setq scroll-bar-mode-explicit t)
(setq horizontal-scroll-bar-mode-explicit t)
(defun get-scroll-bar-mode () (defun get-scroll-bar-mode ()
(declare (gv-setter set-scroll-bar-mode)) (declare (gv-setter set-scroll-bar-mode))
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 (define-minor-mode scroll-bar-mode
"Toggle vertical scroll bars on all frames (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 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. ...@@ -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 This command applies to all frames that exist and frames to be
created in the future." created in the future."
:variable ((get-horizontal-scroll-bar-mode) :init-value nil
. (lambda (v) (set-horizontal-scroll-bar-mode :global t
(if v (or previous-scroll-bar-mode :group 'frames
default-frame-horizontal-scroll-bars)))))) (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) (defun toggle-scroll-bar (arg)
"Toggle whether or not the selected frame has vertical scroll bars. "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." ...@@ -209,22 +181,6 @@ when they are turned on; if it is nil, they go on the left."
(list (cons 'vertical-scroll-bars (list (cons 'vertical-scroll-bars
(if (> arg 0) (if (> arg 0)
(or scroll-bar-mode default-frame-scroll-bars)))))) (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. ;;;; Buffer navigation using the scroll bar.
...@@ -412,6 +368,7 @@ EVENT should be a scroll bar click." ...@@ -412,6 +368,7 @@ EVENT should be a scroll bar click."
;;; Tookit scroll bars. ;;; Tookit scroll bars.
(defun scroll-bar-toolkit-scroll (event) (defun scroll-bar-toolkit-scroll (event)
"Handle event EVENT on vertical scroll bar."
(interactive "e") (interactive "e")
(let* ((end-position (event-end event)) (let* ((end-position (event-end event))
(window (nth 0 end-position)) (window (nth 0 end-position))
...@@ -453,6 +410,7 @@ EVENT should be a scroll bar click." ...@@ -453,6 +410,7 @@ EVENT should be a scroll bar click."
(setq point-before-scroll before-scroll)))))) (setq point-before-scroll before-scroll))))))
(defun scroll-bar-toolkit-horizontal-scroll (event) (defun scroll-bar-toolkit-horizontal-scroll (event)
"Handle event EVENT on horizontal scroll bar."
(interactive "e") (interactive "e")
(let* ((end-position (event-end event)) (let* ((end-position (event-end event))
(window (nth 0 end-position)) (window (nth 0 end-position))
......
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> 2014-09-03 Eli Zaretskii <eliz@gnu.org>
* dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in
......
...@@ -5919,7 +5919,7 @@ A value of nil means to use the scroll bar width from the window's frame. */); ...@@ -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), DEFVAR_PER_BUFFER ("scroll-bar-height", &BVAR (current_buffer, scroll_bar_height),
Qintegerp, Qintegerp,
doc: /* Height of this buffer's scroll bars in pixels. 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), DEFVAR_PER_BUFFER ("vertical-scroll-bar", &BVAR (current_buffer, vertical_scroll_bar_type),
Qvertical_scroll_bar, Qvertical_scroll_bar,
......
...@@ -4872,16 +4872,6 @@ Setting this variable does not affect existing frames, only new ones. */); ...@@ -4872,16 +4872,6 @@ Setting this variable does not affect existing frames, only new ones. */);
Vdefault_frame_scroll_bars = Qnil; Vdefault_frame_scroll_bars = Qnil;
#endif #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", DEFVAR_BOOL ("scroll-bar-adjust-thumb-portion",
scroll_bar_adjust_thumb_portion_p, scroll_bar_adjust_thumb_portion_p,
doc: /* Adjust thumb for overscrolling for Gtk+ and MOTIF. doc: /* Adjust thumb for overscrolling for Gtk+ and MOTIF.
......
...@@ -1244,7 +1244,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side ...@@ -1244,7 +1244,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
"verticalScrollBars", "VerticalScrollBars", "verticalScrollBars", "VerticalScrollBars",
RES_TYPE_SYMBOL); RES_TYPE_SYMBOL);
} }
x_default_parameter (f, parms, Qhorizontal_scroll_bars, Qt, x_default_parameter (f, parms, Qhorizontal_scroll_bars, Qnil,
"horizontalScrollBars", "HorizontalScrollBars", "horizontalScrollBars", "HorizontalScrollBars",
RES_TYPE_SYMBOL); RES_TYPE_SYMBOL);
x_default_parameter (f, parms, Qforeground_color, build_string ("Black"), x_default_parameter (f, parms, Qforeground_color, build_string ("Black"),
......
...@@ -4569,7 +4569,7 @@ This function is an internal primitive--use `make-frame' instead. */) ...@@ -4569,7 +4569,7 @@ This function is an internal primitive--use `make-frame' instead. */)
NULL, NULL, RES_TYPE_NUMBER); NULL, NULL, RES_TYPE_NUMBER);
x_default_parameter (f, parameters, Qvertical_scroll_bars, Qright, x_default_parameter (f, parameters, Qvertical_scroll_bars, Qright,
"verticalScrollBars", "ScrollBars", RES_TYPE_SYMBOL); "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); "horizontalScrollBars", "ScrollBars", RES_TYPE_SYMBOL);
/* Also do the stuff which must be set before the window exists. */ /* Also do the stuff which must be set before the window exists. */
......
...@@ -3112,15 +3112,9 @@ This function is an internal primitive--use `make-frame' instead. */) ...@@ -3112,15 +3112,9 @@ This function is an internal primitive--use `make-frame' instead. */)
#endif #endif
"verticalScrollBars", "ScrollBars", "verticalScrollBars", "ScrollBars",
RES_TYPE_SYMBOL); RES_TYPE_SYMBOL);
x_default_parameter (f, parms, Qhorizontal_scroll_bars, x_default_parameter (f, parms, Qhorizontal_scroll_bars, Qnil,
#if defined (USE_GTK) && defined (USE_TOOLKIT_SCROLL_BARS)
Qt,
#else
Qnil,
#endif
"horizontalScrollBars", "ScrollBars", "horizontalScrollBars", "ScrollBars",
RES_TYPE_SYMBOL); RES_TYPE_SYMBOL);
/* Also do the stuff which must be set before the window exists. */ /* Also do the stuff which must be set before the window exists. */
x_default_parameter (f, parms, Qforeground_color, build_string ("black"), x_default_parameter (f, parms, Qforeground_color, build_string ("black"),
"foreground", "Foreground", RES_TYPE_STRING); "foreground", "Foreground", RES_TYPE_STRING);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment