Commit graph

167 commits

Author SHA1 Message Date
Kevin Sawicki
7d10bf229d Switch to titleBarStyle for custom window buttons on hover 2017-06-05 13:30:32 -07:00
Kevin Sawicki
1493d6763c Make custom window buttons an option 2017-06-05 12:50:18 -07:00
gellert
039908a244 various fixes for macos 2017-05-23 11:41:59 +02:00
gellert
062b1ed43e moves createviewfordwidget method to osrrwhv 2017-05-10 22:19:05 +02:00
Birunthan Mohanathas
8b9f7e5b00 Implement initial, experimental BrowserView API
Right now, `<webview>` is the only way to embed additional content in a
`BrowserWindow`. Unfortunately `<webview>` suffers from a [number of
problems](https://github.com/electron/electron/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3Awebview%20).
To make matters worse, many of these are upstream Chromium bugs instead
of Electron-specific bugs.

For us at [Figma](https://www.figma.com), the main issue is very slow
performance.

Despite the upstream improvements to `<webview>` through the OOPIF work, it is
probable that there will continue to be `<webview>`-specific bugs in the
future.

Therefore, this introduces a `<webview>` alternative to called `BrowserView`,
which...

- is a thin wrapper around `api::WebContents` (so bugs in `BrowserView` will
  likely also be bugs in `BrowserWindow` web contents)

- is instantiated in the main process like `BrowserWindow` (and unlike
  `<webview>`, which lives in the DOM of a `BrowserWindow` web contents)

- needs to be added to a `BrowserWindow` to display something on the screen

This implements the most basic API. The API is expected to evolve and change in
the near future and has consequently been marked as experimental. Please do not
use this API in production unless you are prepared to deal with breaking
changes.

In the future, we will want to change the API to support multiple
`BrowserView`s per window. We will also want to consider z-ordering
auto-resizing, and possibly even nested views.
2017-04-13 01:27:27 +03:00
Samuel Attard
60cc862031 Make everything pointer like 2017-04-04 12:50:41 -07:00
Samuel Attard
4d6b0fc01b Add a method to set the escape identifier on the touch bar 2017-04-04 12:50:41 -07:00
Kevin Sawicki
708ed9d1cd Store ordered settings in AtomTouchBar 2017-03-03 14:00:39 -08:00
Kevin Sawicki
51f1c5a557 Use SetTouchBar withe empty vector instead of DestroyTouchBar 2017-03-03 14:00:39 -08:00
Kevin Sawicki
823b3baed0 Use vector of dictionaries instead of mate::Arguments 2017-03-03 14:00:38 -08:00
Kevin Sawicki
98f5858b11 Initial support for dynamic properties 2017-03-03 14:00:38 -08:00
Samuel Attard
dd09c91cf2 initial work on updating touch bar item config without rerender 2017-03-03 14:00:38 -08:00
Samuel Attard
c92c4138a8 Add Slider item type and add options to the button type 2017-03-03 14:00:38 -08:00
Samuel Attard
7857c83ea1 Make dynamic buttons work along with click events 2017-03-03 14:00:38 -08:00
Samuel Attard
703b5738c8 Initial TouchBar Magic
* Make the AtomNSWindow also a NSTouchbarDelegate
* Implement basic makeTouchBar and makeItemForIdentifier methods
* Initial sending of touch / update events through IPC to BrowserWindowObjects

TODO:
* JS API
* JS Object Converters
* Generalize methods so that popovers can work
2017-03-03 14:00:38 -08:00
Gary Wilber
f19924bcb0 Add Invalidate method to NativeWindow and add Mac implementation 2017-02-13 19:41:24 -08:00
leethomas
1f5518b91e throw an error for out of bounds window levels 2017-01-24 20:14:09 -08:00
leethomas
7a0a87a6f3 implement relative window levels, closes #8153 2017-01-23 23:42:33 -08:00
Daijiro Wachi
436a6d5c0f Save a fullScreen state for Kiosk mode 2017-01-14 00:04:51 +01:00
Kevin Sawicki
3ec0e2f132 Add override to SetAutoHideCursor signature 2016-11-29 13:36:08 -08:00
Birunthan Mohanathas
18c49285a8 Add BrowserWindow.setAutoHideCursor for macOS
The `disableAutoHideCursor` BrowserWindow option can be used to control
auto-hiding behavior when the window is created. This new API is needed
to dynamically change the behavior after the fact.
2016-11-29 09:46:00 -08:00
Daniel Pham
d5a0dd39a1 🎁 Add 'win.closeFilePreview()' 2016-11-28 14:25:11 -08:00
Kevin Sawicki
7916981da2 zoomToContentSize -> zoomToPageWidth 2016-11-21 08:45:46 -08:00
Kevin Sawicki
c5790e39dc Add support for zooming to content size 2016-11-21 08:45:46 -08:00
gellert
5e62d28e50 adds test, adds view to AtomNSWindow and minor fixes 2016-11-11 08:49:57 -08:00
gellert
2cf30c0d63 remove method transferred to set with null 2016-11-11 08:49:57 -08:00
gellert
8ad50d1e35 adds vibrancy effect for macos 2016-11-11 08:49:57 -08:00
Kevin Sawicki
d982376fc4 filename -> displayName 2016-10-26 09:47:38 +09:00
Pierre Laurac
9b19e6ee38 Changing names and memory leak fix 2016-10-26 09:05:42 +09:00
Pierre Laurac
9673cee4d7 Using string from the std 2016-10-26 09:02:36 +09:00
Pierre Laurac
526debb5ab Adding easy way to preview files 2016-10-26 09:02:29 +09:00
Pierre Laurac
fb444f646b default template for PreviewFile 2016-10-26 09:02:21 +09:00
adammeyer
783d47f78b custom window level as string 2016-09-21 22:49:06 -04:00
adammeyer
fbb3a288ec Allow custom window level when sending window to top 2016-09-21 13:35:59 -04:00
Anthony Tseng
269a87b26f Emit scroll-touch-edge event instead of changing the behavior of scroll-touch-begin/end
fix #6873
2016-09-17 22:50:10 +08:00
Cheng Zhao
105597c7e8 Merge pull request #6848 from miniak/titlebar-style-hidden
Add support for titleBarStyle: 'hidden' on OS X 10.9
2016-08-18 14:40:54 +09:00
Milan Burda
ab8fd49c72 Add support for titleBarStyle: 'hidden' on OS X 10.9 (hidden-inset falls back to hidden) 2016-08-15 22:10:38 +02:00
Felix Rieseberg
8b85ee8a20 🔧 Use enum to declare ProgressState
As recommended in #6768, this commit adds an enum for progress states for windows.
2016-08-10 08:56:26 -07:00
Cheng Zhao
81244c2221 Merge pull request #6768 from electron/felix-set-progress
Enable mode indication for setProgressBar
2016-08-09 20:58:07 +09:00
Felix Rieseberg
73c91dae9e 🔧 Enable mode indication for setProgressBar
This commit enables setting a mode for the setProgressBar method.
Old behavior is kept intact, usage is entirely optional.
2016-08-08 15:52:20 -07:00
Cheng Zhao
f5abae31a3 Code cleanup for native_window_mac
Method definitions should matche sequence of declarations.
2016-08-08 20:15:45 +09:00
Anthony Tseng
1aedccaeeb Fix scroll conflict 2016-08-06 14:02:40 +08:00
Kevin Sawicki
a190495df3 Use bounds for converting window/content sizes 2016-08-04 11:27:27 -07:00
Kevin Sawicki
48cc13d009 Add BrowserWindow.getClientBounds API 2016-08-04 09:58:35 -07:00
Cheng Zhao
7848608198 Replace DialogScope with UnresponsiveSuppressor
The latter is global-wide.
2016-07-11 15:29:03 +09:00
Milan Burda
c243cf0c0f Add BrowserWindow.prototype.setContentProtection(enable) 2016-06-22 10:40:33 +02:00
Cheng Zhao
5674e8d114 Only define enable/disable API for views 2016-06-20 15:44:50 +09:00
Cheng Zhao
e33e4be257 macOS: Use sheet window as modal window 2016-06-20 14:49:24 +09:00
Cheng Zhao
1866dbe608 Move disable counter to NativeWindow from api::Window 2016-06-20 11:48:46 +09:00
Cheng Zhao
f4bec78ccb linux: Implement win.setParentWindow(parent) 2016-06-20 11:16:41 +09:00
Cheng Zhao
85ba382027 Add "parent" option for BrowserWindow 2016-06-20 11:16:41 +09:00
Cheng Zhao
f2cbd7cb36 mac: Add win.beginSheet(sheet)/endSheet(sheet) API 2016-06-20 11:16:41 +09:00
Cheng Zhao
1a4b4a65c9 mac: Add win.disable/enable/isEnabled() API 2016-06-20 11:16:41 +09:00
Cheng Zhao
fd42e3dc84 mac: Add win.setParentWindow(parent) API 2016-06-20 11:16:41 +09:00
Cheng Zhao
9eea973d31 Use the setTitleVisibility to control tittlebar's visibility 2016-06-17 10:54:50 +09:00
Cheng Zhao
8eca728e0a Add focusable option 2016-06-13 17:10:28 +09:00
Milan Burda
7a1d1ee0ea Add BrowserWindow.prototype.setIgnoreFocus 2016-06-12 20:20:57 +02:00
Kevin Sawicki
70996c79ba Add showDefinitionForSelection webContents proxy method 2016-06-08 10:19:43 -07:00
Cheng Zhao
b444211d6f Fix title of frameless window showing as empty under fullscreen 2016-06-07 17:26:26 +09:00
leethomas
7aaf974362 override SetAspectRatio for NativeWindowMac 2016-05-22 16:50:50 -07:00
Cheng Zhao
5f6c468f0f Handle keyboard events for WebContents that do not have owner window 2016-05-18 13:57:48 +09:00
Cheng Zhao
13bfb099a2 Fix the toolbar showing when titleBarStyle is hidden-inset 2016-05-17 16:25:18 +09:00
Cheng Zhao
f53aabaef5 Implement titleBarStyle without using NSFullSizeContentViewWindowMask 2016-05-17 15:48:14 +09:00
Cheng Zhao
a83aee90e5 No need to use scoped_nsobject for id 2016-01-25 15:15:58 +08:00
Cheng Zhao
059d97e1aa Merge pull request #4181 from bengotow/scroll-touch-events
Extend NativeWindow to track touch-based scroll events on OS X
2016-01-25 14:47:54 +08:00
Cheng Zhao
010cc3276a Simplify the setStyleMask calls 2016-01-24 14:31:37 +08:00
Cheng Zhao
5372b6cd91 Fullscreenable => FullScreenable 2016-01-24 14:31:36 +08:00
Cheng Zhao
31624995bc Merge pull request #4202 from evgenyzinoviev/shadow-pr
Added hasShadow option to BrowserWindow on OS X
2016-01-22 23:56:38 -08:00
evgenyzinoviev
ff41b4a267 added hasShadow option to BrowserWindow (osx) 2016-01-23 01:16:08 +01:00
evgenyzinoviev
ef51e4e108 maximizable and fullscreenable 2016-01-22 23:21:46 +01:00
Ben Gotow
e96e674201 Properly clean up NSEvent monitor 2016-01-21 16:31:31 -08:00
evgenyzinoviev
2a554cb138 added or/and improved closable, minimizable, movable, resizable features for windows on os x and windows 2016-01-19 16:14:57 +01:00
evgenyzinoviev
b75dccb0be arguments handing rewritten, doc updated 2016-01-15 17:31:31 +01:00
evgenyzinoviev
2598b00b41 Animate window resizing on OS X 2016-01-15 05:59:58 +01:00
Omri Litov
3f0c007578 Added getNativeWindowHandle 2016-01-07 22:38:35 +02:00
Cheng Zhao
e90435e236 Remove visual artifacts of hidden-inset window 2015-12-23 12:38:11 +08:00
jaanus
aa2f7aaf3a Fixes #2810: correct look of hidden-inset windows in full screen.
`hidden` and `hidden-inset` windows differ only by the hidden-inset window having a toolbar. Yet, the toolbar yields an incorrect look in fullscreen mode. So, we hide and recreate the toolbar for such windows when going to/from fullscreen.

There are some visible artifacts during the fullscreen animations, as the toolbar gets created and destroyed. When entering fullscreen, you see a toolbar that then disappears. When going back to normal window, you see the traffic light buttons jump around a little bit. Yet, this is definitely better than the current broken fullscreen look.
2015-12-22 20:31:55 +02:00
billyct
5f092a6c65 support an api with SetIgnoreMouseEvents, and worked fine with osx 2015-12-06 10:14:54 +08:00
Cheng Zhao
e36d455d51 Add setBackgroundColor method 2015-10-23 11:35:33 +08:00
Cheng Zhao
d092c6acc9 osx: Implement draggable region with mouseDownCanMoveWindow
Previously we implemented draggable region by tracking mouse position,
it is buggy and causing some problems. But it is interesting that until
this didn't cause troubles until recently.
2015-10-21 08:54:46 +08:00
Cheng Zhao
8577f2b52f osx: Add NativeWindow::SetSizeConstraints 2015-10-05 20:07:20 +08:00
Cheng Zhao
290b221d79 mac: Do not set rounded corner by adding layer 2015-08-26 15:58:44 +08:00
Cheng Zhao
58c0486236 Remove duplicate UpdateDraggableRegions 2015-08-05 12:32:22 +08:00
Cheng Zhao
fb5fe7a714 Decouple WebContentsDelegate from NativeWindow 2015-06-25 11:07:23 +08:00
Cheng Zhao
5236b0c067 Don't create WebContents in NativeWindow 2015-06-25 09:47:57 +08:00
Cheng Zhao
0d4d2080ca Implement size and position APIs with bounds API 2015-05-04 12:47:56 +08:00
deepak1556
9ae59e8ac7 removed move utility and replaced with setbounds 2015-05-01 20:10:46 +05:30
deepak1556
ae6a1b409f window: adding setBounds and getBounds api 2015-05-01 16:20:53 +05:30
deepak1556
20b4cae980 window: supports HTML5 fullscreen api 2015-04-23 12:14:29 +05:30
Haojian Wu
0342854e25 Update workspace visible APIs. 2015-03-29 10:01:52 +08:00
Haojian Wu
476b61322f Add SetVisibleOnAllWorkspaces/IsVisibleOnAllWorkspaces API.
These two APIs are only available on OS X/Linux platforms.
2015-03-26 14:18:37 +08:00
Cheng Zhao
62f9c3def0 mac: Don't rely on autorelease to delete window delegate
When quiting while closing window, it will leave the window delegate out
of the autorelease pool and crash.

Fixes #881.
2015-03-25 18:51:29 +08:00
Paul Betts
86de75deef Style fixups 2015-02-10 17:14:26 -08:00
Paul Betts
03a88883b6 Fix build on OS X 2015-02-07 11:56:03 -08:00
Cheng Zhao
85685feff4 mac: Simplify frameless window dragging code 2014-12-23 15:55:56 -08:00
Cheng Zhao
4ca0458b37 OVERRIDE => override in native_window_mac.h 2014-12-23 15:31:39 -08:00
Hajime Morrita
dc9329ff43 Add BrowserWindow.showDefinitionForSelection()
This API shows the system-provided pop-up dictionary.
Some Mac apps including Chrome have "Look Up in in Dictionary" context
menu item. This API can be used to implement it.
2014-12-18 16:45:45 -08:00
Cheng Zhao
7457f81283 mac: Fix installing view on frameless window
Closes #601.
2014-12-11 14:25:51 -08:00
Cheng Zhao
271eb63083 SetFullscreen => SetFullScreen 2014-11-25 14:34:14 +08:00
Kevin Sawicki
b6b6fc3bfd Remove All Rights Reserved after GitHub copyright
Closes #762
2014-10-31 11:17:05 -07:00