Mouse-up events that happen when the mouse is outside a browser window seem to not be delivered.
Steps to reproduce:
1. Go to http://maps.google.com
2. Click the mouse anywhere on the mouse, drag until the mouse pointer goes outside the Safari window
3. Release the mouse button
4. Move the mouse pointer back into the window
Results: the map scrolls, although the mouse button is not down
Expected results (as in Safari 2.0.2): it shouldn't
Appears related to bug 4822.
Adding Regression keyword.
I'm guessing that either a mouseup or mouseout event is not being delivered that's supposed to be. According to my reading of the DOM specification, the mouseup event goes to whatever element you're over when the mouse goes up. So what if you're not over any element at all (outside the window)?
(In reply to comment #4)
> I'm guessing that either a mouseup or mouseout event is not being delivered
> that's supposed to be. According to my reading of the DOM specification, the
> mouseup event goes to whatever element you're over when the mouse goes up. So
> what if you're not over any element at all (outside the window)?
The bug could be on a lower level, if it is related to another thing I observed when leaving the window during a drag operation: if you start dragging the separator between two frames and leave the window, the separator stops following the mouse, and remains active even if you release the mouse button. If you return to the window, it starts tracking the mouse again, even if the button is up.
Yes, here, too, the problem show already when the mouse leaves the window and the map stops following it. In shipping Safari, the map keeps moving even when the mouse is outside the window for as long as the button is pressed.
I tracked this bug down to this change, from r11105 (Fix hit testing of relative positioned inline flows inside clipped overflow blocks so that they aren't mistakenly included in hit testing):
bool RenderLayer::containsPoint(int x, int y, const QRect& damageRect) const
- return mustExamineRenderer(renderer()) || damageRect.contains(x, y);
+ return damageRect.contains(x, y);
Undoing this change alone fixes the regression (and the frame-resize separator issue too).
Created attachment 6987 [details]
Comment on attachment 6987 [details]
Mass moving XML DOM bugs to the "DOM" Component.