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,
|
||||
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;
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -29,6 +29,7 @@ class ElectronDesktopWindowTreeHostLinux
|
|||
public:
|
||||
ElectronDesktopWindowTreeHostLinux(
|
||||
NativeWindowViews* native_window_view,
|
||||
views::Widget* widget,
|
||||
views::DesktopNativeWidgetAura* desktop_native_widget_aura);
|
||||
~ElectronDesktopWindowTreeHostLinux() override;
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue