* Replace Closed event with CloseRequested and Destroyed Implements #434 The existing Closed event had ambiguous meaning, both in name and in cross-platform behavior. Closed is now split into two more precise events: * CloseRequested - the window has been requested to close, most commonly by having clicked the window's close button. Whether or not you respond by closing the window is up to you. * Destroyed - the window has been destroyed, and can no longer be safely used. Most notably, now you can reliably implement classic patterns like prompting the user to save their work before closing, and have the opportunity to perform any necessary cleanup. Migrating to the new API is straightforward. In most cases, you can simply replace all existing usages of Closed with CloseRequested. For more information, see the example programs, particularly handling_close and multiwindow. iOS applications must replace all usages of Closed with Destroyed, and require no other changes.
8.2 KiB
8.2 KiB
Unreleased
- Implement
WindowBuilder::with_maximized,Window::set_fullscreen,Window::set_maximizedandWindow::set_decorationsfor MacOS. - Implement
WindowBuilder::with_maximized,Window::set_fullscreen,Window::set_maximizedandWindow::set_decorationsfor Windows. - On Windows,
WindowBuilder::with_dimensionsno longer changing monitor display resolution. - Overhauled X11 window geometry calculations.
get_positionandset_positionare more universally accurate across different window managers, andget_outer_sizeactually works now. - Fixed SIGSEGV/SIGILL crashes on macOS caused by stabilization of the
!(never) type. - Implement
WindowEvent::HiDPIFactorChangedfor macOS - On X11, input methods now work completely out of the box, no longer requiring application developers to manually call
setlocale. Additionally, when input methods are started, stopped, or restarted on the server end, it's correctly handled. - Implemented
Refreshevent on Windows. - Properly calculate the minimum and maximum window size on Windows, including window decorations.
- Map more
MouseCursorvariants to cursor icons on Windows. - Corrected
get_positionon macOS to return outer frame position, not content area position. - Corrected
set_positionon macOS to set outer frame position, not content area position. - Added
get_inner_positionmethod toWindow, which gets the position of the window's client area. This is implemented on all applicable platforms (all desktop platforms other than Wayland, where this isn't possible). - Breaking: the
Closedevent has been replaced byCloseRequestedandDestroyed. To migrate, you typically just need to replace all usages ofClosedwithCloseRequested; see example programs for more info. The exception is iOS, whereClosedmust be replaced byDestroyed.
Version 0.12.0 (2018-04-06)
- Added subclass to macos windows so they can be made resizable even with no decorations.
- Dead keys now work properly on X11, no longer resulting in a panic.
- On X11, input method creation first tries to use the value from the user's
XMODIFIERSenvironment variable, so application developers should no longer need to manually callXSetLocaleModifiers. If that fails, fallbacks are tried, which should prevent input method initialization from ever outright failing. - Fixed thread safety issues with input methods on X11.
- Add support for
Touchfor win32 backend. - Fixed
Window::get_inner_sizeand friends to return the size in pixels instead of points when using HIDPI displays on OSX.
Version 0.11.3 (2018-03-28)
- Added
set_min_dimensionsandset_max_dimensionsmethods toWindow, and implemented on Windows, X11, Wayland, and OSX. - On X11, dropping a
Windowactually closes it now, and clicking the window's × button (or otherwise having the WM signal to close it) will result in the window closing. - Added
WindowBuilderExtmethods for macos:with_titlebar_transparent,with_title_hidden,with_titlebar_buttons_hidden,with_fullsize_content_view. - Mapped X11 numpad keycodes (arrows, Home, End, PageUp, PageDown, Insert and Delete) to corresponding virtual keycodes
Version 0.11.2 (2018-03-06)
- Impl
Hash,PartialEq, andEqforevents::ModifiersState. - Implement
MonitorId::get_hidpi_factorfor MacOS. - Added method
os::macos::MonitorIdExt::get_nsscreen() -> *mut c_voidthat gets aNSScreenobject matching the monitor ID. - Send
Awakenedevent on Android when event loop is woken up.
Version 0.11.1 (2018-02-19)
- Fixed windows not receiving mouse events when click-dragging the mouse outside the client area of a window, on Windows platforms.
- Added method
os::android::EventsLoopExt:set_suspend_callback(Option<Box<Fn(bool) -> ()>>)that allows glutin to register a callback when a suspend event happens
Version 0.11.0 (2018-02-09)
- Implement
MonitorId::get_dimensionsfor Android. - Added method
os::macos::WindowBuilderExt::with_movable_by_window_background(bool)that allows to move a window without a titlebar -with_decorations(false) - Implement
Window::set_fullscreen,Window::set_maximizedandWindow::set_decorationsfor Wayland. - Added
Caretas VirtualKeyCode and support OSX ^-Key with german input.
Version 0.10.1 (2018-02-05)
Yanked
Version 0.10.0 (2017-12-27)
- Add support for
Touchfor emscripten backend. - Added support for
DroppedFile,HoveredFile, andHoveredFileCancelledto X11 backend. - Breaking:
unix::WindowExtno longer returns pointers for things that aren't actually pointers;get_xlib_windownow returnsOption<std::os::raw::c_ulong>andget_xlib_screen_idreturnsOption<std::os::raw::c_int>. Additionally, methods that previously returnedlibc::c_voidhave been changed to returnstd::os::raw::c_void, which are not interchangeable types, so users wanting the former will need to explicitly cast. - Added
set_decorationsmethod toWindowto allow decorations to be toggled after the window is built. Presently only implemented on X11. - Raised the minimum supported version of Rust to 1.20 on MacOS due to usage of associated constants in new versions of cocoa and core-graphics.
- Added
modifiersfield toMouseInput,MouseWheel, andCursorMovedevents to track the modifiers state (ModifiersState). - Fixed the emscripten backend to return the size of the canvas instead of the size of the window.
Version 0.9.0 (2017-12-01)
- Added event
WindowEvent::HiDPIFactorChanged. - Added method
MonitorId::get_hidpi_factor. - Deprecated
get_inner_size_pixelsandget_inner_size_pointsmethods ofWindowin favor ofget_inner_size. - Breaking:
EventsLoopis!Sendand!Syncbecause of platform-dependant constraints, butWindow,WindowId,DeviceIdandMonitorIdguaranteed to beSend. MonitorId::get_positionnow returns(i32, i32)instead of(u32, u32).- Rewrite of the wayland backend to use wayland-client-0.11
- Support for dead keys on wayland for keyboard utf8 input
- Monitor enumeration on Windows is now implemented using
EnumDisplayMonitorsinstead ofEnumDisplayDevices. This changes the value returned byMonitorId::get_name(). - On Windows added
MonitorIdExt::hmonitormethod - Impl
CloneforEventsLoopProxy EventsLoop::get_primary_monitor()on X11 will fallback to any available monitor if no primary is found- Support for touch event on wayland
WindowEventsMouseMoved,MouseEntered, andMouseLefthave been renamed toCursorMoved,CursorEntered, andCursorLeft.- New
DeviceEvents added,MouseMotionandMouseWheel. - Send
CursorMovedevent afterCursorEnteredandFocusedevents. - Add support for
ModifiersState,MouseMove,MouseInput,MouseMotionfor emscripten backend.
Version 0.8.3 (2017-10-11)
- Fixed issue of calls to
set_inner_sizeblocking on Windows. - Mapped
ISO_Left_TabtoVirtualKeyCode::Tabto make the key work with modifiers - Fixed the X11 backed on 32bit targets
Version 0.8.2 (2017-09-28)
- Uniformize keyboard scancode values accross Wayland and X11 (#297).
- Internal rework of the wayland event loop
- Added method
os::linux::WindowExt::is_ready
Version 0.8.1 (2017-09-22)
- Added various methods to
os::linux::EventsLoopExt, plus some hidden items necessary to make glutin work.
Version 0.8.0 (2017-09-21)
- Added
Window::set_maximized,WindowAttributes::maximizedandWindowBuilder::with_maximized. - Added
Window::set_fullscreen. - Changed
with_fullscreento take aOption<MonitorId>instead of aMonitorId. - Removed
MonitorId::get_native_identifer()in favor of platform-specific traits in theosmodule. - Changed
get_available_monitors()andget_primary_monitor()to be methods ofEventsLoopinstead of stand-alone methods. - Changed
EventsLoopto be tied to a specific X11 or Wayland connection. - Added a
os::linux::EventsLoopExttrait that makes it possible to configure the connection. - Fixed the emscripten code, which now compiles.
- Changed the X11 fullscreen code to use
xrandrinstead ofxxf86vm. - Fixed the Wayland backend to produce
Refreshevent after window creation. - Changed the
Suspendedevent to be outside ofWindowEvent. - Fixed the X11 backend sometimes reporting the wrong virtual key (#273).