micah
36e4474c8a
separate Window::open() into three functions (parented, as_if_parented, and blocking)
2021-01-01 22:52:59 -06:00
micah
86bf222601
PhantomData<*mut ()> in Window to ensure it is !Send
2021-01-01 22:52:59 -06:00
Joakim Frostegård
72302e9dd0
macOS: use CFRunLoopTimer, improve view release logic ( #84 )
...
* macOS: fix property_no fn
* Use CFRunLoopTimer instead if NSTimer
This means the timer doesn't keep a reference to the view,
which should make it easer to check retain_count in release.
* macOS: take pointer instead of Arc in WindowState::setup_timer
* Save retain count increase from build fn, use in release fn
* macOS: in window setup, run build fn before doing parenting
* macOS: clean up parenting
* macOS: wrap WindowState in Box instead of Arc to improve clarity
* macOS: use better names for ivar consts, move them to view.rs
* Remove no longer used crate static_assertions
* macOS: in view release fn, delete class when retain_count == 1
* macOS: set window state ivar to null after dropping
* macOS: store retain count after build in WindowState
* macOS: rename BASEVIEW_WINDOW_STATE_IVAR to BASEVIEW_STATE_IVAR
2020-12-27 20:44:23 -06:00
Micah Johnston
868bd0583c
cleanup on window destroyed (free WindowHandler, unregister wndclass)
2020-12-23 16:26:17 -06:00
Micah Johnston
d138cfaccf
treat WM_MOUSEMOVE coordinates as i16 to handle negative coordinates properly
2020-12-20 15:36:03 -06:00
George Atkinson
cc6ead3669
Fixed a bug causing 'already borrowed' error
...
Fixed a bug where an 'already borrowed' arror would occur when pressing keyboard keys in quick succession. Moving the borrow and borrow_mut of the window state inside the button down/up event seems to fix this.
2020-12-20 15:26:41 -06:00
George Atkinson
9fdb75155d
Added mouse capture/release to windows backend ( #81 )
...
* Added mouse capture/release to windows backend
* Mouse capture now automatic only
Removed manual ability to trigger mouse capture and release.
* Added refcount for mouse button event
Added refcount to prevent the mouse capture from releasing before all mouse buttons have been released.
* Removed unnecessary function from window
2020-12-19 17:41:40 -06:00
Micah Johnston
c64b2257f5
use W variants of winapi functions
2020-12-19 15:33:29 -06:00
micah
043fe41d05
don't call on_frame on expose events in x11 backend
2020-12-19 15:43:53 -05:00
Micah Johnston
e02854452e
remove WindowHandle
2020-12-12 17:15:09 -06:00
Micah Johnston
0633874266
pass WindowHandler as trait object in x11 backend
2020-12-12 17:12:24 -06:00
Micah Johnston
e9507f8d86
store WindowHandler as trait object in cocoa backend
2020-12-12 17:12:24 -06:00
Micah Johnston
4e70af1162
store WindowHandler as trait object to reduce generics in winapi backend
2020-12-12 17:12:24 -06:00
Micah Johnston
8402310c88
remove Message api
2020-12-12 17:06:50 -06:00
Micah Johnston
cd0d5215d0
remove unused code from windows backend
2020-12-12 17:06:50 -06:00
Micah Johnston
7ff31ea6f7
ensure title lives long enough to pass it to CreateWindowEx; also validate it as a CString
2020-12-08 23:16:34 -06:00
Micah Johnston
30c34db12e
set default arrow cursor on window class rather than null
2020-12-07 01:16:08 -06:00
Micah Johnston
2faea075b1
call on_frame on WM_TIMER events
2020-12-07 01:03:55 -06:00
Micah Johnston
365cc8c018
allow DefWindowProc to be called in the case of WM_PAINT
2020-12-07 01:03:55 -06:00
Micah Johnston
ab0cb10a22
call DefWindowProc in the case of WM_SYSKEYDOWN. makes alt-f4 work.
...
if we call DefWindowProc for non-system events, pressing alt or f10 puts
focus on the (nonexistent) dropdown menu until the next click or
keystroke, so we only call it in the case of WM_SYSKEYDOWN.
2020-12-07 01:03:41 -06:00
micah
08e56bd5ae
remove unnecessary dependencies (log, libc)
2020-12-05 18:01:33 -06:00
Joakim Frostegård
19b6a2f701
macOS: handle changed flags
...
This enables catching pressed modifier keys with no other
keys pressed
2020-12-05 01:48:26 +01:00
Joakim Frostegård
edbc26aa4a
macOS: always use scale=1.0 with WindowScalePolicy::SystemScaleFactor
2020-12-04 23:38:17 +01:00
Billy Messenger
f696c7d14d
implement try_send_message for Linux
2020-12-04 15:29:55 -06:00
Joakim Frostegård
1aebdfb331
Move MESSAGE_QUEUE_LEN const from macOS module to crate root
2020-12-04 21:46:55 +01:00
Joakim Frostegård
dd1955285e
macOS: clean up
2020-12-04 20:03:55 +01:00
Joakim Frostegård
2273a2c07c
macOS: add and use MESSAGE_QUEUE_LEN constant
2020-12-04 20:03:55 +01:00
Joakim Frostegård
35a03aff17
Split off AppRunner from WindowHandle on Windows and Linux
2020-12-04 20:03:55 +01:00
Joakim Frostegård
c1d04b978e
Clean up
2020-12-04 20:03:55 +01:00
Joakim Frostegård
60244c3888
Add comment to WindowState static assertions code
2020-12-04 20:03:55 +01:00
Joakim Frostegård
1c81921688
Use wait-free spsc message chan; split off AppRunner from WindowHandle
2020-12-04 20:03:55 +01:00
Joakim Frostegård
99fdbff4e2
macOS: remove runtime timer, use frame timer instead
2020-12-04 20:03:55 +01:00
Joakim Frostegård
1ea32123ed
Assert at compile-time that WindowHandle is Sync
2020-12-04 20:03:55 +01:00
Joakim Frostegård
b79a7fbcf5
Add Send constraint to WindowHandler::Message
2020-12-04 20:03:55 +01:00
Joakim Frostegård
35a9841b29
Add WindowHandle::try_send_message, implement it on macOS
2020-12-04 20:03:55 +01:00
glowcoil
6f81e28d90
Merge pull request #63 from glowcoil/remove-x11-prints
...
remove print on unhandled event (produces too much spam)
2020-12-03 23:08:06 -06:00
Micah Johnston
0cbcf989df
remove print on unhandled event (produces too much spam)
2020-12-03 23:05:51 -06:00
Micah Johnston
3f34a70fa8
windows mouse events
2020-11-30 10:10:40 -06:00
glowcoil
3db2bdee17
Merge pull request #57 from greatest-ape/windows-keyboard
...
Add windows keyboard event support with druid code
2020-11-28 18:23:02 -06:00
Joakim Frostegård
dd87afefd9
api unification: impl HasRawWindowHandle on wrapper Window
2020-11-27 00:34:09 +01:00
Joakim Frostegård
1ddd6fa47e
api unification: return shared WindowHandle in platform code
2020-11-24 20:41:55 +01:00
Joakim Frostegård
a8c7c707d2
unify platforms: simplify imports
2020-11-23 22:26:27 +01:00
Joakim Frostegård
6450bff368
api unification: add Linux support
2020-11-23 22:24:25 +01:00
Joakim Frostegård
185bd62447
api unification: make cross-platform Window hold a reference
2020-11-23 22:09:33 +01:00
Joakim Frostegård
f9226c366e
platform api unification: support Windows
2020-11-23 20:26:17 +01:00
Joakim Frostegård
4ba64d8f86
Add cross-platform Window wrapper, currently only macOS support
2020-11-23 20:05:36 +01:00
Joakim Frostegård
ff09c3a256
macOS: add timer triggering WindowHandler::on_frame ( #58 )
...
* macOS: add simple NSTimer that triggers WindowHandler::on_frame
* macOS: invalidate frame timer when releasing view
* macOS: clean up
2020-11-23 14:38:32 +01:00
Joakim Frostegård
bdd0f8f562
Add windows keyboard event support with code from druid
2020-11-23 08:43:09 +01:00
Joakim Frostegård
0a6a0bdffd
Use keyboard_types::KeyboardEvent directly instead of wrapping it
2020-11-14 17:46:12 +01:00
Joakim Frostegård
546b0d6eae
Use keyboard-types types directly instead of druid wrappers
2020-11-14 17:46:12 +01:00