1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-25 10:47:00 +00:00

(dframe-have-timer-flag): Drop support for Emacs without timers. Doc fix.

(dframe-update-speed): Drop support for XEmacs < 20.
(dframe-frame-mode): Drop support for Emacs < 20.
(dframe-set-timer-internal): Drop support for Emacs without timers.
(dframe-popup-kludge): Use mouse-menu-major-mode-map if defined.
This commit is contained in:
Glenn Morris 2008-04-23 02:57:11 +00:00
parent 7446b6573e
commit 5b86d3e4b1

View File

@ -43,7 +43,7 @@
;; * Frame/buffer killing hooks
;; * Mouse-3 position relative menu
;; * Mouse motion, help-echo hacks
;; * Mouse clicking, double clicking, & Xemacs image clicking hack
;; * Mouse clicking, double clicking, & XEmacs image clicking hack
;; * Mode line hacking
;; * Utilities for use in a program covering:
;; o keymap massage for some actions
@ -108,7 +108,7 @@
;;; Bugs
;;
;; * The timer managers doesn't handle multiple different timeouts.
;; * You can't specify continuous timouts (as opposed to just lidle timers.)
;; * You can't specify continuous timeouts (as opposed to just idle timers.)
(defvar x-pointer-hand2)
(defvar x-pointer-top-left-arrow)
@ -131,20 +131,15 @@
:prefix "dframe-"
:group 'dframe)
(defvar dframe-have-timer-flag
(and (or (fboundp 'run-with-idle-timer)
(fboundp 'start-itimer)
(boundp 'post-command-idle-hook))
(if (fboundp 'display-graphic-p)
(defvar dframe-have-timer-flag (if (fboundp 'display-graphic-p)
(display-graphic-p)
window-system))
"Non-nil means that timers are available for this Emacs.")
window-system)
"Non-nil means that timers are available for this Emacs.
This is nil for terminals, since updating a frame in a terminal
is not useful to the user.")
(defcustom dframe-update-speed
(if (featurep 'xemacs)
(if (>= emacs-major-version 20)
2 ; 1 is too obrusive in XEmacs
5) ; when no idleness, need long delay
(if (featurep 'xemacs) 2 ; 1 is too obrusive in XEmacs
1)
"Idle time in seconds needed before dframe will update itself.
Updates occur to allow dframe to display directory information
@ -391,8 +386,7 @@ CREATE-HOOK are hooks to run after creating a frame."
paramsa
(list (cons 'width (frame-width))))))
(frame
(if (or (< emacs-major-version 20)
(not (eq window-system 'x)))
(if (not (eq window-system 'x))
(make-frame params)
(let ((x-pointer-shape x-pointer-top-left-arrow)
(x-sensitive-text-pointer-shape
@ -744,47 +738,18 @@ If NULL-ON-ERROR is a symbol, set it to nil if we cannot create a timer."
(dframe-set-timer-internal timeout null-on-error)))
(defun dframe-set-timer-internal (timeout &optional null-on-error)
"Apply a timer with TIMEOUT to call the dframe timer manager.
If NULL-ON-ERROR is a symbol, set it to nil if we cannot create a timer."
(cond
;; XEmacs
((featurep 'xemacs)
(if dframe-timer
(progn (delete-itimer dframe-timer)
(setq dframe-timer nil)))
(if timeout
(if (or (>= emacs-major-version 21)
(and (= emacs-major-version 20)
(> emacs-minor-version 0))
(and (= emacs-major-version 19)
(>= emacs-minor-version 15)))
(setq dframe-timer (start-itimer "dframe"
'dframe-timer-fn
timeout
timeout
t))
(setq dframe-timer (start-itimer "dframe"
'dframe-timer-fn
timeout
nil)))))
;; Post 19.31 Emacs
((fboundp 'run-with-idle-timer)
(if dframe-timer
(progn (cancel-timer dframe-timer)
(setq dframe-timer nil)))
(if timeout
"Apply a timer with TIMEOUT to call the dframe timer manager."
(when dframe-timer
(if (featurep 'xemacs)
(delete-itimer dframe-timer)
(cancel-timer dframe-timer))
(setq dframe-timer nil))
(when timeout
(setq dframe-timer
(run-with-idle-timer timeout t 'dframe-timer-fn))))
;; Emacs 19.30 (Thanks twice: ptype@dra.hmg.gb)
((boundp 'post-command-idle-hook)
(if timeout
(add-hook 'post-command-idle-hook 'dframe-timer-fn)
(remove-hook 'post-command-idle-hook 'dframe-timer-fn)))
;; Older or other Emacsen with no timers. Set up so that its
;; obvious this emacs can't handle the updates
((symbolp null-on-error)
(set null-on-error nil)))
)
(if (featurep 'xemacs)
(start-itimer "dframe" 'dframe-timer-fn
timeout timeout t)
(run-with-idle-timer timeout t 'dframe-timer-fn)))))
(defun dframe-timer-fn ()
"Called due to the dframe timer.
@ -840,9 +805,10 @@ Must be bound to event E."
;; This gets the cursor where the user can see it.
(if (not (bolp)) (forward-char -1))
(sit-for 0)
(if (< emacs-major-version 20)
(mouse-major-mode-menu e)
(mouse-major-mode-menu e nil))))))
(if (fboundp 'mouse-menu-major-mode-map)
(popup-menu (mouse-menu-major-mode-map) e)
(with-no-warnings ; don't warn about obsolete fallback
(mouse-major-mode-menu e nil)))))))
;;; Interactive user functions for the mouse
;;