Closed
Bug 10678
Opened 25 years ago
Closed 25 years ago
[BLOCKER] blur event handlers need to know blur type
Categories
(Core :: DOM: UI Events & Focus Handling, defect, P2)
Tracking
()
M12
People
(Reporter: buster, Assigned: saari)
References
()
Details
(Whiteboard: [PDT+])
There are at least 3 different ways for a control to lose focus: 1) a focus switch within the app, 2) a focus switch from the content area to a chrome widget (like a toolbar button or a menu) 3) the app itself loses focus. For the editor, each of these requires a different action. 1) when focus switches from an editor text control to another control in the content area, selection is cleared from the editor text control. 2) when focus is switched from an editor text control to chrome, the editor does nothing (selection is maintained and shown exactly as it was) 3) when an editor text control has focus, and the app loses focus to another app, selection is hidden but not cleared, so that when focus is restored to the app selection is painted as if nothing happened. We clearly can't do these things unless the Blur event gives us a way to differentiate. Joki and I have had conversations about this, but I don't see it as part of the event system, and we need it to enable GFX-rendered text widgets properly.
Updated•25 years ago
|
Status: NEW → ASSIGNED
Comment 1•25 years ago
|
||
I believe that 1 and 3 are in fact the same. You'll notice the behavior in 4.x that if you select text in an edit field, hit tab to move away, and then hit shift-tab to move back the selection is maintained. So in the case of either app focus lost or focus shifting within the content area, hiding the selection for possible redisplay is sufficient. This interesting question is switching focus to the chrome area. Additionally, a switch to chrome doesn't necessarily mean you keep your selection. Switching to the location bar, for example, is a switch to chrome which, because it can create its own selection, would turn off selection in a text field. This to me indicates that either the chrome has to be involved in the decision of whether to hide selection or we need a set of rules determining what to do for different chrome areas. Not saying I've solved this yet but just dumping thoughts for now.
Updated•25 years ago
|
Summary: [BLOCKER] blur event handlers need a way of knowing what kind of blus has occurred → [BLOCKER] blur event handlers need to know blur type
Comment 2•25 years ago
|
||
more consise summary
There's another type of focus loss that might have different behavior for the editor. When the editor loses focus to a dialog, it will want to keep selection painted. Think about find, or spell check. So, if dialogs are considered chrome somehow, this usage would fall under the same category. But, would a control in a dialog really be considered chrome? cc-ing hyatt, since this focus issue probably involves some knowledge about chrome on the part of the focus manager.
Comment 5•25 years ago
|
||
I have an idea for doing this that might be pretty simple to implement. I recently added code that ensured that on a focus change resulting from a click that the parent chain of the newly clicked item is crawled for an nsIFocusableContent. If one is found, then the focus gets set to that object. Regardless, the current node loses focus. So here's the idea. Add a new method to nsIFocusableContent, e.g., AllowsFocus. For special chrome elements like toolbars, this method could return false. Then we wouldn't lose focus. I'm willing to try this out if joki is swamped.
I don't think hyatt's it a complete solution. While that will stop menu items, tool bar buttons, etc. from stealing focus, it doesn't address dialogs. We would still have the issue where the content area needs to know it's losing focus to a dialog (or more properly, to some as-yet-unnamed setof things of which dialogs might not be the only member...) To understand why this matters, consider the "Find" dialog. When the user interacts with the find dialog, the content area must still show selection even though it doesn't have focus. Otherwise, Find is pretty useless. Focus will be owned by one of the controls of the Find dialog.
Comment 7•25 years ago
|
||
any decisions or fixes ready for this?
Updated•25 years ago
|
Assignee: joki → hyatt
Status: ASSIGNED → NEW
Comment 8•25 years ago
|
||
Okay, I've talked to hyatt about this. The current situation is that hyatt is going to attempt his current solution. As buster points out, this does not handle the dialog window case. We don't have a good answer on that one yet. We'll keep working on it. For now, I'm going to reassign this to hyatt so we have a placemarker for the stuff he's working on. After that's done I'll take it back and we'll try to find a solution for the dialog issue but that part will happen post M10
Updated•25 years ago
|
Target Milestone: M10 → M11
Comment 9•25 years ago
|
||
m11
Comment 10•25 years ago
|
||
Putting on [PDT+]radar.
Updated•25 years ago
|
Assignee: hyatt → saari
Comment 11•25 years ago
|
||
reassigning to saari
Updated•25 years ago
|
Target Milestone: M11 → M12
Comment 12•25 years ago
|
||
saari, typing for hyatt - Look at the way selection works in 4.x today... selection doesn't change. This isn't a dogfood issue for the Find dialog example. The rest of the issues will be fixed with my landing in M12.
Assignee | ||
Updated•25 years ago
|
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → DUPLICATE
Assignee | ||
Comment 13•25 years ago
|
||
I landing the changes that fix all but the dialog case... which I commented on in bug 11425 which is more focused on that problem. So, I'm marking this a dup of that bug. *** This bug has been marked as a duplicate of 11425 ***
Updated•25 years ago
|
Status: RESOLVED → VERIFIED
Comment 14•25 years ago
|
||
Marking VERIFIED DUPLICATE per sarri's comments.
Updated•5 years ago
|
Component: Event Handling → User events and focus handling
You need to log in
before you can comment on or make changes to this bug.
Description
•