>From 36a9a38619d2b1658a2ee4b96faa89a2b17843ae Mon Sep 17 00:00:00 2001 From: Alan Third Date: Wed, 10 Jan 2018 23:03:36 +0000 Subject: [PATCH] Implement rubbish frame-base tooltips --- lisp/tooltip.el | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/lisp/tooltip.el b/lisp/tooltip.el index 81df229a13..2117d2aaa3 100644 --- a/lisp/tooltip.el +++ b/lisp/tooltip.el @@ -190,6 +190,8 @@ tooltip-hide-time (defvar gud-tooltip-mode) ;; Prevent warning. +(defvar tooltip-frame) + ;;; Event accessors (defun tooltip-event-buffer (event) @@ -262,12 +264,41 @@ tooltip-show (setf (alist-get 'border-color params) fg)) (when (stringp bg) (setf (alist-get 'background-color params) bg)) - (x-show-tip (propertize text 'face 'tooltip) - (selected-frame) - params - tooltip-hide-delay - tooltip-x-offset - tooltip-y-offset)) + (let* ((buf (get-buffer-create "*tooltip*")) + (frame (make-frame + (append + `((no-focus-on-map . t) + (undecorated . t) + (tool-bar-lines . 0) + (menu-bar-lines . 0) + (minibuffer . nil) + (vertical-scroll-bars . nil) + (horizontal-scroll-bars . nil) + (left-fringe . 0) + (right-fringe . 0)) + (if (not (alist-get 'left params)) + `((left . ,(+ tooltip-x-offset (car (mouse-absolute-pixel-position))))) + '()) + (if (not (alist-get 'top params)) + `((top . ,(+ tooltip-y-offset (cdr (mouse-absolute-pixel-position))))) + '()) + params)))) + (with-current-buffer buf + (erase-buffer) + (insert (propertize text 'face 'tooltip))) + (set-window-buffer (frame-root-window frame) buf) + (setq tooltip-frame frame) + (run-at-time tooltip-hide-delay nil + (lambda () (delete-frame tooltip-frame)))) + + + ;; (x-show-tip (propertize text 'face 'tooltip) + ;; (selected-frame) + ;; params + ;; tooltip-hide-delay + ;; tooltip-x-offset + ;; tooltip-y-offset)) + ) (error (message "Error while displaying tooltip: %s" error) (sit-for 1) @@ -279,6 +310,8 @@ tooltip-hide "Hide a tooltip, if one is displayed. Value is non-nil if tooltip was open." (tooltip-cancel-delayed-tip) + ;; (if (not (null tooltip-frame)) + ;; (delete-frame tooltip-frame)) (when (x-hide-tip) (setq tooltip-hide-time (float-time)))) -- 2.14.3