Merge pull request #6851 from electron/focused-web-contents-from-hidden-windows
Prevent web contents in hidden windows from reporting as focused
This commit is contained in:
commit
4e355355a9
2 changed files with 21 additions and 2 deletions
|
@ -37,6 +37,7 @@
|
||||||
#include "atom/common/native_mate_converters/image_converter.h"
|
#include "atom/common/native_mate_converters/image_converter.h"
|
||||||
#include "atom/common/native_mate_converters/string16_converter.h"
|
#include "atom/common/native_mate_converters/string16_converter.h"
|
||||||
#include "atom/common/native_mate_converters/value_converter.h"
|
#include "atom/common/native_mate_converters/value_converter.h"
|
||||||
|
#include "atom/common/node_includes.h"
|
||||||
#include "atom/common/options_switches.h"
|
#include "atom/common/options_switches.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
|
@ -72,7 +73,9 @@
|
||||||
#include "third_party/WebKit/public/web/WebFindOptions.h"
|
#include "third_party/WebKit/public/web/WebFindOptions.h"
|
||||||
#include "ui/display/screen.h"
|
#include "ui/display/screen.h"
|
||||||
|
|
||||||
#include "atom/common/node_includes.h"
|
#if !defined(OS_MACOSX)
|
||||||
|
#include "ui/aura/window.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
@ -1169,7 +1172,15 @@ void WebContents::Focus() {
|
||||||
#if !defined(OS_MACOSX)
|
#if !defined(OS_MACOSX)
|
||||||
bool WebContents::IsFocused() const {
|
bool WebContents::IsFocused() const {
|
||||||
auto view = web_contents()->GetRenderWidgetHostView();
|
auto view = web_contents()->GetRenderWidgetHostView();
|
||||||
return view && view->HasFocus();
|
if (!view) return false;
|
||||||
|
|
||||||
|
if (GetType() != BACKGROUND_PAGE) {
|
||||||
|
auto window = web_contents()->GetTopLevelNativeWindow();
|
||||||
|
if (window && !window->IsVisible())
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return view->HasFocus();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -70,4 +70,12 @@ describe('webContents module', function () {
|
||||||
specWebContents.openDevTools()
|
specWebContents.openDevTools()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('isFocused() API', function () {
|
||||||
|
it('returns false when the window is hidden', function () {
|
||||||
|
BrowserWindow.getAllWindows().forEach(function (window) {
|
||||||
|
assert.equal(!window.isVisible() && window.webContents.isFocused(), false)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue