Add win.getParentWindow() API

This commit is contained in:
Cheng Zhao 2016-06-17 16:09:43 +09:00
parent fb7e7b315c
commit 22513efd55
2 changed files with 21 additions and 3 deletions

View file

@ -650,8 +650,23 @@ void Window::SetAspectRatio(double aspect_ratio, mate::Arguments* args) {
window_->SetAspectRatio(aspect_ratio, extra_size); window_->SetAspectRatio(aspect_ratio, extra_size);
} }
void Window::SetParentWindow(NativeWindow* parent) { void Window::SetParentWindow(mate::Arguments* args) {
window_->SetParentWindow(parent); v8::Local<v8::Value> value;
NativeWindow* parent;
if (args->GetNext(&value) &&
mate::ConvertFromV8(isolate(), value, &parent)) {
parent_window_.Reset(isolate(), value);
window_->SetParentWindow(parent);
} else {
args->ThrowError("Must pass BrowserWindow instance or null");
}
}
v8::Local<v8::Value> Window::GetParentWindow() {
if (parent_window_.IsEmpty())
return v8::Null(isolate());
else
return v8::Local<v8::Value>::New(isolate(), parent_window_);
} }
v8::Local<v8::Value> Window::GetNativeWindowHandle() { v8::Local<v8::Value> Window::GetNativeWindowHandle() {
@ -702,6 +717,7 @@ void Window::BuildPrototype(v8::Isolate* isolate,
.SetMethod("isFullScreen", &Window::IsFullscreen) .SetMethod("isFullScreen", &Window::IsFullscreen)
.SetMethod("setAspectRatio", &Window::SetAspectRatio) .SetMethod("setAspectRatio", &Window::SetAspectRatio)
.SetMethod("setParentWindow", &Window::SetParentWindow) .SetMethod("setParentWindow", &Window::SetParentWindow)
.SetMethod("getParentWindow", &Window::GetParentWindow)
.SetMethod("getNativeWindowHandle", &Window::GetNativeWindowHandle) .SetMethod("getNativeWindowHandle", &Window::GetNativeWindowHandle)
.SetMethod("getBounds", &Window::GetBounds) .SetMethod("getBounds", &Window::GetBounds)
.SetMethod("setBounds", &Window::SetBounds) .SetMethod("setBounds", &Window::SetBounds)

View file

@ -159,7 +159,8 @@ class Window : public mate::TrackableObject<Window>,
void SetMenuBarVisibility(bool visible); void SetMenuBarVisibility(bool visible);
bool IsMenuBarVisible(); bool IsMenuBarVisible();
void SetAspectRatio(double aspect_ratio, mate::Arguments* args); void SetAspectRatio(double aspect_ratio, mate::Arguments* args);
void SetParentWindow(NativeWindow* parent); void SetParentWindow(mate::Arguments* args);
v8::Local<v8::Value> GetParentWindow();
v8::Local<v8::Value> GetNativeWindowHandle(); v8::Local<v8::Value> GetNativeWindowHandle();
#if defined(OS_WIN) #if defined(OS_WIN)
@ -189,6 +190,7 @@ class Window : public mate::TrackableObject<Window>,
v8::Global<v8::Value> web_contents_; v8::Global<v8::Value> web_contents_;
v8::Global<v8::Value> menu_; v8::Global<v8::Value> menu_;
v8::Global<v8::Value> parent_window_;
api::WebContents* api_web_contents_; api::WebContents* api_web_contents_;