From xemacs-m  Sun Apr 13 03:22:05 1997
Received: from vnet.IBM.COM (vnet.ibm.com [199.171.26.4])
	by xemacs.org (8.8.5/8.8.5) with SMTP id DAA00966
	for <xemacs-beta@xemacs.org>; Sun, 13 Apr 1997 03:22:05 -0500 (CDT)
Received: from FISHKILL by vnet.IBM.COM (IBM VM SMTP V2R3) with BSMTP id 3081;
   Sun, 13 Apr 97 04:22:06 EDT
Received: by FISHKILL (XAGENTA 4.0) id 0938; Sun, 13 Apr 1997 04:18:51 -0400 
Received: by spacedog.fishkill.ibm.com (AIX 3.2/UCB 5.64/4.03)
          id AA23002; Sun, 13 Apr 1997 04:21:56 -0400
Date: Sun, 13 Apr 1997 04:21:56 -0400
Message-Id: <9704130821.AA23002@spacedog.fishkill.ibm.com>
From: "Doug Keller" <dkeller@vnet.IBM.COM>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
To: xemacs-beta@xemacs.org
Subject: Real balloon help intergrated with XEmacs
X-Mailer: VM 6.22 under 19.15 XEmacs Lucid

I finally put the finishing touches on my balloon help code and did a
quick hack to intergrate into XEmacs.

All I did was add three new commands:

  (show-balloon-help STRING)

    Pops up balloon help after 0.5 seconds showing STRING, STRING can
    contain \n's.

  (hide-balloon-help)

    Closes balloon help.

  (balloon-help-move-to-pointer)

    Moves the balloon help window to the pointer.

There are three new C files that have this code:

  balloon_help.[ch] and balloon-x.c

Current balloon-x.c has some real hacks in it to get the X display and
it hard codes the color and font used for the window.

To try the balloon help out I changed the modeline echo functions to
also display "help-echo" text in a balloon help window.

  (defun clear-help-echo (&optional ignored-frame)
    (if help-echo-owns-message
        (progn
          (setq help-echo-owns-message nil
                last-help-echo-object nil)
          (clear-message 'help-echo)
          (if (featurep 'balloon-help)
              (hide-balloon-help)))))

  (defun show-help-echo (mess)
    ;; (clear-help-echo)
    (setq help-echo-owns-message t)
    (display-message 'help-echo mess)
    (if (featurep 'balloon-help)
        (show-balloon-help mess)))

The code follows if anyone wants to play with it:

Patch to emacs.c to init balloon help:

*** emacs.c.orig        Sun Mar 16 00:56:13 1997
--- emacs.c     Sun Apr 13 15:44:25 1997
***************
*** 852,857 ****
--- 852,860 ----
  #ifdef HAVE_MENUBARS
        syms_of_menubar_x ();
  #endif
+ #if 1
+       syms_of_balloon_x ();
+ #endif
        syms_of_xselect ();
  #ifdef EPOCH
        syms_of_epoch ();
***************
*** 1150,1155 ****
--- 1153,1161 ----
        vars_of_glyphs_x ();
  #ifdef HAVE_MENUBARS
        vars_of_menubar_x ();
+ #endif
+ #if 1
+       vars_of_balloon_x ();
  #endif
        vars_of_objects_x ();
        vars_of_xselect ();


begin 644 balloon.tar.gz
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
"``!5
`
end

