Remove window subclassing (#1933)

* Remove window subclassing

* Always call `DefWindowProcW` when we don't process a message

* Improve window initialization

Note that the error path in `init` is kind of cursed at the moment.

* Rename `ThreadMsgTargetCallbackData` to `ThreadMsgTargetData`

* Simplify window initialization

* Fix compilation on 32-bit targets

* Simplify the creation of the event target window

* Use `.clone()` rather than `Rc::clone()`

* Use concrete types for args to `SetWindowLongPtrW`

On 32-bit targets, `SetWindowLongPtrW` is an alias to `SetWindowLongW`,
which returns `LONG` (`i32`) rather than `LONG_PTR` (`isisze`).

* Minor comment adjustments
This commit is contained in:
Markus Røyset 2021-07-16 12:40:48 +02:00 committed by GitHub
parent 27e6548343
commit 63ad47a7bf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 295 additions and 266 deletions

View file

@ -23,7 +23,7 @@ use crate::{
pub(crate) type EventLoopRunnerShared<T> = Rc<EventLoopRunner<T>>;
pub(crate) struct EventLoopRunner<T: 'static> {
// The event loop's win32 handles
thread_msg_target: HWND,
pub(super) thread_msg_target: HWND,
wait_thread_id: DWORD,
control_flow: Cell<ControlFlow>,