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
Joakim Frostegård
86b2aff624
Attempt to fix linux build
2020-11-14 17:46:12 +01:00
Joakim Frostegård
9748e16ebe
Add support for macOS and X11 key events with code from druid
2020-11-14 17:46:12 +01:00
Joakim Frostegård
2167a091fa
macOS: basic event handling ( #52 )
...
* macOS: add basic event handling
* macos: don't store subview pointer in WindowHandle
* macOS: mention inspiration from antonok's vst_window crate, clean up
* Add Anton Lazarev and myself to author list
* macOS: fix event handling issues
- Rename EventDelegate to WindowState
- Make Window.ns_window optional, only set it if parentless
- Put our own NSView subclass in Window.ns_view
- Don't create useless "intermediate" NSView in parentless mode
* macOS: use Arc::from_raw in WindowHandler dealloc fn
* macOS: move subview code own file, handle more mouse events
* macOS: add (non-tested) support for AsIfParented window
* macOS: rename subview module to view
* macOS: rename "mouse_click_extern_fn!" to "mouse_button_extern_fn!"
This avoids confusion with the click event
* macOS: make WindowState Arc wrapping code clearer
* macOS: handle basic key press and release events
* macOS: accept mouseMoved events, don't trigger them on clicks
* macOS: fix cursor movement location conversion
* macOS: add WindowState.trigger_event fn, make fields private
* macOS: in view, set preservesContentInLiveResize to NO
* macOS: add NSTrackingArea, cursor enter/exit events, better window init
* macOS: remove unused WindowState.size field
* macOS: acceptFirstMouse = YES in view
* macOS: rename macro mouse_button_extern_fn to mouse_simple_extern_fn
* macOS: remove key event handling, it will be implemented differently
* macOS: trigger CursorMoved on right and middle mouse drag
* macOS: run NSEvent.setMouseCoalescingEnabled(NO)
* macOS: clean up
* macOS: non-parented mode: don't "activate ignoring other apps"
This is rarely necessary according to
https://developer.apple.com/documentation/appkit/nsapplication/1428468-activate
and I don't see any reason why we would need to do it.
* macOS: call NSApp() before doing more work in non-parented mode
* macOS: don't attempt to declare NSView subclass multiple times
* macOS: add random suffix to name of NSView subclass to prevent issues
* macOS: send tracking area options as a usize (objc UInt)
* macOS: use UUID for class name suffix
* macOS: fix view_will_move_to_window super call
* macOS: drop WindowState when our NSView is released
* macOS: in Window::open, autorelease an NSString that was allocated
* macOS: delete our view class when the view is released
* Upgrade cocoa dependency to version 0.24.0
* macOS: reorder some code in view.rs
* macOS: mark WindowState::from_field as unsafe, update doc comment
* macOS: in HasRawWindowHandle impl, use unwrap_or for ns_window
2020-11-11 16:04:40 -06:00
Billy Messenger
7904ed77e1
reword comment
2020-10-20 19:18:42 -05:00
Billy Messenger
b2146908cc
add comments to size
2020-10-20 19:17:20 -05:00
Billy Messenger
2096c37495
rename UseScaleFactor to ScaleFactor
2020-10-20 19:11:47 -05:00
Billy Messenger
42e8ea6bef
fix mac build
2020-10-20 19:05:49 -05:00
Billy Messenger
579dfee1eb
clean up dpi features
2020-10-20 19:02:45 -05:00
Billy Messenger
b0196b8c5f
attempt to fix mac build
2020-10-20 17:09:59 -05:00
Billy Messenger
84cac3e7ba
attempt to fix mac build
2020-10-20 17:07:37 -05:00
Billy Messenger
2ee975231b
fix Windows build
2020-10-20 17:04:37 -05:00
Billy Messenger
3fe752ca80
remove min/max resize policy
2020-10-20 16:06:40 -05:00
Billy Messenger
61ef63409b
Merge branch 'master' of https://github.com/RustAudio/baseview into master
2020-10-20 15:56:54 -05:00
Billy Messenger
ad12985d08
put WindowHandle back into platform-specific code
2020-10-20 15:52:09 -05:00
William Light
cf96f3cc85
win/mac: closure for building WindowHandler
2020-10-20 21:33:57 +02:00
William Light
43cdc39335
x11: closure for building WindowHandler
2020-10-20 21:33:52 +02:00
Billy Messenger
a91a5a1126
update x11 code
2020-10-17 17:36:28 -05:00
Billy Messenger
688d45c720
refactor to use conversion between Point and Size to PhyPoint and PhySize
2020-10-17 17:27:06 -05:00
Billy Messenger
6bae3e7507
Fix window_state pointer
2020-10-17 16:47:36 -05:00
Billy Messenger
5866bf372e
fix window_info_from_scale
2020-10-17 15:42:16 -05:00
Billy Messenger
3fca9d3c78
remove #[repr(C)] as it did not work
2020-10-17 15:23:24 -05:00
Billy Messenger
11ee384908
fix windows build
2020-10-17 15:19:06 -05:00
Billy Messenger
dc5d3b9622
Add Point and Size structs
2020-10-17 14:01:03 -05:00
Billy Messenger
1b9fbf9bb8
refactor and modify events
2020-10-17 13:35:39 -05:00
Billy Messenger
a4c226277c
change size hints to physical size
2020-10-15 16:38:09 -05:00
Billy Messenger
aee594d23c
add window resize hints
2020-10-15 16:31:38 -05:00
Billy Messenger
0758e4834b
fix spacing in use statement
2020-10-15 13:28:21 -05:00
Billy Messenger
61de5e37f7
rename width, height to logical_width, logical_height
2020-10-15 13:26:21 -05:00
Billy Messenger
ed1db27f52
revert WindowEvent traits
2020-10-15 13:24:08 -05:00
Billy Messenger
2bf229575f
add UI scaling support
2020-10-15 13:17:03 -05:00
William Light
d5c3ba0bb0
x11/window: take render time into account when computing next frame time
2020-09-15 22:36:42 +02:00
William Light
c26507c322
x11: fix potential missed resize events
2020-09-14 06:21:25 +02:00
William Light
a59ccae56f
x11: suppress non-resize configure notify events
2020-09-14 03:30:30 +02:00
William Light
23a43c4cdd
x11: refactor cursor logic
2020-09-14 02:47:58 +02:00
Billy Messenger
d156d42e69
refactor x11 cursor changing code into x11/cursor.rs
2020-09-13 19:01:18 -05:00
Billy Messenger
53debfc706
remove unused Mutex import
2020-09-13 18:39:13 -05:00
Billy Messenger
d84a1fde44
Add set_mouse_cursor method to X11 Window
2020-09-13 18:23:51 -05:00
Billy Messenger
c24d12c453
Merge branch 'master' of https://github.com/RustAudio/baseview into master
2020-09-13 09:19:11 -05:00
Billy Messenger
adc8fe0974
Add mouse cursor to Window
2020-09-13 09:19:05 -05:00
William Light
9cad2d1b5a
x11: coalesce CONFIGURE_NOTIFY events
2020-09-12 19:31:13 +02:00
William Light
ac0e1215f7
fix syntax error
2020-09-12 19:16:45 +02:00
William Light
29461b14e4
replace *mut c_void with RawWindowHandle in Parent::WithParent
2020-09-12 19:06:21 +02:00
William Light
47b122c86e
remove duplicate imports
2020-09-11 22:36:33 +02:00
William Light
bb18518cf6
fix some rustfmt annoyances
2020-09-11 22:29:29 +02:00
Billy Messenger
3e4c1edfc7
Add method to window so user can get window info
2020-09-11 14:52:32 -05:00
Billy Messenger
9bf1fa08bb
cargo fmt
2020-09-11 12:42:14 -05:00
Billy Messenger
0ddc2c5f3f
Merge branch 'master' of https://github.com/RustAudio/baseview into master
2020-09-11 12:41:53 -05:00
Billy Messenger
cc2ae0ef39
rebase, cargo fmt
2020-09-11 12:38:06 -05:00
William Light
76e5851b62
x11: don't return from Window::open() until the window is actually open
2020-09-11 19:37:46 +02:00
Billy Messenger
08564cc317
Merge branch 'master' of https://github.com/RustAudio/baseview into master
2020-09-11 12:35:51 -05:00
Billy Messenger
7bdff33847
Detect window resize in x11
2020-09-11 12:32:55 -05:00
William Light
4d9c6c3131
remove FileDropEvent
...
we have no implementations for it, so it's just dead code for now.
2020-09-11 19:10:49 +02:00
William Light
409b03cfdb
macOS: fix build
2020-09-11 18:53:33 +02:00
William Light
bc79e42314
macOS: WindowHandle.app_run_blocking()
2020-09-11 18:53:33 +02:00
William Light
888e3bdf0c
windows: nitpicky code aesthetics
2020-09-11 18:53:33 +02:00
William Light
17a7477400
windows: WindowHandle.app_run_blocking()
2020-09-11 18:53:33 +02:00
William Light
196883b390
x11: WindowHandle.app_run_blocking()
2020-09-11 18:53:33 +02:00
William Light
5207d961d9
x11: run window in a separate thread
...
there's a thread.join() to mimic the previous semantics (which are the
same as on the other platforms).
2020-09-11 18:53:33 +02:00
Billy Messenger
e67887d92f
Remove Interval event
2020-09-11 11:49:56 -05:00
Billy Messenger
52580cc2a9
rebase
2020-09-11 11:43:46 -05:00
Billy Messenger
ddbc95a2ed
Merge branch 'master' of https://github.com/RustAudio/baseview into master
2020-09-11 11:39:20 -05:00
William Light
b64183fb19
x11: Event::WillClose support
...
this is a nightmare of ICCCM protocols but hey it's done now.
2020-09-11 18:03:04 +02:00
Billy Messenger
9efade9a18
Fix Windows build
2020-09-11 10:44:05 -05:00
Billy Messenger
83f2ffd27a
Rename scale_factor to scale
2020-09-11 10:23:19 -05:00
Billy Messenger
b8bc006fc1
Add and refactor events
2020-09-11 10:21:05 -05:00
William Light
072918cb3f
rename WindowHandler.draw() to WindowHandler.on_frame()
...
also remove the `Window` ref argument because `on_frame()` shouldn't be
doing any window system ops (this is my opinion and i am happy to
backpedal if it turns out to be wrong).
2020-09-11 16:54:13 +02:00
William Light
b650bf772f
x11: frame/draw callbacks
...
currently fixed at 15ms (just above 60fps), but easily configurable and
something we can query the display server for in the future.
2020-09-11 16:32:21 +02:00
William Light
dcb99e5c43
x11: switch from wait_for_event() to directly using poll()
2020-09-11 16:13:32 +02:00
William Light
c76f089c96
x11/window: nitpicky code aesthetics
2020-09-11 15:50:10 +02:00
William Light
b5dfbd946e
x11: pass XCB conn error back through XcbConnection::new()
2020-09-11 15:47:00 +02:00
William Light
da2c12dd25
x11: move scaling determination funcs into xcb_connection.rs
2020-09-11 15:44:01 +02:00
William Light
54f8bc7345
x11: split event loop and XCB event handling into separate fns
2020-09-11 15:40:19 +02:00
Micah Johnston
5ecce5d28d
Window::open() returns WindowHandle struct
2020-09-08 18:45:29 -05:00