Commit graph

397 commits

Author SHA1 Message Date
Cheng Zhao
6be10ffef2 Fix more API changes due to name changes 2017-04-27 16:34:52 +09:00
Cheng Zhao
50e3bfa764 Fix API changes of base::Value 2017-04-27 16:34:52 +09:00
Birunthan Mohanathas
dcf6c52f51 Actually hide menubar area when menu is autohidden
This was a regression introduced in 638eae10.
2017-04-17 12:31:39 +03:00
Kevin Sawicki
fe8726d775 Use Chrome default client inset handling 2017-04-13 13:03:46 +03:00
Birunthan Mohanathas
06fcf2c19d Add support for BrowserView autoresizing 2017-04-13 01:27:31 +03:00
Birunthan Mohanathas
638eae1080 Remove MenuLayout in favor of NativeWindowViews::Layout 2017-04-13 01:27:31 +03: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
Kevin Sawicki
52801c4a41 Use internal IsVisible method 2017-02-15 08:28:55 -08:00
Kevin Sawicki
db79f4f450 Implement Activate instead of CanFocus 2017-02-15 08:28:55 -08:00
Kevin Sawicki
bda8af8dd3 Just use visible state in CanFocus delegate 2017-02-15 08:28:55 -08:00
Kevin Sawicki
be79417a03 Include CanFocus on Windows and map to state 2017-02-15 08:28:55 -08:00
Kevin Sawicki
643cb5d6de Remove unused variable 2017-02-14 11:13:23 -08:00
Kevin Sawicki
82f452568c 🎨 Minor formatting tweaks 2017-02-14 11:09:15 -08:00
Gary Wilber
f19924bcb0 Add Invalidate method to NativeWindow and add Mac implementation 2017-02-13 19:41:24 -08:00
Cheng Zhao
be29ea4dad libgtk2ui => libgtkui 2017-02-06 10:34:29 -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
Kevin Sawicki
e82b41724d Restore thick frame full screen case 2017-01-18 14:40:42 -08:00
Kevin Sawicki
e5aad9857d Merge pull request #7765 from liusy182/maximize-fix
fix for Window hidden behind taskbar after maximize #7672
2017-01-09 09:47:39 -08:00
liusi
b853671132 fix fullscreen, maximize, unmaximize 2016-12-15 14:01:03 +08:00
Samuel Attard
c65033a13b
Revert "incorrect position when restored from maximize-on-top-drag under Windows #7630"
This reverts commit a2b3abbf47.
2016-11-22 15:49:56 +11:00
liusi
00d9baa605 fix linting error 2016-11-15 13:23:59 +08:00
liusi
356d0520ae fix linting error 2016-11-11 17:57:22 +08:00
liusi
a69ee76705 fix review comments 2016-11-08 15:36:37 +08:00
liusi
0e9d973715 toggle thick_frame_ along with resizable change 2016-11-03 12:13:06 +08:00
liusi
7880d37d73 merge changes from master 2016-11-01 10:20:47 +08:00
Cheng Zhao
92f8c105d9 Merge pull request #7766 from liusy182/window-size-restore
incorrect position when restored from maximize-on-top-drag under Windows #7630
2016-10-31 11:04:35 +09:00
liusy182
c657186920 address review comments 2016-10-30 09:50:22 +08:00
liusi
a2b3abbf47 incorrect position when restored from maximize-on-top-drag under Windows #7630 2016-10-27 17:42:43 +08:00
liusi
c61414e11b fix for Window hidden behind taskbar after maximize #7672 2016-10-27 17:14:31 +08:00
Kevin Sawicki
98387e50cc Focus window on menu bar click 2016-10-24 11:49:51 +09:00
Paul Betts
6fdf40b038 Code Cleanup 2016-10-14 12:17:32 -07:00
Cheng Zhao
4d8c1c61a5 Revert "Fix for issues seen on frameless window (Windows) when at 200% resolution" 2016-10-03 20:41:52 +09:00
Brian Clifton
52340b43f5 Possible fix for issues seen on frameless window (Windows) when at 200% 2016-09-29 10:48:36 -07:00
Kevin Sawicki
c336cf59c1 Ignore level when calling SetAlwaysOnTop on Widget 2016-09-22 09:38:04 -07: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
Kevin Sawicki
6285500cdc Sort includes alphabetically 2016-08-26 15:30:02 -07:00
Kevin Sawicki
459c80da4e Only change window state when fullscreen is true 2016-08-24 14:30:29 -07:00
Cheng Zhao
06d2dfe119 Merge pull request #6788 from electron/felix-progress-enum
Use enum to declare ProgressState
2016-08-18 14:35:00 +09:00
Samuel Attard
2fa7aa3c71 Save the thumbar buttons when setting them
Then restore the buttons when restoring the taskbar icon
2016-08-13 01:55:42 +10: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
dd79c71302 Style fixes for SetProgressBar 2016-08-09 21:02:14 +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
Kevin Sawicki
dbddf5028a Adjust y position if menu bar is visible 2016-08-04 13:18:58 -07:00
Kevin Sawicki
a190495df3 Use bounds for converting window/content sizes 2016-08-04 11:27:27 -07:00
Kevin Sawicki
4751f971e2 Use View::GetBoundsInScreen to compute content bounds 2016-08-04 09:58:36 -07:00
Kevin Sawicki
4f90abce23 Set bounds size to content size 2016-08-04 09:58:36 -07:00
Kevin Sawicki
48cc13d009 Add BrowserWindow.getClientBounds API 2016-08-04 09:58:35 -07:00
Cheng Zhao
0c1d91a895 display.h needs to be used together with screen.h 2016-07-22 23:37:20 +09:00
Cheng Zhao
cf6f4708bc Fix building on Windows 2016-07-21 11:20:43 -06:00
Cheng Zhao
6850500a65 Fix building on Linux 2016-07-21 07:09:01 -06:00
Cheng Zhao
b57665330c Merge branch 'master' into chrome52 2016-07-21 05:34:36 -06:00
Cheng Zhao
a1a870fe43 Auto-hide menubar when in fullscreen 2016-07-11 13:10:19 +09:00
Cheng Zhao
e8e2763131 win: Add toolbar type for BrowserWindow 2016-07-11 12:46:50 +09:00
Cheng Zhao
f77b9db069 Fix unmaximize() not working 2016-07-09 23:16:57 +09:00
Cheng Zhao
5979c1464f Remember bounds instead of size 2016-07-09 23:10:36 +09:00
Cheng Zhao
c4de246bfb Correctly handle unmaximize 2016-07-09 23:04:42 +09:00
Cheng Zhao
baff744601 Use setBounds to implement maximize for window without thickFrame 2016-07-09 22:49:55 +09:00
Cheng Zhao
2ece9e2885 Add thickFrame option 2016-07-09 21:49:15 +09:00
Kevin Sawicki
2faf00dc19 Only use default accelerator in Windows/Linux app menu 2016-07-07 11:50:19 -07:00
Cheng Zhao
41b8dda071 For hidden window focus() should do nothing 2016-07-05 10:34:52 +09:00
Cheng Zhao
381689d3ed Fix building on Windows 2016-07-05 09:31:29 +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
02acce8991 linux: Make modal dialog show more smoothly 2016-06-20 11:16:41 +09:00
Cheng Zhao
9aa7291627 linux: Implement win.disable/enable/isEnabled() API 2016-06-20 11:16:41 +09:00
Cheng Zhao
f4bec78ccb linux: Implement win.setParentWindow(parent) 2016-06-20 11:16:41 +09:00
Cheng Zhao
4c3c4437da win: Implement win.disable/enable/isEnabled() API 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
473413e874 views: Initial implementation of win.setParentWindow(parent)
But it doesn't work, aparrently Chromium doesn't support changing
parent window dynamically on desktop.
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
50f1837097 On Windows focusable: false also means skipTaskbar: true 2016-06-13 17:24:45 +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
Cheng Zhao
f8b69c1fac Implement SetIgnoreMouseEvents for Linux 2016-06-07 20:23:29 +09:00
Cheng Zhao
cae25cab3e Implement SetIgnoreMouseEvents for Windows 2016-06-07 19:38:41 +09:00
Cheng Zhao
32b692b60c Fix NativeWindow::Focus not moving focus to window
Chromium's implementation is somehow not working as expected, the new
implementation follows the behavior of wmctrl.
2016-06-06 16:59:31 +09:00
Cheng Zhao
aea2135016 Keep copies of window icons 2016-05-31 17:47:45 +09:00
Daniel Pham
d1c302800f Fix: Properly notify observers when window prevents close 2016-05-25 19:26:57 -04:00
Cheng Zhao
3182485e68 No need to reference the icon in Tray 2016-05-20 22:44:02 +09:00
Cheng Zhao
a93c9462ed Add BrowserWindow.setIcon 2016-05-20 22:22:15 +09:00
Cheng Zhao
d26480b74e Correctly set window icon from ICO 2016-05-20 19:46:05 +09:00
Cheng Zhao
e77582baee Fix compilation warnings introduced by VS 2015 2016-05-13 11:12:01 +09:00
Cheng Zhao
99a9aa085e views: Delay the focus/blur event to next tick 2016-04-13 11:02:34 +09:00
Cheng Zhao
cb470cb94b Use BrowserWindow's backgroundColor as renderer view's background color 2016-04-02 20:46:50 +09:00
Arek Sredzki
c1267b2320 Added 'show' & 'hide' events to browser-window, fixed visibilitychange event in renderer 2016-03-10 13:51:31 -08:00
Cheng Zhao
2be368bded SetFullScreen should not work at all when not fullscreenable
This follows the logic of OS X.
2016-03-05 21:38:06 +09:00
brenca
a06392459e Making fullsceenable work on Linux 2016-02-27 22:37:42 +01:00
Heilig Benedek
bb42c85df8 resolve update conflicts 2016-02-27 03:23:10 +01:00
Heilig Benedek
bb0ac688b2 Reverted SetFullscreenable disabling maximize button on Windows and removed that from the docs. 2016-02-27 03:07:53 +01:00
Cheng Zhao
49f995925c Notify the global menu bar when window is mapped 2016-02-23 15:43:32 +08:00
Heilig Benedek
39bb670719 Revert will-enter-full-screen event, matching osx fullscreen: false behaviour on windows instead 2016-02-22 10:23:56 +01:00
Heilig Benedek
a8ae14e94f Introducing a will-enter-full-screen event that's cancellable 2016-02-09 01:17:05 +01:00
Cheng Zhao
cc560a3900 spec: Fix failing tests on Windows 2016-01-24 14:31:37 +08:00
Cheng Zhao
c41de501cb spec: Test the -able methods 2016-01-24 14:31:37 +08:00
Cheng Zhao
239bfe970c Make hasShadow work on Windows/Linux 2016-01-24 14:31:37 +08:00
Cheng Zhao
d704b3f7ba Reorgnize how attributes work 2016-01-24 14:31:37 +08:00
Cheng Zhao
5372b6cd91 Fullscreenable => FullScreenable 2016-01-24 14:31:36 +08:00
Cheng Zhao
8cabe0f008 Merge pull request #4156 from evgenyzinoviev/windows-pr
Improvements in BrowserWindow
2016-01-22 23:42:41 -08:00
evgenyzinoviev
ef51e4e108 maximizable and fullscreenable 2016-01-22 23:21:46 +01:00
Cheng Zhao
21f5e27a5e Merge pull request #4161 from gabriel/master
Support backgroundColor for window on mac
2016-01-21 15:42:21 -07:00
Gabriel Handford
239baa3e9a Support backgroundColor for window on mac 2016-01-21 11:07:33 -08:00
evgenyzinoviev
fd5c249cb8 fix for windows 2016-01-19 16:58:19 +01:00
evgenyzinoviev
0a79204abb IsMovable to return true on Linux 2016-01-19 16:44:04 +01:00
evgenyzinoviev
c3049e1e99 docs updated 2016-01-19 16:14:59 +01: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
64f310168c code style fix 2016-01-15 17:40:42 +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
Cheng Zhao
3ca5b0ce23 win: Don't change transparent window's style
Close #1952.
2016-01-06 23:02:33 +08:00
Cheng Zhao
d3d8ab7c66 linux: Fix pressing Alt not toggling window menu bar 2015-12-24 11:43:14 +08:00
Cheng Zhao
73e7773d84 Update to API changes of Chrome 47 2015-12-07 19:56:23 +08:00
Cheng Zhao
860c46b3c1 Separate options from switches
On Windows the case sensitivity of command line switches are ignored, so
--nodeIntegraion will become --nodeintegration.

We should separate options from switches so we use "nodeIntegraion" in
options, while passing "--node-integration" in command line.
2015-11-13 14:05:49 +08:00
Cheng Zhao
e36d455d51 Add setBackgroundColor method 2015-10-23 11:35:33 +08:00
Cheng Zhao
4a6134f3f7 win: Set native window's background color 2015-10-23 11:17:14 +08:00
Robo
9411508d3e browser: option to set window background color 2015-10-22 09:54:29 +05:30
Cheng Zhao
6aec8b092c views: Fix crash when setSizeConstrains is called early 2015-10-15 16:36:28 +08:00
Cheng Zhao
f607e81fac views: Make size constraints work immediately after set 2015-10-06 16:16:02 +08:00
Cheng Zhao
e06778178a linux: Restore size constraints when became sizable 2015-10-06 16:09:03 +08:00
Cheng Zhao
60fb406c61 views: Fix content size constraints in window with menubar 2015-10-06 00:15:47 +08:00
Cheng Zhao
bb49515145 Separate Windows specific code of NativeWindow to another file 2015-10-06 00:13:57 +08:00
Cheng Zhao
857acd2574 win: Fix GetContentSize for minimized window 2015-10-05 21:06:57 +08:00
Cheng Zhao
3b1ee994e2 views: Remove hack on setting min/max size for frameless window 2015-10-05 20:37:08 +08:00
Cheng Zhao
a9b0111c3e views: Use the quicker way of return content size
Converting content size to window size on high DPI systems will lose
percise and have 1px offset sometimes.
2015-10-05 20:07:20 +08:00
Cheng Zhao
a76ea00249 views: Implement NativeWindow::SetSizeConstraints 2015-10-05 20:07:20 +08:00
Cheng Zhao
8577f2b52f osx: Add NativeWindow::SetSizeConstraints 2015-10-05 20:07:20 +08:00
Cheng Zhao
526cee7ec3 Merge tag 'v0.33.6' 2015-10-05 19:58:47 +08:00
Cheng Zhao
7de3aa3cc1 Fix typo, closes #2990 2015-10-05 19:57:14 +08:00
Cheng Zhao
2b9b4c6789 Merge pull request #2979 from etiktin/fix_calculating_min_max_4_frameless
Fix calculating min/max size in frameless view
2015-10-05 15:10:27 +08:00
Cheng Zhao
de24ed7cea Merge pull request #2985 from etiktin/fix_restore_size_windows
[Windows] Fix restore/unmaximize wrong window size
2015-10-05 15:09:24 +08:00
Eran Tiktin
4d02fc58fa Fix restore/unmaximize wrong window size
This resolves #2498.
2015-10-05 03:29:02 +03:00
Cheng Zhao
791f988aba linux: Fix pressing Alt not showing menubar 2015-10-04 16:32:08 +08:00
Eran Tiktin
aea1f8aebb Fix calculating min/max size in frameless views
The minimum and maximum size that frameless windows had used, was
incorrect. It included the border, so when it was called it actually
added that to the size, so window increased in size. The fix makes sure
that the view will use the frameless size.

This fixes #2945 and partially fixes #1806 (it also refers to some other
issues with hidpi which might still exist).
2015-10-03 22:09:57 +03:00
Cheng Zhao
8d61531f4e Revert #2879 2015-10-01 17:46:11 +08:00
Cheng Zhao
83c514001e Move devtools API to WebContents 2015-10-01 11:25:31 +08:00
Eran Tiktin
ee0f0f6cfc Fix window state events on Windows
This commit fixes the issue we had with window state events not firing
when triggered through Aero Snap.
Instead of listening to command from the system menu (SC_MAXIMIZE etc.),
we use the WM_SIZE event.

This resolves #1381.
2015-09-29 02:20:09 +03:00
Cheng Zhao
da57a3101f Call WasShown when showing window
Otherwise WebContents would be invisible when window is hidden at first
and then show later.

Refs #2879.
2015-09-24 18:16:41 +08:00
Cheng Zhao
6e75af5c0f Move SetOverlayIcon to TaskbarHost 2015-08-06 13:07:00 +08:00
Cheng Zhao
2d6f8350cb Move SetProgressBar to TaskbarHost 2015-08-06 12:54:00 +08:00
Cheng Zhao
a28f70e85c Decouple TaskbarHost from NativeWindow 2015-08-06 11:10:34 +08:00
Cheng Zhao
8f8c3aef87 ThumbarHost => TaskbarHost 2015-08-06 10:30:22 +08:00
Cheng Zhao
39af10cc8d Move thumbar_host_ from TreeHost to NativeWindow 2015-08-06 10:25:50 +08:00
Cheng Zhao
d175a68586 Add MessageHandlerDelegate 2015-08-06 10:15:27 +08:00
Haojian Wu
2f1cb8b52a Expose NativeWindow.setThumbarButtons API to all platforms. 2015-08-05 22:30:05 +08:00
Haojian Wu
78eac4116c Polish thumbar code.
* Fix a memory leak in thumbar initialization.
* Check the number of thumbar buttons, should be <= 7.
* Correct to check thumbar button click event.
2015-08-05 19:38:12 +08:00
Haojian Wu
dfd076a3e5 Move atom_desktop_window_tree_host_win to atom/browser/ui/win directory. 2015-08-05 13:55:06 +08:00