Commit graph

2053 commits

Author SHA1 Message Date
mitchmindtree
cccc48b84d [macos] Emit a resize event when Window changes screens 2017-03-19 20:30:54 +11:00
mitchmindtree
4656540417 Close NSWindow when Window is dropped if not already closed.
Previously, if a `Window` was `Drop`ped while open, the window would
remain open until the user pressed the x button. This fixes the
behaviour so that the window is closed when dropped if it has not
already been closed.
2017-03-19 19:32:24 +11:00
mitchmindtree
27bd796c2a [macos] Remove Window from EventsLoop's Window list on close and drop
Previously, a Window was only removed from the list when dropped.
2017-03-19 19:20:38 +11:00
mitchmindtree
41e7572147 [macos] Avoid panic when callback is None.
This can happen when window is destroyed/created during a call to user
callback as this causes WindowDelegate method to be called.

Instead if the user callback is `None` store the event in
`pending_events`.
2017-03-19 19:09:20 +11:00
mitchmindtree
4b39f81621 Avoid leaking Windows by storing Weak pointers in EventsLoop 2017-03-19 18:19:24 +11:00
tomaka
c6968782b1 Merge pull request #156 from vberger/master
Readd pub import erroneously removed
2017-03-15 10:29:46 +01:00
Victor Berger
08254e68fb Readd pub import erroneously removed 2017-03-15 10:11:43 +01:00
tomaka
65034f2edf Merge pull request #155 from vberger/master
wayland: Update to wayland 0.8.6
2017-03-13 21:06:35 +01:00
Victor Berger
50f38e2f76 wayland: Update to wayland 0.8.6 2017-03-13 19:18:49 +01:00
tomaka
2e82cac69a Merge pull request #154 from vberger/wayland_new_api
Port wayland to the new API
2017-03-11 09:04:09 +01:00
Victor Berger
d3356763dc wayland: add some comments 2017-03-10 23:56:31 +01:00
Victor Berger
3ff9eb08e8 wayland: cleanup signal to prune dead windows 2017-03-10 23:40:31 +01:00
Victor Berger
17fde48ed7 wayland: move input logic to the event loop 2017-03-10 23:22:59 +01:00
tomaka
6850a2f76f Merge pull request #153 from MortimerGoro/android_events
Implement android events and wake event loop
2017-03-06 15:03:34 +01:00
Imanol Fernandez
f961bdd668 Implement android events and wake event loop. 2017-03-06 14:39:42 +01:00
tomaka
aa9678454d Merge pull request #152 from mystal/fix_decorations
Support removing window decorations in x11 and macOS
2017-03-06 10:47:08 +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
tomaka
503df767dc Merge pull request #151 from vberger/wayland_new_api
linux: Add missing Window2::id() impl
2017-03-04 11:05:51 +01:00
Victor Berger
4e75c1e668 linux: Add missing Window2::id() impl 2017-03-04 10:48:44 +01:00
tomaka
6bdc0fd824 Merge pull request #150 from vberger/wayland_new_api
Re-organize platform/linux to prepare for API transition
2017-03-04 09:22:13 +01:00
Victor Berger
e6e96ab6f4 tests: don't instanciate an event loop to check EventsLoop: Send+Sync 2017-03-04 09:09:09 +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
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