void WebContents::HandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) {
- if (event.windowsKeyCode == ui::VKEY_ESCAPE && is_html_fullscreen()) {
- // Escape exits tabbed fullscreen mode.
- ExitFullscreenModeForTab(source);
- } else if (type_ == BROWSER_WINDOW && owner_window()) {
- owner_window()->HandleKeyboardEvent(source, event);
- } else if (type_ == WEB_VIEW && embedder_) {
+ if (type_ == WEB_VIEW && embedder_) {
// Send the unhandled keyboard events back to the embedder.
embedder_->HandleKeyboardEvent(source, event);
+ } else {
+ // Go to the default keyboard handling.
+ CommonWebContentsDelegate::HandleKeyboardEvent(source, event);
}
}
#include "content/public/browser/security_style_explanations.h"
#include "storage/browser/fileapi/isolated_context.h"
-#if defined(TOOLKIT_VIEWS)
-#include "atom/browser/native_window_views.h"
-#endif
-
-#if defined(USE_X11)
-#include "atom/browser/browser.h"
-#endif
-
using content::BrowserThread;
using security_state::SecurityStateModel;
&file_paths_value);
}
-#if defined(TOOLKIT_VIEWS)
-gfx::ImageSkia CommonWebContentsDelegate::GetDevToolsWindowIcon() {
- if (!owner_window())
- return gfx::ImageSkia();
- return static_cast<views::WidgetDelegate*>(static_cast<NativeWindowViews*>(
- owner_window()))->GetWindowAppIcon();
-}
-#endif
-
-#if defined(USE_X11)
-void CommonWebContentsDelegate::GetDevToolsWindowWMClass(
- std::string* name, std::string* class_name) {
- *class_name = Browser::Get()->GetName();
- *name = base::ToLowerASCII(*class_name);
-}
-#endif
-
void CommonWebContentsDelegate::SetHtmlApiFullscreen(bool enter_fullscreen) {
// Window is already in fullscreen mode, save the state.
if (enter_fullscreen && owner_window_->IsFullscreen()) {
content::SecurityStyle GetSecurityStyle(
content::WebContents* web_contents,
content::SecurityStyleExplanations* explanations) override;
+ void HandleKeyboardEvent(
+ content::WebContents* source,
+ const content::NativeWebKeyboardEvent& event) override;
// brightray::InspectableWebContentsDelegate:
void DevToolsSaveToFile(const std::string& 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/common_web_contents_delegate.h"
+
+#import <Cocoa/Cocoa.h>
+
+#include "content/public/browser/native_web_keyboard_event.h"
+#include "ui/events/keycodes/keyboard_codes.h"
+
+namespace atom {
+
+void CommonWebContentsDelegate::HandleKeyboardEvent(
+ content::WebContents* source,
+ const content::NativeWebKeyboardEvent& event) {
+ if (event.skip_in_browser ||
+ event.type == content::NativeWebKeyboardEvent::Char)
+ return;
+
+ // Escape exits tabbed fullscreen mode.
+ if (event.windowsKeyCode == ui::VKEY_ESCAPE && is_html_fullscreen())
+ ExitFullscreenModeForTab(source);
+
+ BOOL handled = [[NSApp mainMenu] performKeyEquivalent:event.os_event];
+ if (!handled && event.os_event.window) {
+ // Handle the cmd+~ shortcut.
+ if ((event.os_event.modifierFlags & NSCommandKeyMask) /* cmd */ &&
+ (event.os_event.keyCode == 50 /* ~ */)) {
+ if (event.os_event.modifierFlags & NSShiftKeyMask) {
+ [NSApp sendAction:@selector(_cycleWindowsReversed:) to:nil from:nil];
+ } else {
+ [NSApp sendAction:@selector(_cycleWindows:) to:nil from:nil];
+ }
+ }
+ }
+}
+
+} // namespace atom
--- /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/common_web_contents_delegate.h"
+
+#include "atom/browser/native_window_views.h"
+#include "base/strings/string_util.h"
+#include "content/public/browser/native_web_keyboard_event.h"
+#include "ui/events/keycodes/keyboard_codes.h"
+
+#if defined(USE_X11)
+#include "atom/browser/browser.h"
+#endif
+
+namespace atom {
+
+void CommonWebContentsDelegate::HandleKeyboardEvent(
+ content::WebContents* source,
+ const content::NativeWebKeyboardEvent& event) {
+ // Escape exits tabbed fullscreen mode.
+ if (event.windowsKeyCode == ui::VKEY_ESCAPE && is_html_fullscreen())
+ ExitFullscreenModeForTab(source);
+
+ // Let the NativeWindow handle other parts.
+ if (owner_window())
+ owner_window()->HandleKeyboardEvent(source, event);
+}
+
+gfx::ImageSkia CommonWebContentsDelegate::GetDevToolsWindowIcon() {
+ if (!owner_window())
+ return gfx::ImageSkia();
+ return static_cast<views::WidgetDelegate*>(static_cast<NativeWindowViews*>(
+ owner_window()))->GetWindowAppIcon();
+}
+
+#if defined(USE_X11)
+void CommonWebContentsDelegate::GetDevToolsWindowWMClass(
+ std::string* name, std::string* class_name) {
+ *class_name = Browser::Get()->GetName();
+ *name = base::ToLowerASCII(*class_name);
+}
+#endif
+
+} // namespace atom
}
protected:
- // NativeWindow:
- void HandleKeyboardEvent(
- content::WebContents*,
- const content::NativeWebKeyboardEvent&) override;
-
// Return a vector of non-draggable regions that fill a window of size
// |width| by |height|, but leave gaps where the window should be draggable.
std::vector<gfx::Rect> CalculateNonDraggableRegions(
#include "brightray/browser/inspectable_web_contents.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "content/public/browser/browser_accessibility_state.h"
-#include "content/public/browser/native_web_keyboard_event.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host_view.h"
return collectionBehavior & NSWindowCollectionBehaviorCanJoinAllSpaces;
}
-void NativeWindowMac::HandleKeyboardEvent(
- content::WebContents*,
- const content::NativeWebKeyboardEvent& event) {
- if (event.skip_in_browser ||
- event.type == content::NativeWebKeyboardEvent::Char)
- return;
-
- BOOL handled = [[NSApp mainMenu] performKeyEquivalent:event.os_event];
- if (!handled && event.os_event.window) {
- // Handle the cmd+~ shortcut.
- if ((event.os_event.modifierFlags & NSCommandKeyMask) /* cmd */ &&
- (event.os_event.keyCode == 50 /* ~ */)) {
- if (event.os_event.modifierFlags & NSShiftKeyMask) {
- [NSApp sendAction:@selector(_cycleWindowsReversed:) to:nil from:nil];
- } else {
- [NSApp sendAction:@selector(_cycleWindows:) to:nil from:nil];
- }
- }
- }
-}
-
std::vector<gfx::Rect> NativeWindowMac::CalculateNonDraggableRegions(
const std::vector<DraggableRegion>& regions, int width, int height) {
std::vector<gfx::Rect> result;
'atom/browser/browser_mac.mm',
'atom/browser/browser_win.cc',
'atom/browser/browser_observer.h',
+ 'atom/browser/common_web_contents_delegate_mac.mm',
+ 'atom/browser/common_web_contents_delegate_views.cc',
'atom/browser/common_web_contents_delegate.cc',
'atom/browser/common_web_contents_delegate.h',
'atom/browser/javascript_environment.cc',