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:
parent
4af0c5d762
commit
2e8fc17f07
8 changed files with 22 additions and 18 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue