Commit graph

457 commits

Author SHA1 Message Date
Victor Berger
17fde48ed7 wayland: move input logic to the event loop 2017-03-10 23:22:59 +01:00
Imanol Fernandez
f961bdd668 Implement android events and wake event loop. 2017-03-06 14:39:42 +01:00
Gabriel Martinez
deeda59689 Clean up macOS window style logic
* Remove NSTitledWindowMask for windows with no decorations. This
makes sure that they do not have a title bar.
* Transparency is not be taken into account as we could have a window
with a titlebar or without that is transparent.
2017-03-05 14:50:39 -08:00
Gabriel Martinez
0b530b026d Support disabling window decorations in X11
This uses the incredibly old and ugly _MOTIF_WM_HINTS property:
http://stackoverflow.com/questions/5134297/xlib-how-does-this-removing-window-decoration-work

Using _NET_WM_WINDOW_TYPE from the Extended Window Manager Hints spec
(https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html)
would be preferred, but it requires knowing up front what the user
intends their window to be. _MOTIF_WM_HINTS should work for now.
2017-03-05 09:42:24 -08:00
Victor Berger
7336cacf07 wayland: mugrate to new API 2017-03-04 14:04:01 +01:00
Victor Berger
9aaa788434 linux: Remove dead code from wayland & fix some trivial warnings. 2017-03-04 11:26:12 +01:00
Victor Berger
4e75c1e668 linux: Add missing Window2::id() impl 2017-03-04 10:48:44 +01:00
Victor Berger
624a422f20 linux: move api transition boilerplate to x11/wayland submodules 2017-03-04 09:09:09 +01:00
Victor Berger
4acf437221 Move api module into platform::linux 2017-03-04 09:09:09 +01:00
Erik Rigtorp
290040dbd8 Implement KeyboardEvent ModifiersState for macOS 2017-02-27 13:38:47 -06:00
Erik Rigtorp
5d41067a05 Implement KeyboardEvent ModifiersState for win32 2017-02-27 13:36:15 -06:00
Erik Rigtorp
f3ccdb7aec Add keyboard modifiers to input event
Making applications track modifier keys results in unnecessary work for
consumers, it's error prone, and it turns out to have unavoidable bugs.
For example, alt-tabbing with x11 results in the alt modifier state
getting stuck.

To resolve these problems, this patch adds a Mods value to the keyboard
input event.

Based on this patch: d287fa96e3
2017-02-27 13:36:11 -06:00
mitchmindtree
24b44e3b8e Remove confusingly named event import alias 2017-02-05 20:41:26 +11:00
mitchmindtree
ba71f6fb77 Add missing unsafe block to check for main thread macOS 2017-02-05 19:53:13 +11:00
mitchmindtree
926e03039f Panic if the user attempts to create window on non-main thread 2017-02-05 19:47:39 +11:00
mitchmindtree
b62ecfd517 Fix comments on macOS backend UserCallback methods 2017-02-05 19:37:00 +11:00
mitchmindtree
30e00f0454 Fix comment on event conversion special case 2017-02-05 19:21:51 +11:00
mitchmindtree
06c1b5903b Fix bug where an NSEvent is produced when a user opens spotlight while
the NSApplication is in focus.

This NSEvent produces an undocumented NSEventType value `21` that has no
associated variant within the cocoa-rs crate's `NSEventType` enum, thus
causing a segfault when attemptingt to match on the value.

This commit adds a check for `21` to avoid the segfault.

This fixes #104.
2017-02-05 19:01:27 +11:00
mitchmindtree
cbadc4bc31 Fix issue where window would not focus on startup.
Fix issue where key window would lose all mouse events once mouse left
that window.

Make sure that only window under mouse receives mouse scroll wheel
events.
2017-02-05 18:12:32 +11:00
mitchmindtree
3482c53c89 Rename old glutin ivar to winit 2017-02-05 13:28:56 +11:00
mitchmindtree
3ce7904e01 Wrap the temporarily stored user callback in a type to enforce
invariants

This also removes the need for "box"ing the callback in favour of
storing a raw `*mut` pointer. We can do this by ensuring that we never
store the pointer for longer than the lifetime of the user callback,
which is the duration of a call to `poll_events` or `run_forever`.

Also removes old commented out event code from the window module.
2017-02-05 12:51:09 +11:00
mitchmindtree
c03311fa2d Add a method to simplify emitting an event from the macos poll_events and run_forever methods 2017-02-04 13:30:34 +11:00
mitchmindtree
fd0ddee63c Panic if the user attempts to run an event loop on a non-main thread on macOS 2017-02-04 02:55:42 +11:00
mitchmindtree
ea19409960 Make sure EventsLoop::interrupt awakens the waiting event loop 2017-02-04 02:54:40 +11:00
mitchmindtree
35dcf8dab9 Only return Awakened on NsApplicationActivated, rather than on every unknown event. 2017-02-04 00:51:38 +11:00
mitchmindtree
be09639b69 Update the macOS backend to the new futures-compatible API.
This is a follow up to the new API introduced in #20.

This also fixes the issue where window resize events would not be
emitted until the end of the resize. This PR fixese #39 by ensuring that
the user callback given to either `EventsLoop::poll_events` or
`EventsLoop::run_forever` can be called by each window delegate's resize
callback directly.
2017-02-03 23:05:57 +11:00
Pierre Krieger
885b927d23 Merge remote-tracking branch 'origin/master' into impl-20 2017-02-03 09:14:24 +01:00
tomaka
ae53bb0f14 Merge pull request #102 from cjhowe/master
iOS Support
2017-02-03 09:09:02 +01:00
Pierre Krieger
422b332c1b Add a transition macro system 2017-01-28 15:00:17 +01:00
Pierre Krieger
8277b26862 No longer use an api_dispatch module for linux 2017-01-28 13:14:20 +01:00
Owen Jacobson
6f82ccfba9
De-duplicate resize events.
This tracks resizes separately, and synthesizes them for the event iterators as needed, so that OS X apps don't generate a whole set of resize events after each resize.
2017-01-24 13:46:46 -05:00
Owen Jacobson
7d6b4c3fe5
Naive implementation of resize events for OS X.
These events are batched, and delievered en masse at the end of the resize. This isn't a great developer experience (and it should probably be called out in the docs), but it makes it possible for winit client applications to detect and respond to resizes without special-casing Mac OS targets.

See #39. This is only a partial fix, and does not provide on-the-fly resize events.
2017-01-24 00:13:45 -05:00
mitchmindtree
9b15440b62 Fix non_upper_case_globals warnings on macos 2017-01-22 17:54:45 +11:00
tomaka
41ac24b107 Merge pull request #113 from samdphillips/mac-middle-mouse-button
Add middle mouse button events for MacOS.
2017-01-19 20:45:51 +01:00
Jeff Muizelaar
3b1fdc0f55 macos: Map our user generated event to Event::Awakened
This fixes propagation of Event::Awakend from wakeup_event_loop() when
using poll_event() on macOS.

Currently wait_event() translates all unknown events into
Event::Awakened so doesn't need the explicit translation.
2017-01-19 14:17:55 -05:00
Sam Phillips
55e52d6071 Add middle mouse events for MacOS. 2017-01-17 19:47:36 -08:00
rerion
f5812018ca Add get_x11_xconnection function 2017-01-07 14:34:38 +01:00
rerion
d4b8fd9f5a Add methods allowing creation of X11 window with specified visual and screen 2017-01-06 22:46:41 +01:00
Christian Howe
ba94b8edf8 Fix Travis iOS build 2016-12-15 21:34:37 -06:00
Christian Howe
5146bce88e Fix iOS build and add to Travis CI 2016-12-13 07:29:17 -06:00
tomaka
3b93c7c664 Merge pull request #95 from frewsxcv/transparent
Implement window transparency on macOS.
2016-12-04 07:59:51 +01: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
k-brac
7f2ee9a09a remove useless pub 2016-11-29 14:02:19 +01:00
k-brac
3e2154a922 child window created using a winapi::HWND instead of a WindowProxy 2016-11-29 13:02:42 +01:00
k-brac
2b25bf1480 child window creation improvement 2016-11-28 13:50:07 +01:00
k-brac
5a09e8ba21 first try to allow child window on windows 2016-11-25 17:05:39 +01:00
Corey Farwell
57d1e162ee Update min/max window constraints to support MacOS 10.10. 2016-11-23 10:50:12 -05:00
Corey Farwell
e3fce3d5ec Implement min/max window dimension constraints for MacOS.
Fixes https://github.com/tomaka/winit/issues/80.
2016-11-23 09:31:41 -05:00
Pierre Krieger
712b27086f Fix win32 panicking all the time and make events work 2016-11-05 13:44:23 +01:00
Victor Berger
f371621dd9 linux: remove outdate comment 2016-11-03 22:48:58 +01:00