This project follows semantic versioning.
- [fixed] Temporary fix for struct layout issue on Windows.
- [fixed] Lots of formatting & style fixes (Thanks Stefano Incardone!)
- [fixed] raw-window-handle 0.6 (Thanks Stefano Incardone!)
- [fixed] Lots of various fixes and cleanups (Thanks Stefano Incardone!)
- [fixed] repr(C) on Window Struct (Thanks gillet-hernadez!)
- [fixed] Switch Linux scalar code from C to C (Thanks Speykious!)
- [API BREAKAGE]
limit_update_rate
has been removed. Useset_target_fps
instead.
- [fixed] Fix changing window title (Thanks royaltm!)
- [fixed] Windows: Unable to use F10 key
- [fixed] set byposition flag when removing menus (Thanks piksel!)
- [fixed] fixed compilation for x11 32-bit mode (Thanks HBehrens!)
- [fixed] X11 window names not supporting UTF-8 (Thanks edarogh!)
- [fixed]
get_window_position
for multiscreen setup on macOS (Thanks AnderasOM!) - [fixed] Using minifb on multiple threads under x11 works and doesn't crash (Thanks to konnorandrews for suggestion!)
- [Added] ARM and AARCH64 Windows Support (Thanks smb123w64gb!)
- [fixed] wayland: Fix key character callback & Reduce wayland dependencies (Thanks vmedea!)
- [fixed] Use coercion on types failing compilation on 64 bit raspbian bullseye (Thanks wtfuzz!)
- [added] WASM support. Thanks dc740 and tversteeg! See https://github.com/dc740/minifb-async-examples for example.
- [fixed] Updated docs to make it a bit more clear that only one of
update_with_buffer
orupdate
should be used for updating a window.
- [fixed] Holding down a key on x11 would no repeat correctly
- [fixed] Windows dependency cleanups (Thanks Arnab Animesh Das!)
- [fixed] Fixed mouse button being "stuck" when moved out side of window, released and then moved by in on Windows (Thanks Arnab Animesh Das for bug report!)
- [fixed] Memory-map the keymap FD on Wayland to fix EOF error (Thanks Greg Depoire--Ferrer!)
- [added] getter for window position (Thanks Andreas Neukoetter!)
- [fixed] Fix clippy lints under windows (Thanks Kevin K!)
- [added] Add
set_icon()
method to set a window icon at runtime (Thanks Kevin K!) - [added] inputcallback: add a callback for key events and key_handler: add a callback for key events (Thanks xobs and vemoo!)
- [fixed] macOS: Fix segmentation fault when resizing window. (Thanks KaDiWa!)
- [fixed] Various x11 and wayland fixes, version updates (Thanks vemoo!)
- [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 Luna 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 Luna 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