Commit graph

2428 commits

Author SHA1 Message Date
Victor Berger
4acf437221 Move api module into platform::linux 2017-03-04 09:09:09 +01:00
tomaka
d0ae5bda16 Merge pull request #148 from vberger/master
wayland: implement modifiers
2017-03-04 08:47:59 +01:00
Victor Berger
64c8f66e72 wayland: implement modifiers 2017-03-03 22:28:02 +01:00
tomaka
d1e434b131 Merge pull request #149 from y-fujii/x11_hidpi_factor
implement Window::hidpi_factor() for X11.
2017-03-03 14:33:16 +01:00
Yasuhiro Fujii
d72a345878 implement Window::hidpi_factor() for X11. 2017-03-03 21:25:26 +09:00
tomaka
4c6e4e827a Merge pull request #112 from rigtorp/keyboard-mods
Add keyboard modifiers to input event
2017-03-02 20:37:33 +01:00
tomaka
8d79748cfb Merge pull request #147 from sotaroikeda/upcgl
Update cgl to v0.2
2017-03-02 07:44:32 +01:00
Sotaro Ikeda
3b1df2c585 Update cgl to v0.2 2017-03-02 14:48:03 +09: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
a2c6fb720c Implement KeyboardEvent ModifiersState for X11 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
tomaka
449f7d9d90 Merge pull request #144 from jwilm/fix-x11-wait-event-busy-loop
Fix busy loop in X11 WaitEventsIterator
2017-02-15 19:18:12 +01:00
Joe Wilm
2ee658048a Fix busy loop in X11 WaitEventsIterator
WaitEventsIterator implements waiting by first calling XPeekEvent which
will block until at least 1 event is queued, and then it delegates to
PollEventsIterator to actually handle the new event. PollEventsIterator
was previously picky about which events it would process. Events of
other types would get stuck at the head of the X event queue, and
PollEventsIterator would return None. This initiated a busy loop in the
WaitEventsIterator because it would XPeekEvent, see that something is
there, and then PollEventsIterator would return None, and the process
would repeat.

This is resolved by using XNextEvent in the PollEventsIterator instead
of XCheckTypedEvent. Any event in the queue will be popped. Even if
winit isn't interested in the event, this means XPeekEvent will block
again to wait for another event instead of the previous behavior.
2017-02-15 08:34:24 -08:00
tomaka
adf42909c8 Merge pull request #132 from mitchmindtree/macos_event_loop
Update the macOS backend to the new futures-compatible API.
2017-02-14 09:52:10 +01:00
tomaka
3ad1274a6d Merge pull request #126 from tomaka/impl-20
Switch to a futures-compatible API
2017-02-11 08:47:23 +01: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
Pierre Krieger
b988c174fe Add WindowId type 2017-02-03 09:13:11 +01:00
tomaka
ae53bb0f14 Merge pull request #102 from cjhowe/master
iOS Support
2017-02-03 09:09:02 +01:00
Pierre Krieger
9cd0430ec7 Remove stuff from Window's API 2017-02-03 06:48:58 +01:00
tomaka
03aa7b832b Merge pull request #128 from tomaka/categories
Add categories
2017-02-03 06:37:34 +01:00
Pierre Krieger
e158af6806 Add categories 2017-01-31 10:01:36 +01:00
Pierre Krieger
b5d8d305fc Fix unreachable patterns 2017-01-28 16:21:41 +01:00
Pierre Krieger
5025db2d59 Unix fix attempt 2017-01-28 16:09:22 +01:00
Pierre Krieger
148f507272 Wayland fix attempt 2017-01-28 15:56:53 +01:00
Pierre Krieger
7da96121a2 Fix examples 2017-01-28 15:45:01 +01:00
Pierre Krieger
c3d2289b0c Remove resize_callback from WindowsAttributes 2017-01-28 15:34:15 +01:00
Pierre Krieger
bcb242983b Add documentation for the new API 2017-01-28 15:33:54 +01:00
Pierre Krieger
d86fdb48d1 Remove the window from the events loop on destruction 2017-01-28 15:14:23 +01:00
Pierre Krieger
0242daa242 Add interrupting the events loop 2017-01-28 15:09:01 +01:00
Pierre Krieger
e7d43174e7 Implement the transition API 2017-01-28 15:05:36 +01:00
Pierre Krieger
2c4db6b16e Update window example 2017-01-28 15:01:59 +01:00
Pierre Krieger
422b332c1b Add a transition macro system 2017-01-28 15:00:17 +01:00
tomaka
f1d70d351e Merge pull request #82 from tomaka/documentation
Some documentation improvements
2017-01-28 13:31:36 +01:00
tomaka
5759bb68f2 Merge pull request #125 from tomaka/linux-rework
No longer use an api_dispatch module for linux
2017-01-28 13:20:33 +01:00
Pierre Krieger
8277b26862 No longer use an api_dispatch module for linux 2017-01-28 13:14:20 +01:00