mac: Add win.beginSheet(sheet)/endSheet(sheet) API
This commit is contained in:
parent
2c5f4aadfb
commit
f2cbd7cb36
6 changed files with 38 additions and 0 deletions
|
@ -723,6 +723,18 @@ bool Window::IsModal() const {
|
||||||
return is_modal_;
|
return is_modal_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Window::BeginSheet(mate::Handle<Window> sheet, mate::Arguments* args) {
|
||||||
|
if (sheet->IsVisible()) {
|
||||||
|
args->ThrowError("Sheet window must not be visible");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window_->BeginSheet(sheet->window_.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Window::EndSheet(mate::Handle<Window> sheet) {
|
||||||
|
window_->EndSheet(sheet->window_.get());
|
||||||
|
}
|
||||||
|
|
||||||
v8::Local<v8::Value> Window::GetNativeWindowHandle() {
|
v8::Local<v8::Value> Window::GetNativeWindowHandle() {
|
||||||
gfx::AcceleratedWidget handle = window_->GetAcceleratedWidget();
|
gfx::AcceleratedWidget handle = window_->GetAcceleratedWidget();
|
||||||
return ToBuffer(
|
return ToBuffer(
|
||||||
|
@ -793,6 +805,8 @@ void Window::BuildPrototype(v8::Isolate* isolate,
|
||||||
.SetMethod("getChildWindows", &Window::GetChildWindows)
|
.SetMethod("getChildWindows", &Window::GetChildWindows)
|
||||||
.SetMethod("setModal", &Window::SetModal)
|
.SetMethod("setModal", &Window::SetModal)
|
||||||
.SetMethod("isModal", &Window::IsModal)
|
.SetMethod("isModal", &Window::IsModal)
|
||||||
|
.SetMethod("beginSheet", &Window::BeginSheet)
|
||||||
|
.SetMethod("endSheet", &Window::EndSheet)
|
||||||
.SetMethod("getNativeWindowHandle", &Window::GetNativeWindowHandle)
|
.SetMethod("getNativeWindowHandle", &Window::GetNativeWindowHandle)
|
||||||
.SetMethod("getBounds", &Window::GetBounds)
|
.SetMethod("getBounds", &Window::GetBounds)
|
||||||
.SetMethod("setBounds", &Window::SetBounds)
|
.SetMethod("setBounds", &Window::SetBounds)
|
||||||
|
|
|
@ -168,6 +168,8 @@ class Window : public mate::TrackableObject<Window>,
|
||||||
std::vector<v8::Local<v8::Object>> GetChildWindows() const;
|
std::vector<v8::Local<v8::Object>> GetChildWindows() const;
|
||||||
void SetModal(bool modal, mate::Arguments* args);
|
void SetModal(bool modal, mate::Arguments* args);
|
||||||
bool IsModal() const;
|
bool IsModal() const;
|
||||||
|
void BeginSheet(mate::Handle<Window> sheet, mate::Arguments* args);
|
||||||
|
void EndSheet(mate::Handle<Window> sheet);
|
||||||
v8::Local<v8::Value> GetNativeWindowHandle();
|
v8::Local<v8::Value> GetNativeWindowHandle();
|
||||||
|
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
|
|
|
@ -292,6 +292,12 @@ bool NativeWindow::HasModalDialog() {
|
||||||
return has_dialog_attached_;
|
return has_dialog_attached_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindow::BeginSheet(NativeWindow* sheet) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void NativeWindow::EndSheet(NativeWindow* sheet) {
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindow::FocusOnWebView() {
|
void NativeWindow::FocusOnWebView() {
|
||||||
web_contents()->GetRenderViewHost()->GetWidget()->Focus();
|
web_contents()->GetRenderViewHost()->GetWidget()->Focus();
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,6 +162,8 @@ class NativeWindow : public base::SupportsUserData,
|
||||||
virtual void SetMenu(ui::MenuModel* menu);
|
virtual void SetMenu(ui::MenuModel* menu);
|
||||||
virtual bool HasModalDialog();
|
virtual bool HasModalDialog();
|
||||||
virtual void SetParentWindow(NativeWindow* parent) = 0;
|
virtual void SetParentWindow(NativeWindow* parent) = 0;
|
||||||
|
virtual void BeginSheet(NativeWindow* sheet);
|
||||||
|
virtual void EndSheet(NativeWindow* sheet);
|
||||||
virtual gfx::NativeWindow GetNativeWindow() = 0;
|
virtual gfx::NativeWindow GetNativeWindow() = 0;
|
||||||
virtual gfx::AcceleratedWidget GetAcceleratedWidget() = 0;
|
virtual gfx::AcceleratedWidget GetAcceleratedWidget() = 0;
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,8 @@ class NativeWindowMac : public NativeWindow {
|
||||||
void SetIgnoreMouseEvents(bool ignore) override;
|
void SetIgnoreMouseEvents(bool ignore) override;
|
||||||
bool HasModalDialog() override;
|
bool HasModalDialog() override;
|
||||||
void SetParentWindow(NativeWindow* parent) override;
|
void SetParentWindow(NativeWindow* parent) override;
|
||||||
|
void BeginSheet(NativeWindow* sheet) override;
|
||||||
|
void EndSheet(NativeWindow* sheet) override;
|
||||||
gfx::NativeWindow GetNativeWindow() override;
|
gfx::NativeWindow GetNativeWindow() override;
|
||||||
gfx::AcceleratedWidget GetAcceleratedWidget() override;
|
gfx::AcceleratedWidget GetAcceleratedWidget() override;
|
||||||
void SetProgressBar(double progress) override;
|
void SetProgressBar(double progress) override;
|
||||||
|
|
|
@ -964,6 +964,18 @@ void NativeWindowMac::SetParentWindow(NativeWindow* parent) {
|
||||||
[parent->GetNativeWindow() addChildWindow:window_ ordered:NSWindowAbove];
|
[parent->GetNativeWindow() addChildWindow:window_ ordered:NSWindowAbove];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindowMac::BeginSheet(NativeWindow* sheet) {
|
||||||
|
[window_ beginSheet:sheet->GetNativeWindow()
|
||||||
|
completionHandler:^(NSModalResponse) {
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
void NativeWindowMac::EndSheet(NativeWindow* sheet) {
|
||||||
|
sheet->Hide();
|
||||||
|
[window_ endSheet:sheet->GetNativeWindow()];
|
||||||
|
sheet->CloseImmediately();
|
||||||
|
}
|
||||||
|
|
||||||
gfx::NativeWindow NativeWindowMac::GetNativeWindow() {
|
gfx::NativeWindow NativeWindowMac::GetNativeWindow() {
|
||||||
return window_;
|
return window_;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue