Bug 1912403 - Remove inline drag-and-drop handlers from navigator-toolbox. r=Gijs

Differential Revision: https://phabricator.services.mozilla.com/D220795
This commit is contained in:
Tom Schuster
2024-10-07 11:50:08 +00:00
parent 990b417605
commit 202ab5bf0c
2 changed files with 85 additions and 20 deletions

View File

@@ -82,9 +82,6 @@
data-l10n-id="tabs-toolbar-new-tab"
command="cmd_newNavigatorTab"
tooltip="dynamic-shortcut-tooltip"
ondrop="newTabButtonObserver.onDrop(event)"
ondragover="newTabButtonObserver.onDragOver(event)"
ondragenter="newTabButtonObserver.onDragOver(event)"
cui-areatype="toolbar"
removable="true"/>
@@ -197,8 +194,7 @@
</box>
<box id="identity-box"
class="identity-box"
pageproxystate="invalid"
ondragstart="gIdentityHandler.onDragStart(event);">
pageproxystate="invalid">
<box id="identity-icon-box"
role="button"
align="center"
@@ -432,9 +428,6 @@
delegatesanchor="true"
badged="true"
key="key_openDownloads"
ondrop="DownloadsIndicatorView.onDrop(event);"
ondragover="DownloadsIndicatorView.onDragOver(event);"
ondragenter="DownloadsIndicatorView.onDragOver(event);"
data-l10n-id="navbar-downloads"
removable="true"
overflows="false"
@@ -573,10 +566,7 @@
<toolbarbutton id="new-window-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
data-l10n-id="appmenuitem-new-window"
command="cmd_newNavigator"
tooltip="dynamic-shortcut-tooltip"
ondrop="newWindowButtonObserver.onDrop(event)"
ondragover="newWindowButtonObserver.onDragOver(event)"
ondragenter="newWindowButtonObserver.onDragOver(event)"/>
tooltip="dynamic-shortcut-tooltip"/>
<toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
observes="View:FullScreen"
@@ -589,11 +579,7 @@
delegatesanchor="true"
type="menu"
data-l10n-id="bookmarks-menu-button"
tooltip="dynamic-shortcut-tooltip"
ondragenter="PlacesMenuDNDHandler.onDragEnter(event);"
ondragover="PlacesMenuDNDHandler.onDragOver(event);"
ondragleave="PlacesMenuDNDHandler.onDragLeave(event);"
ondrop="PlacesMenuDNDHandler.onDrop(event);">
tooltip="dynamic-shortcut-tooltip">
<menupopup id="BMB_bookmarksPopup"
is="places-popup-arrow"
class="toolbar-menupopup animatable-menupopup"
@@ -676,9 +662,6 @@
<toolbarbutton id="home-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
removable="true"
data-l10n-id="navbar-home"
ondragover="homeButtonObserver.onDragOver(event)"
ondragenter="homeButtonObserver.onDragOver(event)"
ondrop="homeButtonObserver.onDrop(event)"
key="goHome"
cui-areatype="toolbar"/>

View File

@@ -389,6 +389,88 @@ document.addEventListener(
capture: true,
});
widgetOverflow.addEventListener("keypress", onKeyPress, { capture: true });
function onDragAndDrop(event) {
let element = event.target.closest(`
#new-tab-button,
#downloads-button,
#new-window-button,
#bookmarks-menu-button,
#home-button
`);
if (!element) {
return;
}
switch (element.id) {
case "new-tab-button":
if (event.type === "dragenter" || event.type === "dragover") {
newTabButtonObserver.onDragOver(event);
} else if (event.type === "drop") {
newTabButtonObserver.onDrop(event);
}
break;
case "downloads-button":
if (event.type === "dragenter" || event.type === "dragover") {
DownloadsIndicatorView.onDragOver(event);
} else if (event.type === "drop") {
DownloadsIndicatorView.onDrop(event);
}
break;
case "new-window-button":
if (event.type === "dragenter" || event.type === "dragover") {
newWindowButtonObserver.onDragOver(event);
} else if (event.type === "drop") {
newWindowButtonObserver.onDrop(event);
}
break;
case "bookmarks-menu-button":
switch (event.type) {
case "dragenter":
PlacesMenuDNDHandler.onDragEnter(event);
break;
case "dragover":
PlacesMenuDNDHandler.onDragOver(event);
break;
case "dragleave":
PlacesMenuDNDHandler.onDragLeave(event);
break;
case "drop":
PlacesMenuDNDHandler.onDrop(event);
break;
}
break;
case "home-button":
if (event.type === "dragenter" || event.type === "dragover") {
homeButtonObserver.onDragOver(event);
} else if (event.type == "drop") {
homeButtonObserver.onDrop(event);
}
break;
default:
throw new Error(`Missing case for #${element.id}`);
}
}
navigatorToolbox.addEventListener("dragenter", onDragAndDrop);
widgetOverflow.addEventListener("dragenter", onDragAndDrop);
navigatorToolbox.addEventListener("dragover", onDragAndDrop);
widgetOverflow.addEventListener("dragover", onDragAndDrop);
navigatorToolbox.addEventListener("dragleave", onDragAndDrop);
widgetOverflow.addEventListener("dragleave", onDragAndDrop);
navigatorToolbox.addEventListener("drop", onDragAndDrop);
widgetOverflow.addEventListener("drop", onDragAndDrop);
document
.getElementById("identity-box")
.addEventListener("dragstart", event => {
gIdentityHandler.onDragStart(event);
});
},
{ once: true }
);