From acb8b7771e8abee7675feb2f4af501cbbb6cd7b4 Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Fri, 18 Jul 2014 21:42:26 +0800 Subject: [PATCH 1/2] mac: Add BrowserWindow.getRepresentedFilename API, fixes #460. --- atom/browser/api/atom_api_window.cc | 5 +++++ atom/browser/api/atom_api_window.h | 1 + atom/browser/native_window.cc | 4 ++++ atom/browser/native_window.h | 1 + atom/browser/native_window_mac.h | 1 + atom/browser/native_window_mac.mm | 4 ++++ docs/api/browser-window.md | 4 ++++ 7 files changed, 20 insertions(+) diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc index c6b28af55..668aa1a55 100644 --- a/atom/browser/api/atom_api_window.cc +++ b/atom/browser/api/atom_api_window.cc @@ -320,6 +320,10 @@ void Window::SetRepresentedFilename(const std::string& filename) { window_->SetRepresentedFilename(filename); } +std::string Window::GetRepresentedFilename() { + return window_->GetRepresentedFilename(); +} + void Window::SetDocumentEdited(bool edited) { window_->SetDocumentEdited(edited); } @@ -373,6 +377,7 @@ void Window::BuildPrototype(v8::Isolate* isolate, .SetMethod("setKiosk", &Window::SetKiosk) .SetMethod("isKiosk", &Window::IsKiosk) .SetMethod("setRepresentedFilename", &Window::SetRepresentedFilename) + .SetMethod("getRepresentedFilename", &Window::GetRepresentedFilename) .SetMethod("setDocumentEdited", &Window::SetDocumentEdited) .SetMethod("_openDevTools", &Window::OpenDevTools) .SetMethod("closeDevTools", &Window::CloseDevTools) diff --git a/atom/browser/api/atom_api_window.h b/atom/browser/api/atom_api_window.h index 91f9d333a..d47a66f1d 100644 --- a/atom/browser/api/atom_api_window.h +++ b/atom/browser/api/atom_api_window.h @@ -98,6 +98,7 @@ class Window : public mate::EventEmitter, bool IsWebViewFocused(); void CapturePage(mate::Arguments* args); void SetRepresentedFilename(const std::string& filename); + std::string GetRepresentedFilename(); void SetDocumentEdited(bool edited); // APIs for WebContents. diff --git a/atom/browser/native_window.cc b/atom/browser/native_window.cc index f99f783f1..502711491 100644 --- a/atom/browser/native_window.cc +++ b/atom/browser/native_window.cc @@ -192,6 +192,10 @@ void NativeWindow::InitFromOptions(const mate::Dictionary& options) { void NativeWindow::SetRepresentedFilename(const std::string& filename) { } +std::string NativeWindow::GetRepresentedFilename() { + return ""; +} + void NativeWindow::SetDocumentEdited(bool edited) { } diff --git a/atom/browser/native_window.h b/atom/browser/native_window.h index fdb7fa676..896e0dbc1 100644 --- a/atom/browser/native_window.h +++ b/atom/browser/native_window.h @@ -135,6 +135,7 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate, virtual void SetKiosk(bool kiosk) = 0; virtual bool IsKiosk() = 0; virtual void SetRepresentedFilename(const std::string& filename); + virtual std::string GetRepresentedFilename(); virtual void SetDocumentEdited(bool edited); virtual void SetMenu(ui::MenuModel* menu); virtual bool HasModalDialog(); diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index 16092065f..5df01f91a 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -59,6 +59,7 @@ class NativeWindowMac : public NativeWindow { virtual void SetKiosk(bool kiosk) OVERRIDE; virtual bool IsKiosk() OVERRIDE; virtual void SetRepresentedFilename(const std::string& filename) OVERRIDE; + virtual std::string GetRepresentedFilename() OVERRIDE; virtual void SetDocumentEdited(bool edited) OVERRIDE; virtual bool HasModalDialog() OVERRIDE; virtual gfx::NativeWindow GetNativeWindow() OVERRIDE; diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index 794f4a8af..b524a8acf 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -452,6 +452,10 @@ void NativeWindowMac::SetRepresentedFilename(const std::string& filename) { [window_ setRepresentedFilename:base::SysUTF8ToNSString(filename)]; } +std::string NativeWindowMac::GetRepresentedFilename() { + return base::SysNSStringToUTF8([window_ representedFilename]); +} + void NativeWindowMac::SetDocumentEdited(bool edited) { [window_ setDocumentEdited:edited]; } diff --git a/docs/api/browser-window.md b/docs/api/browser-window.md index 57b892024..8facd14f0 100644 --- a/docs/api/browser-window.md +++ b/docs/api/browser-window.md @@ -383,6 +383,10 @@ Returns whether the window is in kiosk mode. __OS X Only:__ Sets the pathname of the file the window represents, and the icon of the file will show in window's title bar. +### BrowserWindow.getRepresentedFilename() + +__OS X Only:__ Returns the pathname of the file the window represents. + ### BrowserWindow.setDocumentEdited(edited) * `edited` Boolean From 6f231d58608f12aea749400b719f761c1df02116 Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Thu, 24 Jul 2014 15:48:33 +0800 Subject: [PATCH 2/2] mac: Add BrowserWindow.isDoucumentEdited API, fixes #459. --- atom/browser/api/atom_api_window.cc | 5 +++++ atom/browser/api/atom_api_window.h | 1 + atom/browser/native_window.cc | 4 ++++ atom/browser/native_window.h | 1 + atom/browser/native_window_mac.h | 1 + atom/browser/native_window_mac.mm | 4 ++++ docs/api/browser-window.md | 4 ++++ 7 files changed, 20 insertions(+) diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc index 668aa1a55..0fabdd1a5 100644 --- a/atom/browser/api/atom_api_window.cc +++ b/atom/browser/api/atom_api_window.cc @@ -328,6 +328,10 @@ void Window::SetDocumentEdited(bool edited) { window_->SetDocumentEdited(edited); } +bool Window::IsDocumentEdited() { + return window_->IsDocumentEdited(); +} + mate::Handle Window::GetWebContents(v8::Isolate* isolate) const { return WebContents::Create(isolate, window_->GetWebContents()); } @@ -379,6 +383,7 @@ void Window::BuildPrototype(v8::Isolate* isolate, .SetMethod("setRepresentedFilename", &Window::SetRepresentedFilename) .SetMethod("getRepresentedFilename", &Window::GetRepresentedFilename) .SetMethod("setDocumentEdited", &Window::SetDocumentEdited) + .SetMethod("IsDocumentEdited", &Window::IsDocumentEdited) .SetMethod("_openDevTools", &Window::OpenDevTools) .SetMethod("closeDevTools", &Window::CloseDevTools) .SetMethod("isDevToolsOpened", &Window::IsDevToolsOpened) diff --git a/atom/browser/api/atom_api_window.h b/atom/browser/api/atom_api_window.h index d47a66f1d..62e7d7f08 100644 --- a/atom/browser/api/atom_api_window.h +++ b/atom/browser/api/atom_api_window.h @@ -100,6 +100,7 @@ class Window : public mate::EventEmitter, void SetRepresentedFilename(const std::string& filename); std::string GetRepresentedFilename(); void SetDocumentEdited(bool edited); + bool IsDocumentEdited(); // APIs for WebContents. mate::Handle GetWebContents(v8::Isolate* isolate) const; diff --git a/atom/browser/native_window.cc b/atom/browser/native_window.cc index 502711491..bf055570b 100644 --- a/atom/browser/native_window.cc +++ b/atom/browser/native_window.cc @@ -202,6 +202,10 @@ void NativeWindow::SetDocumentEdited(bool edited) { void NativeWindow::SetMenu(ui::MenuModel* menu) { } +bool NativeWindow::IsDocumentEdited() { + return false; +} + bool NativeWindow::HasModalDialog() { return has_dialog_attached_; } diff --git a/atom/browser/native_window.h b/atom/browser/native_window.h index 896e0dbc1..537f485ef 100644 --- a/atom/browser/native_window.h +++ b/atom/browser/native_window.h @@ -138,6 +138,7 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate, virtual std::string GetRepresentedFilename(); virtual void SetDocumentEdited(bool edited); virtual void SetMenu(ui::MenuModel* menu); + virtual bool IsDocumentEdited(); virtual bool HasModalDialog(); virtual gfx::NativeWindow GetNativeWindow() = 0; diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index 5df01f91a..4b29c5d6a 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -61,6 +61,7 @@ class NativeWindowMac : public NativeWindow { virtual void SetRepresentedFilename(const std::string& filename) OVERRIDE; virtual std::string GetRepresentedFilename() OVERRIDE; virtual void SetDocumentEdited(bool edited) OVERRIDE; + virtual bool IsDocumentEdited() OVERRIDE; virtual bool HasModalDialog() OVERRIDE; virtual gfx::NativeWindow GetNativeWindow() OVERRIDE; diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index b524a8acf..07047a3b9 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -460,6 +460,10 @@ void NativeWindowMac::SetDocumentEdited(bool edited) { [window_ setDocumentEdited:edited]; } +bool NativeWindowMac::IsDocumentEdited() { + return [window_ isDocumentEdited]; +} + bool NativeWindowMac::HasModalDialog() { return [window_ attachedSheet] != nil; } diff --git a/docs/api/browser-window.md b/docs/api/browser-window.md index 8facd14f0..cb90af403 100644 --- a/docs/api/browser-window.md +++ b/docs/api/browser-window.md @@ -394,6 +394,10 @@ __OS X Only:__ Returns the pathname of the file the window represents. __OS X Only:__ Specifies whether the window’s document has been edited, and the icon in titlebar will become grey when set to `true`. +### BrowserWindow.IsDocumentEdited() + +__OS X Only:__ Whether the window's document has been edited. + ### BrowserWindow.openDevTools() Opens the developer tools.