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.
*** 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
......
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):
......
......@@ -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))
......
......@@ -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))
......
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
......
......@@ -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,
......
......@@ -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.
......
......@@ -1244,7 +1244,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
"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"),
......
......@@ -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. */
......
......@@ -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);
......
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