return type_;
}
+#if !defined(OS_MACOSX)
+bool WebContents::IsFocused() const {
+ auto view = web_contents()->GetRenderWidgetHostView();
+ return view && view->HasFocus();
+}
+#endif
+
bool WebContents::Equal(const WebContents* web_contents) const {
return GetID() == web_contents->GetID();
}
.SetMethod("showDefinitionForSelection",
&WebContents::ShowDefinitionForSelection)
.SetMethod("capturePage", &WebContents::CapturePage)
+ .SetMethod("isFocused", &WebContents::IsFocused)
.SetProperty("id", &WebContents::ID)
.SetProperty("session", &WebContents::Session)
.SetProperty("hostWebContents", &WebContents::HostWebContents)
int GetID() const;
Type GetType() const;
+ bool IsFocused() const;
bool Equal(const WebContents* web_contents) const;
void LoadURL(const GURL& url, const mate::Dictionary& options);
void DownloadURL(const GURL& url);
--- /dev/null
+// Copyright (c) 2016 GitHub, Inc.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+#include "atom/browser/api/atom_api_web_contents.h"
+
+@interface NSWindow
+- (BOOL)isKeyWindow;
+@end
+
+namespace atom {
+
+namespace api {
+
+bool WebContents::IsFocused() const {
+ if (GetType() != BACKGROUND_PAGE) {
+ auto window = web_contents()->GetTopLevelNativeWindow();
+ // On Mac the render widget host view does not lose focus when the window
+ // loses focus so check if the top level window is the key window.
+ if (window && ![window isKeyWindow])
+ return false;
+ }
+
+ auto view = web_contents()->GetRenderWidgetHostView();
+ return view && view->HasFocus();
+}
+
+} // namespace api
+
+} // namespace atom
'atom/browser/api/atom_api_system_preferences_mac.mm',
'atom/browser/api/atom_api_tray.cc',
'atom/browser/api/atom_api_tray.h',
+ 'atom/browser/api/atom_api_web_contents_mac.mm',
'atom/browser/api/atom_api_web_contents.cc',
'atom/browser/api/atom_api_web_contents.h',
'atom/browser/api/atom_api_web_request.cc',
fromId (id) {
return binding.fromId(id)
+ },
+ getAllWebContents () {
+ return binding.getAllWebContents()
}
}