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, int positioning_item,
ui::mojom::MenuSourceType source_type, ui::mojom::MenuSourceType source_type,
base::OnceClosure callback) { base::OnceClosure callback) {
auto* native_window = static_cast<NativeWindowViews*>(window->window()); const NativeWindow* native_window = window->window();
if (!native_window) if (!native_window)
return; return;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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