This project follows semantic versioning.
- [API BREAKAGE] Changing return types of get_keys from Option<Vec> to Vec (Thanks Zij-IT!)
- [fixed] get_scroll_wheel() would get "stuck" on macOS. (Thanks NikoUY for bug report!)
- [fixed] Fixed typos in description (Thanks hiqua!)
- [fixed] update wayland to 0.28 and small cleanup (Thanks xMAC94x!)
- [fixed] Bump xkbcommon-sys to 0.7.5
- [fixed] wayland missing cursor (Thanks dc740!)
- [fixed] windows: use c_void from winapi (Thanks xobs!)
TODO
- [fixed] Removed dummy logging
- [added] Added char_callback example on how to capture data.
- [added] Support for topmost on Windows (Thanks phillvancejr!)
- [fixed] ARM (Raspberry Pi) now builds and runs. (Thanks derpeter!)
- [changed] Removed a bunch of dependencies not needed anymore (Thanks RazrFalcon!)
- [fixed] get_released_keys wasn't working under Wayland.
- [changed] unix renamed to posix. (Thanks LoganDark)
- [changed] bunch of Linux/x11 fixes by Antonino Siena. Such as Transparency support, Borderless, Cursor Visibility. Thanks!
- [changed] use
std::ptr::null_mut()
to WindowsPeekMessageW
it fix alt-tab stall on Window 7. Thanks lynnux for the report! - [added] Implemented std::error::Error for minifb::Error. (Thanks Christofer Nolander!)
- [added] Wayland support. (Big thanks to Antonino Siena add this support with assistance by Cole Helbling!)
- [added] Added
get_released_keys
(Thanks to Alex Melville!) - [added] Added Topmost/Always on Top functionality to macOS (Thanks phillvancejr!)
- [fixed] Removed left over logging on macOS (Thanks phillvancejr!)
- [Added] On macOS NSView (MTKView) is supplied with raw_window_handle now
- [fixed] Fixed forever block on macOS when using
update
and notupdate_with_buffer
- [fixed] Fixed access to raw_window_handle()
- [API BREAKAGE] -
update_with_buffer
now always take width and height parameters. - [added] scale_mode in WindowOptions now allow for aspect correct scaling, center of non-scaled buffers and more.
- [added] Added
limit_update_rate(..)
in order to reduce CPU usage and not hammer the native system calls. - [changed] x11 now uses C for it's scaling in software mode in order to always have opts on even in debug build.
- [changed] Several fixes with rescaling on all platforms
- [changed] on x11 some window mangers will resize a non-resizable windows and minifb handles this now correctly.
- [fixed] Cursor was behaving bad on Windows. This has now been fixed
- [known issues] There are some flickering and various issues when resizing on most platforms. PRs/ideas welcome for this.
- [changed] Deprecated update_with_buffer on favor of update_with_buffer_size. The idea is that a size in of the buffer will be more robust and allow for aspect scaling as well.
- [changed] Improved macOS resizing support.
- [changed] Better modifier handling on macOS.
- [changed] Moved CI over to Github Actions
- [changed] Formatted all code with rustfmt
- [changed] Documentation improvments (Thanks Gary Guo & Arif Roktim!)
- [fixed] 'attempt to subtract with overflow' bug (Thanks Venceslas!)
- [fixed] Window close handling & missing Alt keys for X11 (Thanks Gary Guo!)
- [added] Juila example added (Thanks mishazawa!)
- [added] Add support for raspberry pi (Thanks Florian Blasius!)
- [added] Added support for raw-window-handle trait
- [changed] unix: replaced scale functions with macro and added missing invocations (Thanks Johannes Stölp!)
- [changed] Linux/Unix backend rewritten in Rust (thanks Chris West!)
- [changed] WinAPI updated to 0.3 (Thanks Richard Hozák!)
- [changed] Bump orbclient to 0.3.20 on Redox, remove alpha handling hacks (Thanks Nagy Tibor!)
- [added] Window.is_key_released
- [fixed] Fixed bad window size in menu example
- [changed] macOS now uses Metal for rendering the buffer.
Thanks to Lukas Kalbertodt for these changes!
- [added] Debug impls for public types
- [fixed] Removed several
doc(hidden)
- [added] Scale x16 and x32 added for Unix
- [added] Scale x8 added for Unix
- [fixed] Auto scaling now works correct if scale up is >= screen size
- [fixed] Bumped kernel32 to 0.2.2 due to compile errors on Windows. Thanks to Thomas Versteeg for this fix.
- [fixed] Typo in the Redox implementation was fixed after changes in 0.10.0
- [changed]
update_with_buffer
Now make sures that input buffer will be large enough. As of this it now returnsResult<>
to indicate the status of the call.
- [fixed] Bumped x11-dll to 2.14 as it was causing issues on nightly.
- [fixed] Correct link to docs in Cargo.toml
- [added]
get_unscaled_mouse_pos
Can be used the get actual mouse pos on a scaled window
- [fixed] Mac: Fixed crash on large window sizes
- [fixed] Mac: "Plonk sound" when pressing keys
- [fixed] Mac: incorrect size for
get_size()
- [fixed] Fixed so keypad keys works on Linux
- [fixed] Character callback wouldn't get called on Mac and Linux
- [fixed] Resize cursors on Windows was swapped
- [added]
window.set_title
Can now change title after creation - [added]
window.set_cursor_style
Can now change the style of the cursor with a number of (OS supported types) - [added] Added cursor_title example code to show the newly added features
- [fixed] Character callback wouldn't get called on Mac.
- [changed] - Fully rewrote the Menu API. See the documentation/menu example for the changes.
- [added] - Added
Window::get_unix_menus
to get data access to menus on Linux/x11
- [added] added
get_size()
to retrive the size of the window.
- [fixed] On Mac shortcuts using F1-F12 wasn't working correctly.
- [fixed]
get_window_handle
would return an invalid value on Unix. Now fixed.
- [changed] - Proper Errors which uses
std::Error
as base.Window::new
uses this but the API itself hasn't changed. - [added] - Menu support on Mac and Windows. See the Menu API functions here
- [known issue] -
remove_menu
doesn't work on Windows issue - [known issue] - On Mac when running an application from terminal on has to switch to another application and back to get menu focus. issue
This release breaks some of the API by changing names and parameters to some functions.
- [changed]
Window::new(...)
now takes WindowOptions struct to configure the creation of the Window. doc - [changed]
window.update()
Doesn't take a buffer anymore. Seewindow.update_with_buffer
doc - [added]
window.update_with_buffer()
Old update version that takes buffer as input parameter doc - [added]
window.get_window_handle()
Returns the native handle (os dependant) doc
- [fixed]
get_mouse_pos(Clamp)
clamps to[(0, 0) - (width - 1, height - 1)]
instead of(width, height)
This release adds support for mouse input. See the documentation and the examples for usage
- [added] get_mouse_pos
- [added] get_mouse_down
- [added] get_scroll_wheel