Enable unfocused windows to update their status based on whether they are clickable or not
- Fixed #9784 By removing the interception of the MouseMove event, zed can update the corresponding Hover even when it is inactive
Thanks for the pull request, @weartist!
I genuinely don't remember why we were ignoring move events if the window was not the active one. I think we were trying to replicate the behavior on macOS? e.g.
https://github.com/zed-industries/zed/assets/482957/10e0a960-b5cc-4e33-bc14-7b4a8cc21912
However, after https://github.com/zed-industries/zed/pull/9553, I guess we'll be able to receive clicks even when the window is not focused. Interestingly, it seems like something that not all elements opt into doing though...
So my only concern with these changes is the sheer amount of move events all windows will receive even when not focused. Like, is each window going to observe a mouse event at all times when the mouse moves now? Can we double check what impact that has on the CPU? Thanks! 🙏
Thanks for the pull request, @weartist!
I genuinely don't remember why we were ignoring move events if the window was not the active one. I think we were trying to replicate the behavior on macOS? e.g.
Export-1713255079552.mp4 However, after #9553, I guess we'll be able to receive clicks even when the window is not focused. Interestingly, it seems like something that not all elements opt into doing though...
So my only concern with these changes is the sheer amount of move events all windows will receive even when not focused. Like, is each window going to observe a mouse event at all times when the mouse moves now? Can we double check what impact that has on the CPU? Thanks! 🙏
Your concern is right, and the good news is that we only have one window at most that can receive the event, and need that window to be the topmost window of the current mouse position. So I guess it shouldn't have much of an impact on CPU usage, because if the event is received by our window, then the window is currently in a state where it should be received, later I can test it with instrument
Providing a time profile parsing file, I opened three ZED windows during testing, one of which contained ZED's source code project, and the other two were slightly smaller, I'm a beginner for time profile, and if someone can have a better way or find someting, I think it would be great
I just confirmed that the move event will only be dispatched on one window, so I think we're good. Thanks @weartist!