comparison lisp/packages/balloon-help.el @ 102:a145efe76779 r20-1b3

Import from CVS: tag r20-1b3
author cvs
date Mon, 13 Aug 2007 09:15:49 +0200
parents 0d2f883870bc
children 8619ce7e4c50
comparison
equal deleted inserted replaced
101:a0ec055d74dd 102:a145efe76779
55 ;; managers. So the window manager directives should not be 55 ;; managers. So the window manager directives should not be
56 ;; needed for XEmacs 19.13 and beyond. 56 ;; needed for XEmacs 19.13 and beyond.
57 57
58 (provide 'balloon-help) 58 (provide 'balloon-help)
59 59
60 (defvar balloon-help-version "1.03" 60 (defvar balloon-help-version "1.04"
61 "Version string for Balloon Help.") 61 "Version string for Balloon Help.")
62 62
63 (defvar balloon-help-mode t 63 (defvar balloon-help-mode t
64 "*Non-nil means Balloon help mode is enabled.") 64 "*Non-nil means Balloon help mode is enabled.")
65 65
78 (defvar balloon-help-font "fixed" 78 (defvar balloon-help-font "fixed"
79 "*The font for displaying balloon help text.") 79 "*The font for displaying balloon help text.")
80 80
81 (defvar balloon-help-border-color "black" 81 (defvar balloon-help-border-color "black"
82 "*The color for displaying balloon help frame's border.") 82 "*The color for displaying balloon help frame's border.")
83
84 (defvar balloon-help-border-width 2
85 "*The width of the balloon help frame's border.")
83 86
84 (defvar balloon-help-use-sound nil 87 (defvar balloon-help-use-sound nil
85 "*Non-nil value means play a sound to herald the appearance 88 "*Non-nil value means play a sound to herald the appearance
86 and disappearance of the help frame. 89 and disappearance of the help frame.
87 90
204 (balloon-help-undisplay-help)))) 207 (balloon-help-undisplay-help))))
205 (let* ((params (frame-parameters frame)) 208 (let* ((params (frame-parameters frame))
206 (top (cdr (assq 'top params))) 209 (top (cdr (assq 'top params)))
207 (left (cdr (assq 'left params))) 210 (left (cdr (assq 'left params)))
208 (xtop-toolbar-height 211 (xtop-toolbar-height
209 (if (specifier-instance top-toolbar) 212 (if (and (specifier-instance top-toolbar-visible-p frame)
210 (specifier-instance top-toolbar-height) 213 (specifier-instance top-toolbar frame))
214 (specifier-instance top-toolbar-height frame)
211 0)) 215 0))
212 (xleft-toolbar-width 216 (xleft-toolbar-width
213 (if (specifier-instance left-toolbar) 217 (if (and (specifier-instance left-toolbar-visible-p frame)
214 (specifier-instance left-toolbar-width) 218 (specifier-instance left-toolbar frame))
219 (specifier-instance left-toolbar-width frame)
215 0)) 220 0))
216 (menubar-height (if current-menubar 22 0))) 221 (menubar-height
222 (if (and buffer
223 (specifier-instance menubar-visible-p)
224 (save-excursion (set-buffer buffer) current-menubar))
225 22 0)))
217 (setq balloon-help-help-object-x 226 (setq balloon-help-help-object-x
218 (+ left xleft-toolbar-width (event-x-pixel event)) 227 (+ left xleft-toolbar-width (event-x-pixel event))
219 balloon-help-help-object-y 228 balloon-help-help-object-y
220 (+ top xtop-toolbar-height menubar-height 229 (+ top xtop-toolbar-height menubar-height
221 (event-y-pixel event)))) 230 (event-y-pixel event))))
333 (setq longest (max longest (current-column)) 342 (setq longest (max longest (current-column))
334 done (not (= 0 (forward-line)))) 343 done (not (= 0 (forward-line))))
335 (and (not done) (setq lines (1+ lines)))) 344 (and (not done) (setq lines (1+ lines))))
336 (set-frame-size balloon-help-frame (+ 1 longest) lines)))) 345 (set-frame-size balloon-help-frame (+ 1 longest) lines))))
337 346
347 (defun balloon-help-make-junk-frame ()
348 (let ((window-min-height 1)
349 (window-min-width 1))
350 (make-frame '(minibuffer t initially-unmapped t width 1 height 1))))
351
338 (defun balloon-help-make-help-frame () 352 (defun balloon-help-make-help-frame ()
339 (save-excursion 353 (save-excursion
340 (setq balloon-help-bar-cursor bar-cursor) 354 (setq balloon-help-bar-cursor bar-cursor)
341 (set-buffer balloon-help-buffer) 355 (set-buffer balloon-help-buffer)
342 (set-buffer-menubar nil) 356 (set-buffer-menubar nil)
347 (frame (make-frame (list 361 (frame (make-frame (list
348 '(initially-unmapped . t) 362 '(initially-unmapped . t)
349 ;; try to evade frame decorations 363 ;; try to evade frame decorations
350 (cons 'name (or balloon-help-frame-name 364 (cons 'name (or balloon-help-frame-name
351 "xclock")) 365 "xclock"))
352 '(border-width . 2) 366 (cons 'border-width balloon-help-border-width)
353 (cons 'border-color balloon-help-border-color) 367 (cons 'border-color balloon-help-border-color)
354 (cons 'top y) 368 (cons 'top y)
355 (cons 'left x) 369 (cons 'left x)
356 (cons 'popup (selected-frame)) 370 (cons 'popup (balloon-help-make-junk-frame))
357 '(width . 3) 371 '(width . 3)
358 '(height . 1))))) 372 '(height . 1)))))
359 (set-face-font 'default balloon-help-font frame) 373 (set-face-font 'default balloon-help-font frame)
360 (set-face-foreground 'default balloon-help-foreground frame) 374 (set-face-foreground 'default balloon-help-foreground frame)
361 (set-face-background 'default balloon-help-background frame) 375 (set-face-background 'default balloon-help-background frame)
371 (set-specifier left-toolbar (cons frame nil)) 385 (set-specifier left-toolbar (cons frame nil))
372 (set-specifier right-toolbar (cons frame nil)) 386 (set-specifier right-toolbar (cons frame nil))
373 (set-specifier bottom-toolbar (cons frame nil)) 387 (set-specifier bottom-toolbar (cons frame nil))
374 (set-specifier scrollbar-width (cons frame 0)) 388 (set-specifier scrollbar-width (cons frame 0))
375 (set-specifier scrollbar-height (cons frame 0)) 389 (set-specifier scrollbar-height (cons frame 0))
390 (and (boundp 'text-cursor-visible-p)
391 (specifierp text-cursor-visible-p)
392 (set-specifier text-cursor-visible-p (cons frame nil)))
376 (set-specifier modeline-shadow-thickness (cons frame 0)) 393 (set-specifier modeline-shadow-thickness (cons frame 0))
377 (set-face-background 'modeline balloon-help-background frame) 394 (set-face-background 'modeline balloon-help-background frame)
378 frame ))) 395 frame )))
379 396
380 (defun balloon-help-compute-help-frame-x-location () 397 (defun balloon-help-compute-help-frame-x-location ()
390 407
391 (add-hook 'mouse-motion-hook 'balloon-help-motion-hook) 408 (add-hook 'mouse-motion-hook 'balloon-help-motion-hook)
392 (add-hook 'pre-command-hook 'balloon-help-pre-command-hook) 409 (add-hook 'pre-command-hook 'balloon-help-pre-command-hook)
393 (add-hook 'post-command-hook 'balloon-help-post-command-hook) 410 (add-hook 'post-command-hook 'balloon-help-post-command-hook)
394 (add-hook 'mouse-leave-frame-hook 'balloon-help-mouse-leave-frame-hook) 411 (add-hook 'mouse-leave-frame-hook 'balloon-help-mouse-leave-frame-hook)
395 (add-hook 'deselect-frame-hook 'balloon-help-deselect-frame-hook) 412 ;; loses with ClickToFocus under fvwm
413 ;;(add-hook 'deselect-frame-hook 'balloon-help-deselect-frame-hook)