refactor: pass views::Widget* into constructors of our TreeHosts and NativeWidgets (#47177)

* refactor: remove unnecessary downcast in MenuViews::PopupAt()

* refactor: pass a views::Widget as an arg to the ElectronDesktopWindowTreeHostLinux ctor

* refactor: pass a views::Widget as an arg to the ElectronDesktopNativeWidgetAura ctor

* refactor: pass a views::Widget as an arg to the ElectronDesktopWindowTreeHostWin ctor

* refactor: create desktop_window_tree_host_ in the ElectronDesktopNativeWidgetAura constructor

* fixup! refactor: create desktop_window_tree_host_ in the ElectronDesktopNativeWidgetAura constructor

fix: tyop
This commit is contained in:
Charles Kerr 2025-05-21 16:02:55 -05:00 committed by GitHub
commit 2e8fc17f07
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 22 additions and 18 deletions

View file

@ -27,7 +27,7 @@ void MenuViews::PopupAt(BaseWindow* window,
int positioning_item,
ui::mojom::MenuSourceType source_type,
base::OnceClosure callback) {
auto* native_window = static_cast<NativeWindowViews*>(window->window());
const NativeWindow* native_window = window->window();
if (!native_window)
return;

View file

@ -290,7 +290,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper::Dictionary& options,
if (parent)
params.parent = parent->GetNativeWindow();
params.native_widget = new ElectronDesktopNativeWidgetAura(this);
params.native_widget = new ElectronDesktopNativeWidgetAura{this, widget()};
#elif BUILDFLAG(IS_LINUX)
std::string name = Browser::Get()->GetName();
// Set WM_WINDOW_ROLE.
@ -304,7 +304,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper::Dictionary& options,
auto* native_widget = new views::DesktopNativeWidgetAura(widget());
params.native_widget = native_widget;
params.desktop_window_tree_host =
new ElectronDesktopWindowTreeHostLinux(this, native_widget);
new ElectronDesktopWindowTreeHostLinux{this, widget(), native_widget};
#endif
widget()->Init(std::move(params));

View file

@ -33,10 +33,10 @@ namespace electron {
ElectronDesktopWindowTreeHostLinux::ElectronDesktopWindowTreeHostLinux(
NativeWindowViews* native_window_view,
views::Widget* widget,
views::DesktopNativeWidgetAura* desktop_native_widget_aura)
: views::DesktopWindowTreeHostLinux(native_window_view->widget(),
desktop_native_widget_aura),
native_window_view_(native_window_view) {}
: views::DesktopWindowTreeHostLinux{widget, desktop_native_widget_aura},
native_window_view_{native_window_view} {}
ElectronDesktopWindowTreeHostLinux::~ElectronDesktopWindowTreeHostLinux() =
default;

View file

@ -29,6 +29,7 @@ class ElectronDesktopWindowTreeHostLinux
public:
ElectronDesktopWindowTreeHostLinux(
NativeWindowViews* native_window_view,
views::Widget* widget,
views::DesktopNativeWidgetAura* desktop_native_widget_aura);
~ElectronDesktopWindowTreeHostLinux() override;

View file

@ -14,9 +14,12 @@
namespace electron {
ElectronDesktopNativeWidgetAura::ElectronDesktopNativeWidgetAura(
NativeWindowViews* native_window_view)
: views::DesktopNativeWidgetAura(native_window_view->widget()),
native_window_view_(native_window_view) {
NativeWindowViews* native_window_view,
views::Widget* widget)
: views::DesktopNativeWidgetAura{widget},
native_window_view_{native_window_view},
desktop_window_tree_host_{new ElectronDesktopWindowTreeHostWin{
native_window_view, widget, this}} {
GetNativeWindow()->SetName("ElectronDesktopNativeWidgetAura");
// This is to enable the override of OnWindowActivated
wm::SetActivationChangeObserver(GetNativeWindow(), this);
@ -24,9 +27,7 @@ ElectronDesktopNativeWidgetAura::ElectronDesktopNativeWidgetAura(
void ElectronDesktopNativeWidgetAura::InitNativeWidget(
views::Widget::InitParams params) {
desktop_window_tree_host_ = new ElectronDesktopWindowTreeHostWin(
native_window_view_,
static_cast<views::DesktopNativeWidgetAura*>(params.native_widget));
CHECK_EQ(params.native_widget, this);
params.desktop_window_tree_host = desktop_window_tree_host_;
views::DesktopNativeWidgetAura::InitNativeWidget(std::move(params));
}

View file

@ -18,7 +18,8 @@ class NativeWindowViews;
class ElectronDesktopNativeWidgetAura : public views::DesktopNativeWidgetAura {
public:
explicit ElectronDesktopNativeWidgetAura(
NativeWindowViews* native_window_view);
NativeWindowViews* native_window_view,
views::Widget* widget);
// disable copy
ElectronDesktopNativeWidgetAura(const ElectronDesktopNativeWidgetAura&) =
@ -40,10 +41,10 @@ class ElectronDesktopNativeWidgetAura : public views::DesktopNativeWidgetAura {
aura::Window* gained_active,
aura::Window* lost_active) override;
raw_ptr<NativeWindowViews> native_window_view_;
const raw_ptr<NativeWindowViews> native_window_view_;
// Owned by DesktopNativeWidgetAura.
raw_ptr<views::DesktopWindowTreeHost> desktop_window_tree_host_;
const raw_ptr<views::DesktopWindowTreeHost> desktop_window_tree_host_;
};
} // namespace electron

View file

@ -16,10 +16,10 @@ namespace electron {
ElectronDesktopWindowTreeHostWin::ElectronDesktopWindowTreeHostWin(
NativeWindowViews* native_window_view,
views::Widget* widget,
views::DesktopNativeWidgetAura* desktop_native_widget_aura)
: views::DesktopWindowTreeHostWin(native_window_view->widget(),
desktop_native_widget_aura),
native_window_view_(native_window_view) {}
: views::DesktopWindowTreeHostWin{widget, desktop_native_widget_aura},
native_window_view_{native_window_view} {}
ElectronDesktopWindowTreeHostWin::~ElectronDesktopWindowTreeHostWin() = default;

View file

@ -20,6 +20,7 @@ class ElectronDesktopWindowTreeHostWin : public views::DesktopWindowTreeHostWin,
public:
ElectronDesktopWindowTreeHostWin(
NativeWindowViews* native_window_view,
views::Widget* widget,
views::DesktopNativeWidgetAura* desktop_native_widget_aura);
~ElectronDesktopWindowTreeHostWin() override;