commit 567eaa35d8bc0f0f08a0db19177a613a47cc8ec3
parent f3e6a0d058e9199bf05702704644044f5b09a0b7
Author: Emilio Cobos Álvarez <emilio@crisal.io>
Date: Mon, 13 Oct 2025 07:54:06 +0000
Bug 1993855 - Don't go through the view tree in nsContentUtils::WidgetFor*. r=layout-reviewers,tnikkel
No behavior change, but makes bug 1933181 smaller.
Differential Revision: https://phabricator.services.mozilla.com/D268326
Diffstat:
1 file changed, 6 insertions(+), 13 deletions(-)
diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
@@ -7816,16 +7816,10 @@ nsIWidget* nsContentUtils::WidgetForDocument(const Document* aDocument) {
nsIWidget* nsContentUtils::WidgetForContent(const nsIContent* aContent) {
nsIFrame* frame = aContent->GetPrimaryFrame();
- if (frame) {
- frame = nsLayoutUtils::GetDisplayRootFrame(frame);
-
- nsView* view = frame->GetView();
- if (view) {
- return view->GetWidget();
- }
+ if (!frame) {
+ return nullptr;
}
-
- return nullptr;
+ return frame->GetNearestWidget();
}
WindowRenderer* nsContentUtils::WindowRendererForContent(
@@ -7840,11 +7834,9 @@ WindowRenderer* nsContentUtils::WindowRendererForContent(
WindowRenderer* nsContentUtils::WindowRendererForDocument(
const Document* aDoc) {
- nsIWidget* widget = nsContentUtils::WidgetForDocument(aDoc);
- if (widget) {
+ if (nsIWidget* widget = nsContentUtils::WidgetForDocument(aDoc)) {
return widget->GetWindowRenderer();
}
-
return nullptr;
}
@@ -9430,7 +9422,8 @@ nsIWidget* nsContentUtils::GetWidget(PresShell* aPresShell, nsPoint* aOffset) {
if (!frame) {
return nullptr;
}
- return frame->GetView()->GetNearestWidget(aOffset);
+ return aOffset ? frame->GetNearestWidget(*aOffset)
+ : frame->GetNearestWidget();
}
int16_t nsContentUtils::GetButtonsFlagForButton(int32_t aButton) {