electron icon indicating copy to clipboard operation
electron copied to clipboard

[Bug]: Confirm/Alert popups break focus

Open LqdBcnAtWork opened this issue 11 months ago • 12 comments

Preflight Checklist

Electron Version

29.1.4

What operating system are you using?

Windows

Operating System Version

Edition: Windows 10 Home | Version: 22H2 | OS build: 19045.4170 | Experience: Windows Feature Experience Pack 1000.19054.1000.0

What arch are you using?

x64

Last Known Working Electron version

No response

Expected Behavior

Using a popup (alert or confirm) then trying to focus an input element shouldn't cause issues.

Actual Behavior

When the application is launched, there are no problems interacting with an input element.

After clicking on a popup from confirm or alert, trying to focus the window that just caused the popup (namely an input element) will no longer work.

Focusing on another window and refocusing the window repairs the issue.

Testcase Gist URL

https://gist.github.com/LqdBcnAtWork/9af23d4faa33e74874cd08ffbc8e4ed6

Additional Information

I've noticed this issue for a while, but didn't catch onto the issue being caused by popups. I thought it was random and was caused by some strange interaction with focus that I was causing on my end. Having diagnosed the problem's cause, creating a Fiddle that could replicate it took seconds.

I mention this because it means the issue has existed for many major versions of Electron. How far back is unknown to me. But it goes at least as far back as version 21. I tried version 12.2.3 for fun with Fiddle and the problem persists.

I believe this is caused by the popup taking focus, but the window doesn't recognise that it gets focus back when the popup is closed. I also think this issue might be on Chromium's end. But I'm unsure since neither Chrome or Edge (the only other Chromium apps I have available to me) use the same kind of popup for alert and confirm or display this issue.

LqdBcnAtWork avatar Mar 15 '24 11:03 LqdBcnAtWork

here is the main code.. function showAlert() { alert("This is a test alert."); window.focus(); } function showPopupAndFocusInput() { alert("This is a test alert."); document.getElementById("myInput").focus(); window.focus(); }

Maniiisha-sachdeva avatar Mar 16 '24 06:03 Maniiisha-sachdeva

I can confirm this on Ubuntu, however, I cannot confirm the claim that this has always been this way. The Fiddle works perfectly fine for me with v28.2.7 and breaks starting with v29.0.0-alpha.1. v27.3.6 and v26.6.10 also work for me.

Prinzhorn avatar Mar 16 '24 08:03 Prinzhorn

I can confirm this on Ubuntu, however, I cannot confirm the claim that this has always been this way. The Fiddle works perfectly fine for me with v28.2.7 and breaks starting with v29.0.0-alpha.1. v27.3.6 and v26.6.10 also work for me.

I would not be surprised if Windows changed something that broke it for Electron.

@Maniiisha-sachdeva are you implying that calling window.focus(); after a popup will repair this focus issue?

I'll have to try this on Monday.

LqdBcnAtWork avatar Mar 16 '24 20:03 LqdBcnAtWork

I tried calling window.focus and .focus on an input element, and neither fixed the focus issue.

Also tried these versions:
(just the alert/confirm bug, not the focus function)

version       worked
28.2.7        ❌
27.3.6        ❌
26.6.10       ❌
21.0.0-beta.3 ❌ //the version of 21 that I noticed the issue with previously.
24.1.0        ❌ //version I had bumped the project to from 21.

Seeing that v28, v27 and v26 failed for me but not @Prinzhorn, I believe this is primarily a Windows issue. I can't test other versions of Windows unfortunatly. But I find it quite bizarre that it stops working on Ubuntu with v29.

Either way it's reassuring that it's not just me and my code. I'll have to implement a workaround for now.

edit: changed emoji for clarity.

LqdBcnAtWork avatar Mar 18 '24 10:03 LqdBcnAtWork

in this when i changed the input type to number then i am able to change the number by its up and down arrow but not able to type in it and as i am switching the tab its started working can i work on it further?

m-eraf avatar Mar 19 '24 06:03 m-eraf

This issue has been automatically marked as stale. If this issue is still affecting you, please leave any comment (for example, "bump"), and we'll keep it open. If you have any new additional information—in particular, if this is still reproducible in the latest version of Electron or in the beta—please include it with your comment!

Tried the fiddle with 31.0.1 and 32.0.0-alpha.2

Still broken for me.

LqdBcnAtWork avatar Jun 18 '24 10:06 LqdBcnAtWork

dupe of this, right? https://github.com/electron/electron/issues/31917

pushkin- avatar Jun 28 '24 21:06 pushkin-

dupe of this, right? https://github.com/electron/electron/issues/31917

Huh, didn't find that before. It's 3 years old too.

Lovely.

LqdBcnAtWork avatar Jun 28 '24 22:06 LqdBcnAtWork

hello guys, please use electron version lower than 29.

use electron 28.3.3 it will solve you problem.

vaibhavpanday avatar Aug 09 '24 08:08 vaibhavpanday

please use electron version lower than 29.

Nice try 🕵️‍♂️💻, end of life was 11 Jun 2024

Prinzhorn avatar Aug 09 '24 08:08 Prinzhorn

@vaibhavpanday hello guys, please use electron version lower than 29.

use electron 28.3.3 it will solve you problem.

What Prinzhorn said about being EOL. Plus that version also doesn't work. Just tested it to see.

Honestly something like what I mentioned here would not only give us an option to solve this issue, but it would add a bunch more as well.

LqdBcnAtWork avatar Aug 09 '24 11:08 LqdBcnAtWork