Skip to content

Commit c52c1a5

Browse files
committed
[ui-controls] make sure that posframe is workable
Fixes #409
1 parent 05ff9ec commit c52c1a5

File tree

1 file changed

+45
-44
lines changed

1 file changed

+45
-44
lines changed

dap-ui.el

Lines changed: 45 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -501,50 +501,51 @@ DEBUG-SESSION is the debug session triggering the event."
501501
'help-echo hover-text))
502502

503503
(defun dap-ui--update-controls (&rest _)
504-
(let* ((session (dap--cur-session))
505-
(stopped? (and session (dap--debug-session-active-frame session)))
506-
(running? (and session (dap--session-running session))))
507-
(if running?
508-
(let ((content (s-concat
509-
(dap-ui--create-command "continue.png" #'dap-continue "Continue")
510-
" "
511-
(dap-ui--create-command (if stopped?
512-
"step-over.png"
513-
"step-over-disabled.png")
514-
(when stopped? #'dap-next)
515-
(if stopped? "Step over"
516-
"Session not stopped?"))
517-
" "
518-
(dap-ui--create-command (if stopped? "step-out.png"
519-
"step-out-disabled.png")
520-
(when stopped? #'dap-step-out)
521-
(if stopped? "Step out"
522-
"Session not stopped? "))
523-
" "
524-
(dap-ui--create-command (if stopped? "step-into.png"
525-
"step-into-disabled.png")
526-
(when stopped? #'dap-step-in)
527-
(if stopped? "Step in"
528-
"Session not stopped?"))
529-
" "
530-
(dap-ui--create-command "disconnect.png" #'dap-disconnect "Disconnect")
531-
" "
532-
(dap-ui--create-command "restart.png" #'dap-debug-restart "Restart")))
533-
posframe-mouse-banish
534-
(pos-frame (-first
535-
(lambda (frame)
536-
(let ((buffer-info (frame-parameter frame 'posframe-buffer)))
537-
(or (equal dap-ui--control-buffer (car buffer-info))
538-
(equal dap-ui--control-buffer (cdr buffer-info)))))
539-
(frame-list))))
540-
(ignore posframe-mouse-banish)
541-
(when (eq (selected-frame) pos-frame)
542-
(select-frame (frame-parent pos-frame)))
543-
(posframe-show dap-ui--control-buffer
544-
:string content
545-
:poshandler #'posframe-poshandler-frame-top-center
546-
:internal-border-width 8))
547-
(posframe-hide dap-ui--control-buffer))))
504+
(when (posframe-workable-p)
505+
(let* ((session (dap--cur-session))
506+
(stopped? (and session (dap--debug-session-active-frame session)))
507+
(running? (and session (dap--session-running session))))
508+
(if running?
509+
(let ((content (s-concat
510+
(dap-ui--create-command "continue.png" #'dap-continue "Continue")
511+
" "
512+
(dap-ui--create-command (if stopped?
513+
"step-over.png"
514+
"step-over-disabled.png")
515+
(when stopped? #'dap-next)
516+
(if stopped? "Step over"
517+
"Session not stopped?"))
518+
" "
519+
(dap-ui--create-command (if stopped? "step-out.png"
520+
"step-out-disabled.png")
521+
(when stopped? #'dap-step-out)
522+
(if stopped? "Step out"
523+
"Session not stopped? "))
524+
" "
525+
(dap-ui--create-command (if stopped? "step-into.png"
526+
"step-into-disabled.png")
527+
(when stopped? #'dap-step-in)
528+
(if stopped? "Step in"
529+
"Session not stopped?"))
530+
" "
531+
(dap-ui--create-command "disconnect.png" #'dap-disconnect "Disconnect")
532+
" "
533+
(dap-ui--create-command "restart.png" #'dap-debug-restart "Restart")))
534+
posframe-mouse-banish
535+
(pos-frame (-first
536+
(lambda (frame)
537+
(let ((buffer-info (frame-parameter frame 'posframe-buffer)))
538+
(or (equal dap-ui--control-buffer (car buffer-info))
539+
(equal dap-ui--control-buffer (cdr buffer-info)))))
540+
(frame-list))))
541+
(ignore posframe-mouse-banish)
542+
(when (eq (selected-frame) pos-frame)
543+
(select-frame (frame-parent pos-frame)))
544+
(posframe-show dap-ui--control-buffer
545+
:string content
546+
:poshandler #'posframe-poshandler-frame-top-center
547+
:internal-border-width 8))
548+
(posframe-hide dap-ui--control-buffer)))))
548549

549550
;;;###autoload
550551
(define-minor-mode dap-ui-controls-mode

0 commit comments

Comments
 (0)