all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: storm@cua.dk (Kim F. Storm)
Cc: emacs-devel@gnu.org
Subject: Re: bug? the position of scroll-bar
Date: 21 Sep 2003 02:02:29 +0200	[thread overview]
Message-ID: <m38yoj6may.fsf@kfs-l.imdomain.dk> (raw)
In-Reply-To: <20030917.204830.74744537.jet@gyve.org>

Masatake YAMATO <jet@gyve.org> writes:

> After evaluating (scroll-bar-mode) twice, 
> both (nth 2 (window-scroll-bars)) and (frame-parameter nil 'vertical-scroll-bars)
> return t. So I cannot know the position of scroll-bar(left or right). I think
> this is a bug.

A short-coming at least :-)   A value of t means to use the system default
setting.

In any case, I have installed a fix that should help you.

It adds a new built-in variable
        default-frame-scroll-bars
which reflects the default position on various window systems
(e.g. right on Windows, and left on X).

So if frame-parameter returns neither left, nor right, nor nil, you
can consult default-frame-scroll-bars to know what the actual setting
is.  

But I also modified M-x scroll-bar-mode to use this to pass on the
proper setting in case it toggles scroll-bars on (rather than pass the
value t), so normally you can now trust the value of frame-parameter
as specified below to return the actual setting.


Finally, I clarified the doc string of window-scroll-bars to explain
that the scroll-bar type may be 't' in which case the window uses the
frame's current setting.


Maybe we need to add helper functions like these to hide the somewhat
tricky relationship between windows, frames, and system defaults:

(defun frame-current-scroll-bars (&optional frame)
   (let ((type (frame-parameter frame 'vertical-scroll-bars)))
      (if (or (null type) (eq type 'left) (eq type 'right))
          type
        default-frame-scroll-bars)))

and

(defun window-current-scroll-bars (&optional window)
  (let ((type (nth 2 (window-scroll-bars window))))
    (if (eq type t)
        (frame-current-scroll-bars (window-frame (or window (selected-window))))
      type)))



> 
> `ruler-mode-left-scroll-bar-cols' in ruler-mode.el expects either (nth
> 2 (window-scroll-bars)) or (frame-parameter nil 'vertical-scroll-bars)
> returns 'left or 'right if scroll bar is displayed. 
> 
> emacs -q
> 
> (progn 
>   (scroll-bar-mode)			; disable
>   (scroll-bar-mode)			; enable
>   (cons (nth 2 (window-scroll-bars))
>   	(frame-parameter nil 'vertical-scroll-bars)))
> => (t . t)
> 
> Masatake YAMATO
> 
> 
> _______________________________________________
> Emacs-devel mailing list
> Emacs-devel@gnu.org
> http://mail.gnu.org/mailman/listinfo/emacs-devel
> 

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

  reply	other threads:[~2003-09-21  0:02 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-17 11:48 bug? the position of scroll-bar Masatake YAMATO
2003-09-21  0:02 ` Kim F. Storm [this message]
2003-09-21  5:51   ` Masatake YAMATO
2003-09-22  7:56     ` Kim F. Storm
2003-09-22  9:22       ` Masatake YAMATO
2003-09-22 12:23         ` Kim F. Storm
2003-09-21 22:34   ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m38yoj6may.fsf@kfs-l.imdomain.dk \
    --to=storm@cua.dk \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.