Closed Bug 138265 Opened 22 years ago Closed 22 years ago

0S/2 NS_ACTIVATION event sometime fires late, breaking selection

Categories

(Core :: DOM: UI Events & Focus Handling, defect)

x86
Windows 2000
defect
Not set
normal

Tracking

()

VERIFIED DUPLICATE of bug 145561

People

(Reporter: joki, Assigned: joki)

References

()

Details

This bug was exposed by the fix for bug 56240.  56240 fixes selection state 
getting out of sync when switching applications or losing mouse events for other 
reasons.  We now reset mouse state when we get an NS_ACTIVATION event and start 
over.  The NS_ACTIVATION event should fire before we start handling mouse 
behavior and never after.  Saari, owner of the NS_ACTIVATION event says that's a 
reasonable assumption.  However, it is apparently not true all the time for the 
current OS/2 widget lib and this needs to be fixed.  The reason for this 
variance is not yet clear so we have a couple of options.

1)Leave selection broken until the widget library is fixed.

2)#ifdef the fix for 56240 to not affect OS/2

I vote the second fix for the moment.  However, such temporary fixes often 
become permanent so we may want to fix this right.  Saari says that late 
NS_ACTIVATION event may have other bad effects as well.

The appropriate code is in nsEventStateManager.cpp under NS_ACTIVATE: 
+            //disable selection mousedown state on activation 
+            nsCOMPtr<nsIFrameSelection> frameSel; 
+            shell->GetFrameSelection(getter_AddRefs(frameSel)); 
+            if (frameSel) { 
+              frameSel->SetMouseDownState(PR_FALSE);

I'm told that en.ecomstation.ru exhibits the problem but I have no 0S/2 
workstation to test on.  Thanks to Jessica Blanco for all the debugging info.
By the way.  I can own this for now, and if we go with the temporary #ifdef fix 
I can even write it (though almost anyone else could either).  But if we go with 
the other fix someone else has to take this.  I don't know anything about the 
0S/2 widget library.
Can you give a sequence of events of how things should happen (on Windows for 
instance)

I've been working on the OS/2 focus code trying to get it to mirrow Windows 
better - what I probably need is a better understanding of how Mozilla expects 
things to happen so I can mirror that rather than Windows.

Thanks
*** Bug 134352 has been marked as a duplicate of this bug. ***
I rewrote the OS/2 focus code to be just like Windows and all seems well.

*** This bug has been marked as a duplicate of 145561 ***
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → DUPLICATE
verified dupe
Status: RESOLVED → VERIFIED
Component: Event Handling → User events and focus handling
You need to log in before you can comment on or make changes to this bug.