mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-10 10:18:38 +09:00
Issue #2362 - Fix click handling according to the spec.
This removes some hackery surrounding preventing content clicks, and in general handles auxclick as it should, firing that event on secondary buttons (wheel/right on default setup for right-handed mouse).
This commit is contained in:
parent
73bf6f95f8
commit
dc253ce953
8 changed files with 82 additions and 85 deletions
|
|
@ -812,37 +812,48 @@ Event::GetEventPopupControlState(WidgetEvent* aEvent, nsIDOMEvent* aDOMEvent)
|
|||
}
|
||||
break;
|
||||
case eMouseEventClass:
|
||||
if (aEvent->IsTrusted() &&
|
||||
aEvent->AsMouseEvent()->button == WidgetMouseEvent::eLeftButton) {
|
||||
switch(aEvent->mMessage) {
|
||||
case eMouseUp:
|
||||
if (PopupAllowedForEvent("mouseup")) {
|
||||
if (aEvent->IsTrusted()) {
|
||||
if(aEvent->AsMouseEvent()->button == WidgetMouseEvent::eLeftButton) {
|
||||
switch(aEvent->mMessage) {
|
||||
case eMouseUp:
|
||||
if (PopupAllowedForEvent("mouseup")) {
|
||||
abuse = openControlled;
|
||||
}
|
||||
break;
|
||||
case eMouseDown:
|
||||
if (PopupAllowedForEvent("mousedown")) {
|
||||
abuse = openControlled;
|
||||
}
|
||||
break;
|
||||
case eMouseClick:
|
||||
/* Click events get special treatment because of their
|
||||
historical status as a more legitimate event handler. If
|
||||
click popups are enabled in the prefs, clear the popup
|
||||
status completely. */
|
||||
if (PopupAllowedForEvent("click")) {
|
||||
abuse = openAllowed;
|
||||
}
|
||||
break;
|
||||
case eMouseDoubleClick:
|
||||
if (PopupAllowedForEvent("dblclick")) {
|
||||
abuse = openControlled;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (aEvent->mMessage == eMouseAuxClick) {
|
||||
// Not eLeftButton
|
||||
// There's not a strong reason to ignore other events (eg eMouseUp)
|
||||
// for non-primary clicks as far as we know, so we could add them if
|
||||
// it becomes a compat issue
|
||||
if (PopupAllowedForEvent("auxclick")) {
|
||||
abuse = openControlled;
|
||||
}
|
||||
break;
|
||||
case eMouseDown:
|
||||
if (PopupAllowedForEvent("mousedown")) {
|
||||
abuse = openControlled;
|
||||
}
|
||||
break;
|
||||
case eMouseClick:
|
||||
/* Click events get special treatment because of their
|
||||
historical status as a more legitimate event handler. If
|
||||
click popups are enabled in the prefs, clear the popup
|
||||
status completely. */
|
||||
if (PopupAllowedForEvent("click")) {
|
||||
abuse = openAllowed;
|
||||
}
|
||||
break;
|
||||
case eMouseDoubleClick:
|
||||
if (PopupAllowedForEvent("dblclick")) {
|
||||
abuse = openControlled;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
abuse = openOverridden;
|
||||
}
|
||||
}
|
||||
} // IsTrusted()
|
||||
break;
|
||||
case ePointerEventClass:
|
||||
if (aEvent->IsTrusted() &&
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue