milkypostman / powerline

emacs powerline
Other
793 stars 118 forks source link

Powerline partially goes inactive when pop-ups are shown #90

Open eigengrau opened 9 years ago

eigengrau commented 9 years ago

When pop-ups are shown, e. g., when using auto-complete mode, or when docstrings are popped up, all powerline components assume their inactive face, while the mode-line component showing the buffer name remains active. This triggers on the first input event after the pop-up, and it goes away after changing into another window and back again, or when clicking inside the current window.

It’s a bit awkward to describe, so I took a video.

http://webmshare.com/V6O0z – Docstring popup. Quirk occurs as the cursor is advanced while the pop-up is shown.

http://webmshare.com/6M6NG – Auto-complete mode pop-up. Quirk occurs as a completion selection is made.

The mode-line is fine even as the pop-up is shown. Only when I generate keyboard input while the pop-up is shown will this behavior trigger.

Thanks for making powerline!

eigengrau commented 9 years ago

In fact this only seems to concern pop-ups. When I just have the auto-complete dropdown open, and no docstrings pop-up, everything will be fine. Also, Emacs-builtin pop-ups cause this (at least when x-gtk-use-system-tooltips is set to nil. Here, too, the quirk only triggers when keyboard input comes in after a pop-up was shown.

http://webmshare.com/6M6dV

garin commented 3 years ago

I have similar issue with posframe.

Reproduction

Using postframe sample from posframe "simple way" (https://github.com/tumashu/posframe#create-a-posframe)

(when (posframe-workable-p)
  (posframe-show " *my-posframe-buffer*"
                 :string "This is a test"
                 :position (point)))

sometime powerline face to inactive.(not anytime)

milkypostman commented 3 years ago

this must be the way that posframe is creating the popup. if you disable Powerline does this not happen with the regular modeling? i.e., it becomes inactive?

garin commented 3 years ago

Not to inactive if powerline disalbe (use regular mode-line).

and, I'm using doom-modeline, not to inactive with posframe. (disabled powerline)

vincentbernat commented 2 years ago

I am able to workaround this issue with:

(defun powerline-set-selected-window ()
  "sets the variable `powerline-selected-window` appropriately"
  (when (and (not (minibuffer-window-active-p (frame-selected-window)))
             (not (frame-parent)))
    (setq powerline-selected-window (frame-selected-window))))