Commit graph

343 commits

Author SHA1 Message Date
Osspial 3ba808e3c6 On Windows, catch window callback panics and forward them to the calling thread (#703)
* Catch windows callback panics

* Unwind through calling thread

* Add CHANGELOG entry

* Fix 1.24.1 builds

* Reformat CHANGELOG entry

* Make changes from review

* Wrap thread event target in panic catcher, reformat panic resume message

* Fix me being bad at git
2018-11-17 14:20:04 -05:00
Joe Moon 30aa5a5057 version 0.18.0 (#680)
* version 0.18.0

* Changelog: F16-F24 support was a breaking change

* fix version in README

* bump image dep

* Updated release date
2018-11-07 00:43:15 -05:00
Patrick Walton d2d127a4c4 Make views explicitly layer-backed on macOS Mojave. (#685)
On Mojave, views automatically become layer-backed shortly after being added to
a window. Changing the layer-backedness of a view breaks the association
between the view and its associated OpenGL context. To work around this, on
Mojave we explicitly make the view layer-backed up front so that AppKit doesn't
do it itself and break the association with its context.

This was breaking the `window` example in `glutin`.
2018-11-05 14:34:54 -05:00
Osspial 6bec912961 Add optional Serde implementations and missing derivable traits (#652)
* Add optional serde feature

* Document features in README

* Add changelog entry

* Implement some missing derivable traits

* Add changelog entry for std derives

* Remove extraneous space on serde doc comments

* Add period to end of serde line in readme

* Remove serde impls from WindowAttributes

* Add serde impls for TouchPhase

* Add serde test file

* Add feature lines to testing CIs

* Remove WindowAttributes from changelog
2018-11-01 04:24:56 -04:00
Artúr Kovács 214e157e5d Implement HoveredFile and HoveredFileCancelled on Windows (#662)
* Implement HoveredFile and HoveredFileCancelled on Windows (#448)

* Update CHANGELOG.

* Applied code organizational corrections and fixed IDropHandler leak on window destroy.

* Moved FileDropHandle to a separate file.
2018-10-24 14:40:12 -04:00
Lucas Kent da1d479e55 update to image 0.20 (#683) 2018-10-23 20:29:11 -04:00
Alex Taylor 26b70e457b Windows: Fix transparency (#675)
* Windows: Fix transparency (#260)

* Windows: Only enable WS_EX_LAYERED for transparent windows

* Update winapi to 0.3.6

* Windows: Amend transparency code

* Add transparency fix to CHANGELOG.md
2018-10-17 20:23:59 -04:00
trimental 50008dff3d Upgrade to smithay-client-toolkit 0.4 (#671)
* Upgrade to smithay-client-toolkit 0.4

* Fix PR points
2018-10-14 19:15:43 -04:00
Kornel 54a782c8ae Syntax fix in Cargo.toml (#644) 2018-09-11 00:23:48 -04:00
Joe Moon c8e339fe6d version 0.17.2 (#630)
* version 0.17.2

* Update release date
2018-08-19 18:27:57 -04:00
trimental e4e53fe315 Add key repetition for the wayland backend (#628)
* Add key repetition for the wayland backend

* Upgrade smithay-client-toolkit to 0.3.0
2018-08-19 17:17:40 -04:00
Francesca Frangipane b2b740fed7
Windows: Fix fullscreen deadlock + release 0.17.1 (#622)
* Windows: Fix fullscreen deadlock

* Release winit 0.17.1
2018-08-07 14:24:43 -04:00
Azriel Hoh 09550397d7 Maintenance/620/fix x11 release mode compilation (#621)
* Raised minimum version of `x11-dl`.

This fixes a compilation error in release mode on X11.

Issue #620

* Updated `CHANGELOG.md` about X11 release mode compilation issue.
2018-08-05 02:24:49 -04:00
Paul Rouget a32f7f2ec5 Update cocoa and core-graphics (#608)
* Update cocoa and core-graphics

* Release winit 0.17.0

* Updated date / README version
2018-08-02 16:26:30 -04:00
trimental 3910326709 Update wayland-client and client-toolkit (#602) 2018-07-20 12:08:55 -04:00
Josh Groves 7ee46d80e6 Use class macro (#605) 2018-07-19 12:02:33 -04:00
Iku Iwasa 8c78013257 Support NetBSD platform (#603)
* Support NetBSD platform

* CHANGELOG tweak + target ordering
2018-07-16 10:25:26 -04:00
Bastien Orivel c1ef1acfc0 Update parking_lot and bump version (#593) 2018-07-07 17:21:53 -04:00
Francesca Frangipane 1703d0417a
Release winit 0.16.1 (#587) 2018-07-02 20:14:38 -04:00
Francesca Frangipane 2f7321a076
X11+Windows: Guess initial DPI factor (#583)
* X11: Guess initial DPI factor

* Windows: Guess initial DPI factor
2018-07-01 11:01:46 -04:00
Francesca Frangipane 089816d9ba
Release winit 0.16.0 (#578) 2018-06-25 16:47:10 -04:00
Francesca Frangipane 1b74822cfc
DPI for everyone (#548) 2018-06-14 19:42:18 -04:00
Francesca Frangipane 23c384bd30
Release winit 0.15.1 (#564) 2018-06-13 12:06:22 -04:00
Victor Berger ced1616e51 wayland: implement set_resizable (#565) 2018-06-13 11:18:44 -04:00
Peter Atashian 233ac4aed2 Update to winapi 0.3.5 (#563) 2018-06-12 11:58:18 -04:00
Francesca Frangipane 282770f11a
Release winit 0.15.0 (#530) 2018-05-22 14:17:41 -04:00
Francesca Frangipane 2464a135b3
macOS: Fix Window::get_current_monitor (#521)
* macOS: Implement MonitorId::get_position

* macOS: Fix Window::get_current_monitor
2018-05-16 09:41:45 -04:00
Victor Berger ffa9b51d27 wayland: improve diagnostic of failed init (#512) 2018-05-12 07:58:11 -04:00
tinaun b4a8c08f43 compile with icon_loading feature on docs.rs (#509)
* compile with icon_loading feature on docs.rs

these functions should be more visible now.

* Explicitly document which functions require icon_loading
2018-05-11 10:33:06 -04:00
Francesca Frangipane e48f1fc5f1
Release winit 0.14.0 (#503) 2018-05-09 10:58:06 -04:00
Johannes Hofmann 374f131f1e Update wayland-client to version 0.20.4 (#505)
Fixes #504
2018-05-08 19:00:54 -04:00
Francesca Frangipane 102dd07456
Window icons (#497) 2018-05-07 17:36:21 -04:00
Victor Berger 1e97103094 wayland: migrate to smithay-client-toolkit (#490)
* wayland: migrate to smithay-client-toolkit

* Update smithay-client-toolkit

* Add changelog entry for wayland rework
2018-05-05 13:36:34 -04:00
Francesca Frangipane c4b92ebd45
X11: General cleanup (#491)
* X11: General cleanup

This is almost entirely internal changes, and as usual, doesn't actually
fix any problems people have complained about.

- `XSetInputFocus` can't be called before the window is visible. This
was previously handled by looping (with a sleep) and querying for the
window's state until it was visible. Now we use `XIfEvent`, which blocks
until we receive `VisibilityNotify`. Note that this can't be replaced
with an `XSync` (I tried).
- We now call `XSync` at the end of window creation and check for
errors, assuring that broken windows are never returned. When creating
invisible windows, this is the only time the output buffer is flushed
during the entire window creation process (AFAIK). For visible windows,
`XIfEvent` will generally flush, but window creation has overall been
reduced to the minimum number of flushes.
- `check_errors().expect()` has been a common pattern throughout the
backend, but it seems that people (myself included) didn't make a
distinction between using it after synchronous requests and asynchronous
requests. Now we only use it after async requests if we flush first,
though this still isn't correct (since the request likely hasn't been
processed yet). The only real solution (besides forcing a sync *every
time*) is to handle asynchronous errors *asynchronously*. For future
work, I plan on adding logging, though I don't plan on actually
*handling* those errors; that's more of something to hope for in the
hypothetical async/await XCB paradise.
- We now flush whenever it makes sense to. `util::Flusher` was added to
force contributors to be aware of the output buffer.
- `Window::get_position`, `Window::get_inner_position`,
`Window::get_inner_size`, and `Window::get_outer_size` previously all
required *several* round-trips. On my machine, it took an average of
around 80µs. They've now been reduced to one round-trip each, which
reduces my measurement to 16µs. This was accomplished simply by caching
the frame extents, which are expensive to calculate (due to various
queries and heuristics), but change infrequently and predictably. I
still recommend that application developers use these methods sparingly
and generally prefer storing the values from `Resized`/`Moved`, as
that's zero overhead.
- The above change enabled me to change the `Moved` event to supply
window positions, rather than client area positions. Additionally, we no
longer generate `Moved` for real (as in, not synthetic)
`ConfigureNotify` events. Real `ConfigureNotify` events contain
positions relative to the parent window, which are typically constant
and useless. Since that position would be completely different from the
root-relative positions supplied by synthetic `ConfigureNotify` events
(which are the vast majority of them), that meant real `ConfigureNotify`
events would *always* be detected as the position having changed, so the
resultant `Moved` was multiple levels of misleading. In practice, this
meant a garbage `Moved` would be sent every time the window was resized;
now a resize has to actually change the window's position to be
accompanied by `Moved`.
- Every time we processed an `XI_Enter` event, we would leak 4 bytes via
`util::query_pointer` (`XIQueryPointer`). `XIButtonState` contains a
dynamically-allocated mask field which we weren't freeing. As this event
occurs with fairly high frequency, long-running applications could
easily accumulate substantial leaks. `util::PointerState::drop` now
takes care of this.
- The `util` module has been split up into several sub-modules, as it
was getting rather lengthy. This accounts for a significant part of this
diff, unfortunately.
- Atoms are now cached. Xlib caches them too, so `XInternAtom` wouldn't
typically be a round-trip anyway, but the added complexity is
negligible.
- Switched from `std::sync::Mutex` to `parking_lot::Mutex` (within this
backend). There appears to be no downside to this, but if anyone finds
one, this would be easy to revert.
- The WM name and supported hints are now global to the application, and
are updated upon `ReparentNotify`, which should detect when the WM was
replaced (assuming a reparenting WM was involved, that is). Previously,
these values were per-window and would never update, meaning replacing
the WM could potentially lead to (admittedly very minor) problems.
- The result of `Window2::create_empty_cursor` will now only be used if
it actually succeeds.
- `Window2::load_cursor` no longer re-allocates the cursor name.
- `util::lookup_utf8` previously allocated a 16-byte buffer on the heap.
Now it allocates a 1024-byte buffer on the stack, and falls back to
dynamic allocation if the buffer is too small. This base buffer size is
admittedly gratuitous, but less so if you're using IME.
- `with_c_str` was finally removed.
- Added `util::Format` enum to help prevent goofs when dealing with
format arguments.
- `util::get_property`, something I added way back in my first winit PR,
only calculated offsets correctly for `util::Format::Char`. This was
concealed by the accomodating buffer size, as it would be very rare for
the offset to be needed; however, testing with a buffer size of 1,
`util::Format::Long` would read from the same offset multiple times, and
`util::Format::Short` would miss data. This function now works correctly
for all formats, relying on the simple fact that the offset increases by
the buffer size on each iteration. We also account for the extra byte
that `XGetWindowProperty` allocates at the end of the buffer, and copy
data from the buffer instead of moving it and taking ownership of the
pointer.
- Drag and drop now reliably works in release mode. This is presumably
related to the `util::get_property` changes.
- `util::change_property` now exists, which should make it easier to add
features in the future.
- The `EventsLoop` device map is no longer in a mutex.
- `XConnection` now implements `Debug`.
- Valgrind no longer complains about anything related to winit (with
either the system allocator or jemalloc, though "not having valgrind
complain about jemalloc" isn't something to strive for).

* X11: Add better diagnostics when initialization fails

* X11: Handle XIQueryDevice failure

* X11: Use correct types in error handler
2018-05-03 09:15:49 -04:00
Francesca Frangipane 2ea42b3947
Release winit 0.13.1 (#486) 2018-04-26 18:53:16 -04:00
Branan Riley 7510b95d8c Set minimum x11-dl version to include Z (#484)
Without this pin, an existing cargo.lock for an older winit will not
update the x11-dl dependency, and thus will select a version that is
missing required new XIM features.
2018-04-26 11:53:11 -04:00
Joe Moon 4641433c6a bump minor version (#468)
* bump minor version

* update changelog date and fix typo

* Updated date (we're going to release for real this time)

* Update version in README for the first time in a long time
2018-04-25 11:43:32 -04:00
Edwin Cheng bdc01fee1a Implement set_maximized, get_current_monitor, set_fullscreen and set_decorations for windows (#457)
* Implement set_fullscreen for windows

* Implement get_current_monitor for windows

* Implement set_maximized

* Implement set_decorations for windows

* Update CHANGELOG.md

* Fixed minor syntax bug for stable rust version

* Added support for WindowBuilder::with_maximized

* Move all window sized related functions to main thread

* Refactor and formatting force_window_active

* Remove unused code

* Update CHANGELOG.md

* Refactor and change keyboard handling code

* Reformatting and refactoring

* Added back missing link for comment

* Fixed set_maximized and set_fullscreen wrong order bug

* Call ShowWindow(SW_RESTORE) when restore_saved_window

* Sync system maximized status when set_fullscreen

* Fixed wrong function name
2018-04-12 13:12:15 -04:00
mitchmindtree 9d036a6faa
Publish 0.12.0. Update CHANGELOG. (#449)
See the CHANGELOG for all relevant changes included in this new version.
2018-04-06 15:04:12 +05:45
Pierre Krieger 0b922ad9c0
0.11.3 (#437) 2018-03-28 13:32:46 +02:00
Paul Rouget 51181b4347 Version bump (#418)
* Send Awakened event on Android when event loop is woken up

* v0.11.2
2018-03-06 18:07:18 +01:00
Chet Gurevitch f279b2f229 Version 0.11.1 (#409) 2018-02-20 16:18:16 +01:00
Pierre Krieger 4abcc164cd
Publish 0.11.0 (#404) 2018-02-09 12:07:19 +01:00
Paul Rouget 9b5254adeb Version 0.10.1 (#397) 2018-02-05 18:50:13 +01:00
Jeff Muizelaar b49abbbf17 Update mac dependencies (#390) 2018-02-05 14:34:37 +01:00
Gabriel Majeri dddd9de151 Update x11-dl (#378) 2018-01-09 11:48:23 +01:00
Pierre Krieger 198d9ff230
Publish 0.10.0 (#375) 2017-12-27 19:44:53 +01:00
Chet Gurevitch 23881459bc Update dependencies (#369)
* macos: Update core-graphics to v12 and cocoa to v13

* Update lazy_static to v1
2017-12-27 18:39:38 +01:00
Gabriel Majeri d92666c188 Update winapi to 0.3 (#346)
* Update to `winapi` 0.3

* Update max size comment

* Fix missing import

* Shorten import path

* Update to stable winapi version
2017-12-24 14:46:47 +01:00
Francesca Sunshine d18db208ff x11: Implement file drag and drop (#360)
* x11: Implement file drag and drop

* Fixed typo
2017-12-13 12:22:03 +01:00
stuart nelson 8348e8225b bump for v0.9.0 (#355) 2017-12-01 10:58:48 +01:00
Victor Berger 61d25be3e0
wayland: upgrade wayland-window (#339)
* wayland: upgrade wayland-window

This new version of wayland window considerably simplifies the
window handling for winit, meaning much of the previous juggling
is no longer needed, and the windows will appear even if nothing is
drawn.

* wayland: cleanup unused stuff
2017-11-03 17:35:29 +01:00
Andriy Symonovych 37a10e6741 update macos deps (#335) 2017-10-31 11:03:18 +01:00
Victor Berger 62e45fa75d wayland: update dependencies (#334) 2017-10-30 07:27:43 +01:00
Victor Berger d10312c6b1 Rewrite of wayland backend to new wayland-client API (#325)
* wayland: clean state for rewrite to new wayland-client API

* wayland: context init

* wayland: Monitors logic

* wayland: Basic event loop logic

* wayland: Keyboard handling

* wayland: pointer handling

* wayland: refactor to remove WaylandContext

* wayland: window logic

* wayland: event dispatching logic

* wayland: update changelog
2017-10-20 09:46:42 +02:00
Chet Gurevitch eff3440482 Mirror x11 ISO_LEFT_TAB detection on wayland and release version 0.8.3 (#314)
* wayland: mirror x11 ISO_LEFT_TAB detection

* Release 0.8.3
2017-10-12 09:39:41 +02:00
Victor Berger b337d8f99b Version 0.8.2 (#301) 2017-09-28 19:04:26 +02:00
tomaka 15fbc0dff4 Publish 0.8.1 with fixes necessary for glutin (#296) 2017-09-23 09:36:30 +02:00
tomaka 3edc8e0cd9 Publish 0.8.0 (#290) 2017-09-22 08:00:19 +02:00
tomaka ae7802c8c2 Fix warnings for win32 (#283) 2017-09-13 11:15:16 +02:00
Pedro Côrte-Real 5b57b73fe8 Remove dead code causing warnings (#278) 2017-09-04 08:45:56 +02:00
Victor Berger 1b22e39fb2 wayland: internal event buffer & wait for xdg configure (#255) 2017-08-31 19:43:24 +02:00
Tim Steinbach be9d4e7e03
Release 0.7.6 2017-08-26 10:41:24 -04:00
Victor Berger 8d5b23d56c Update wayland-window to support xdg_shell 2017-07-19 18:28:14 +02:00
Rukai e1e21ded28 Fix x11 ModifiersState 2017-07-15 09:58:32 -07:00
Pierre Krieger 7a1a2667b1 Reimplement platform_window on win32 2017-07-13 21:14:32 +02:00
Rukai 117beed0b5 Fix x11 mouse scroll wheel 2017-07-11 17:15:23 +10:00
Imanol Fernandez 5ebeb8ab5f Fix Android compilation error 2017-07-06 23:33:42 +02:00
Pierre Krieger ac0d6c890a Remove dependency on cgl on OSX 2017-07-05 09:13:39 +02:00
tomaka e196f80e98 Publish 0.7.1 2017-07-01 10:28:37 +02:00
Brendan Zabarauskas 886eab5c7e Fix build on nightly
Nightly recently fixed some soundness issues related to `Sized`. This had to be fixed in the cocoa crates as well, and also affects our ios bindings.
2017-07-01 17:48:47 +10:00
tomaka db0f012574 Merge pull request #205 from mitchmindtree/publish
Publish version 0.7.0
2017-06-24 09:02:29 +02:00
mitchmindtree 9a17c2eb86 Publish version 0.7.0
Includes:

- Recent removal of sync (breaking change) #191.
- Wayland fixes: #190, #188, #181
- X11 fixes: #174, #178,
2017-06-24 12:26:15 +10:00
Victor Berger e915454a9d linux: update wayland dependencies 2017-06-23 20:25:06 +02:00
Victor Berger 148c751f32 wayland: Initially paint the window white so that they always exist 2017-05-23 21:53:17 +02:00
Joe Wilm 6c5bc52a5f Bump Cargo.toml version to match crates.io
This makes is possible for consumers to use cargo [replace] with the
latest Glutin.
2017-05-09 09:55:10 -07:00
mitchmindtree 9363ee20f3 Publish 0.6.3 with recent non-breaking macOS fixes 2017-03-25 14:51:58 +11:00
Victor Berger 08254e68fb Readd pub import erroneously removed 2017-03-15 10:11:43 +01:00
Victor Berger 50f38e2f76 wayland: Update to wayland 0.8.6 2017-03-13 19:18:49 +01:00
Imanol Fernandez f961bdd668 Implement android events and wake event loop. 2017-03-06 14:39:42 +01:00
Victor Berger 64c8f66e72 wayland: implement modifiers 2017-03-03 22:28:02 +01:00
Sotaro Ikeda 3b1df2c585 Update cgl to v0.2 2017-03-02 14:48:03 +09:00
Pierre Krieger e158af6806 Add categories 2017-01-31 10:01:36 +01:00
tomaka 5b1d38cb2f Fix stupid shit 2017-01-28 11:22:20 +01:00
tomaka 56b536cd48 Publish 0.5.9 2017-01-25 07:58:51 +01:00
tomaka 07f7612e3b Pin down to cocoa 0.5.2 2017-01-20 07:09:37 +01:00
rerion 941c8d3344 Add TODO & bump version 2017-01-07 15:00:15 +01:00
Paul Houghton d4ee609e6f Dependent crates version updates 2016-12-08 09:29:17 +02:00
Corey Farwell cb0811faf3 Implement window transparency on macOS.
Fixes https://github.com/tomaka/winit/issues/57.
2016-11-30 14:36:51 -05:00
Corey Farwell a7c8d115d2 Bump version to 0.5.6.
Primarily to pick up https://github.com/tomaka/winit/pull/89.
2016-11-23 17:01:44 -05:00
Pierre Krieger 38ad236df0 Publish 0.5.5 2016-11-05 13:44:36 +01:00
tomaka 2a545a8ef6 Publish 0.5.4 2016-11-05 09:48:58 +01:00
Jacob Greenfield f9030abdab Bump version of MacOS deps. 2016-11-02 11:23:18 -04:00
tomaka a32aaee83e Publish 0.5.3 2016-10-20 11:24:42 +02:00
Victor Berger 76f5613496 wayland: properly fetch new events with Window::poll_events() 2016-10-16 23:29:29 +02:00
Victor Berger a5ba9983c9 wayland: basic mouse & keyboard support 2016-10-09 16:08:10 +02:00
Victor Berger 34c00aa153 wayland: window creation & resizing 2016-10-09 16:08:10 +02:00
Victor Berger c991172a28 wayland: remove old code for new backend 2016-10-09 16:08:10 +02:00
Andrey Lesnikov 7f6ae8910e Merge https://github.com/tomaka/glutin
Conflicts:
	.travis.yml
	Cargo.toml
	examples/fullscreen.rs
	src/api/android/mod.rs
	src/api/cocoa/headless.rs
	src/api/cocoa/helpers.rs
	src/api/cocoa/mod.rs
	src/api/glx/mod.rs
	src/api/osmesa/mod.rs
	src/api/win32/callback.rs
	src/headless.rs
	src/lib.rs
	src/platform/linux/mod.rs
	src/window.rs
2016-09-19 19:53:28 +03:00
Andrey Lesnikov 6089fa8c2c docs.rs 2016-09-05 22:10:15 +03:00