Remove JS override of setMenu
This commit is contained in:
parent
f198148c79
commit
9b9108f789
3 changed files with 17 additions and 14 deletions
|
@ -409,8 +409,20 @@ void Window::SetOverlayIcon(const gfx::Image& overlay,
|
||||||
window_->SetOverlayIcon(overlay, description);
|
window_->SetOverlayIcon(overlay, description);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::SetMenu(ui::SimpleMenuModel* menu) {
|
void Window::SetMenu(v8::Isolate* isolate, v8::Local<v8::Value> value) {
|
||||||
window_->SetMenu(menu);
|
mate::Handle<Menu> menu;
|
||||||
|
if (value->IsObject() &&
|
||||||
|
mate::V8ToString(value->ToObject()->GetConstructorName()) == "Menu" &&
|
||||||
|
mate::ConvertFromV8(isolate, value, &menu)) {
|
||||||
|
menu_.Reset(isolate, menu.ToV8());
|
||||||
|
window_->SetMenu(menu->model());
|
||||||
|
} else if (value->IsNull()) {
|
||||||
|
menu_.Reset();
|
||||||
|
window_->SetMenu(nullptr);
|
||||||
|
} else {
|
||||||
|
isolate->ThrowException(v8::Exception::TypeError(
|
||||||
|
mate::StringToV8(isolate, "Invalid Menu")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::SetAutoHideMenuBar(bool auto_hide) {
|
void Window::SetAutoHideMenuBar(bool auto_hide) {
|
||||||
|
@ -515,7 +527,7 @@ void Window::BuildPrototype(v8::Isolate* isolate,
|
||||||
.SetMethod("capturePage", &Window::CapturePage)
|
.SetMethod("capturePage", &Window::CapturePage)
|
||||||
.SetMethod("setProgressBar", &Window::SetProgressBar)
|
.SetMethod("setProgressBar", &Window::SetProgressBar)
|
||||||
.SetMethod("setOverlayIcon", &Window::SetOverlayIcon)
|
.SetMethod("setOverlayIcon", &Window::SetOverlayIcon)
|
||||||
.SetMethod("_setMenu", &Window::SetMenu)
|
.SetMethod("setMenu", &Window::SetMenu)
|
||||||
.SetMethod("setAutoHideMenuBar", &Window::SetAutoHideMenuBar)
|
.SetMethod("setAutoHideMenuBar", &Window::SetAutoHideMenuBar)
|
||||||
.SetMethod("isMenuBarAutoHide", &Window::IsMenuBarAutoHide)
|
.SetMethod("isMenuBarAutoHide", &Window::IsMenuBarAutoHide)
|
||||||
.SetMethod("setMenuBarVisibility", &Window::SetMenuBarVisibility)
|
.SetMethod("setMenuBarVisibility", &Window::SetMenuBarVisibility)
|
||||||
|
|
|
@ -25,10 +25,6 @@ class Arguments;
|
||||||
class Dictionary;
|
class Dictionary;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace ui {
|
|
||||||
class SimpleMenuModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
|
||||||
class NativeWindow;
|
class NativeWindow;
|
||||||
|
@ -137,7 +133,7 @@ class Window : public mate::TrackableObject<Window>,
|
||||||
void SetProgressBar(double progress);
|
void SetProgressBar(double progress);
|
||||||
void SetOverlayIcon(const gfx::Image& overlay,
|
void SetOverlayIcon(const gfx::Image& overlay,
|
||||||
const std::string& description);
|
const std::string& description);
|
||||||
void SetMenu(ui::SimpleMenuModel* menu);
|
void SetMenu(v8::Isolate* isolate, v8::Local<v8::Value> menu);
|
||||||
void SetAutoHideMenuBar(bool auto_hide);
|
void SetAutoHideMenuBar(bool auto_hide);
|
||||||
bool IsMenuBarAutoHide();
|
bool IsMenuBarAutoHide();
|
||||||
void SetMenuBarVisibility(bool visible);
|
void SetMenuBarVisibility(bool visible);
|
||||||
|
@ -156,6 +152,7 @@ class Window : public mate::TrackableObject<Window>,
|
||||||
|
|
||||||
v8::Global<v8::Value> web_contents_;
|
v8::Global<v8::Value> web_contents_;
|
||||||
v8::Global<v8::Value> devtools_web_contents_;
|
v8::Global<v8::Value> devtools_web_contents_;
|
||||||
|
v8::Global<v8::Value> menu_;
|
||||||
|
|
||||||
scoped_ptr<NativeWindow> window_;
|
scoped_ptr<NativeWindow> window_;
|
||||||
|
|
||||||
|
|
|
@ -27,12 +27,6 @@ BrowserWindow::_init = ->
|
||||||
@on 'focus', (event) =>
|
@on 'focus', (event) =>
|
||||||
app.emit 'browser-window-focus', event, this
|
app.emit 'browser-window-focus', event, this
|
||||||
|
|
||||||
BrowserWindow::setMenu = (menu) ->
|
|
||||||
throw new TypeError('Invalid menu') unless menu is null or menu?.constructor?.name is 'Menu'
|
|
||||||
|
|
||||||
@menu = menu # Keep a reference of menu in case of GC.
|
|
||||||
@_setMenu menu
|
|
||||||
|
|
||||||
BrowserWindow.getFocusedWindow = ->
|
BrowserWindow.getFocusedWindow = ->
|
||||||
windows = BrowserWindow.getAllWindows()
|
windows = BrowserWindow.getAllWindows()
|
||||||
return window for window in windows when window.isFocused()
|
return window for window in windows when window.isFocused()
|
||||||
|
|
Loading…
Reference in a new issue