* drain autorelease pools in Window::open_* methods
* fixes to NSView lifetime logic:
- in open_parented and open_blocking, release NSView after adding
it as a subview of the parent
- in open_blocking, don't call autorelease on NSWindow. previously
it was a no-op, but now that we are actually draining our
autorelease pools, it ends up prematurely releasing the window.
* fixes to NSView cleanup logic:
- Move retainCount check to before calling [super release].
If [super release] happens first, then in the final call to
release, [super release] deallocates the object and the call to
retainCount results in a segfault.
- Move objc_disposeClassPair to dealloc. Previously we were
calling it when retainCount == 1, but that's exactly when
dealloc is called, so this is cleaner. Also, we need to call
objc_disposeClassPair after [super dealloc].
NOTE: The circular-reference-breaking logic in release is
definitely broken. It's easy to thwart it by e.g. creating a
wgpu surface at some point after build() or dropping one at some
point before drop(). Need to come up with a better solution.
* using viewDidChangeBackingProperties callback to detect scale factor changes and propagate via WindowEvent::Resized
* null check on ns_window
* changed match with if
* Add mutable event status argument to WindowHandler::on_event
* macOS: simplify method declaration for simple mouse event handlers
* macOS: add macro for adding simple keyboard class methods
* macOS: reorder code in mouse_moved
* Take EventStatus as return value in WindowHandler::on_event
* Add doc comments for EventStatus
* Improve EventStatus documentation
* x11: ignore return value of on_event for now
* EventStatus: improve docs
* Improve EventsStatus docs
* Improve EventStatus docs further
* macOS: ignore EventStatus::Ignored for mouse events
* macOS: minor formatting improvement
* improve EventStatus docs again
* 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
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.
* 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
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.