Commit graph

352 commits

Author SHA1 Message Date
Osspial 3cd40ef655
Remove icon loading feature (#799) 2019-02-23 20:59:00 -05:00
Victor Berger 6513351e0c
Wayland's eventloop 2.0 (#790)
* match unix common API to evl 2.0

* wayland: eventloop2.0

* make EventLoopProxy require T: 'static

* Fix linux build and tests

* wayland: update sctk & small fixes
2019-02-21 10:51:43 +01:00
Ryan Goldstein fd4db4000c Create the type layout
Everything typechecks, but nothing is implemented
2019-02-12 20:47:31 -05:00
Osspial 9602716ed2
Event Loop 2.0 API and Windows implementation (#638)
* Rename EventsLoop and associated types to EventLoop

* Rename WindowEvent::Refresh to WindowEvent::Redraw

* Remove second thread from win32 backend

* Update run_forever to hijack thread

* Replace windows Mutex with parking_lot Mutex

* Implement new ControlFlow and associated events

* Add StartCause::Init support, timer example

* Add ability to send custom user events

* Fully invert windows control flow so win32 calls into winit's callback

* Add request_redraw

* Rename platform to platform_impl

* Rename os to platform, add Ext trait postfixes

* Add platform::desktop module with EventLoopExt::run_return

* Re-organize into module structure

* Improve documentation

* Small changes to examples

* Improve docs for run and run_return

* Change instances of "events_loop" to "event_loop"

* Rename MonitorId to MonitorHandle

* Add CHANGELOG entry

* Improve WaitUntil timer precision

* When SendEvent is called during event closure, buffer events

* Fix resize lag when waiting in some situations

* Update send test and errors that broke some examples/APIs

* Improve clarity/fix typos in docs

* Fix unreachable panic after setting ControlFlow to Poll during some RedrawRequested events.

* Fix crash when running in release mode

* Remove crossbeam dependency and make drop events work again

* Remove serde implementations from ControlFlow

* Fix 1.24.1 build

* Fix freeze when setting decorations

* Replace &EventLoop in callback with &EventLoopWindowTarget

* Document and implement Debug for EventLoopWindowTarget

* Fix some deadlocks that could occur when changing window state

* Fix thread executor not executing closure when called from non-loop thread

* Fix buffered events not getting dispatched

* Fix crash with runner refcell not getting dropped

* Address review feedback

* Fix CHANGELOG typo

* Catch panics in user callback
2019-02-05 10:30:33 -05:00
Osspial 7be1d16263
Refactor win32 window state code (#730)
* Overhaul win32 window state

* Fix warnings

* Add CHANGELOG entry

* Rephrase CHANGELOG entries

* Fix 1.28.0 build

* Remove WS_POPUP styling

* Slight style correction

* Make set_maximized work

* Fix rect restore not working after winit set_maximized call

* Add a few comments
2019-02-04 11:52:00 -05:00
Anthony Ramine 8e733543cd Update image to 0.21 (#758) 2019-01-16 14:36:46 -05:00
Osspial ddf133dd66
Version 0.18.1 (#749)
* Version 0.18.1

* Change to 0.18.1
2019-01-09 03:16:41 -11:00
Bastien Orivel d622de4797 Update parking_lot to 0.7 (#747) 2018-12-23 06:12:11 -11:00
David Craven fd349f1822 Use smithay-client-toolkit's dpi handling. (#724)
* Use smithay-client-toolkit's dpi handling.

* Add CHANGELOG entry.
2018-12-10 14:55:40 -05:00
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