mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-10-17 07:21:33 +11:00
eadd9a19b2
* 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_maximized
andWindow::set_decorations
for MacOS. - Implement
WindowBuilder::with_maximized
,Window::set_fullscreen
,Window::set_maximized
andWindow::set_decorations
for Windows. - On Windows,
WindowBuilder::with_dimensions
no longer changing monitor display resolution. - Overhauled X11 window geometry calculations.
get_position
andset_position
are more universally accurate across different window managers, andget_outer_size
actually works now. - Fixed SIGSEGV/SIGILL crashes on macOS caused by stabilization of the
!
(never) type. - Implement
WindowEvent::HiDPIFactorChanged
for 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
Refresh
event on Windows. - Properly calculate the minimum and maximum window size on Windows, including window decorations.
- Map more
MouseCursor
variants to cursor icons on Windows. - Corrected
get_position
on macOS to return outer frame position, not content area position. - Corrected
set_position
on macOS to set outer frame position, not content area position. - Added
get_inner_position
method 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
Closed
event has been replaced byCloseRequested
andDestroyed
. To migrate, you typically just need to replace all usages ofClosed
withCloseRequested
; see example programs for more info. The exception is iOS, whereClosed
must 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
XMODIFIERS
environment 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
Touch
for win32 backend. - Fixed
Window::get_inner_size
and 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_dimensions
andset_max_dimensions
methods toWindow
, and implemented on Windows, X11, Wayland, and OSX. - On X11, dropping a
Window
actually 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
WindowBuilderExt
methods 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
, andEq
forevents::ModifiersState
. - Implement
MonitorId::get_hidpi_factor
for MacOS. - Added method
os::macos::MonitorIdExt::get_nsscreen() -> *mut c_void
that gets aNSScreen
object matching the monitor ID. - Send
Awakened
event 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_dimensions
for 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_maximized
andWindow::set_decorations
for Wayland. - Added
Caret
as 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
Touch
for emscripten backend. - Added support for
DroppedFile
,HoveredFile
, andHoveredFileCancelled
to X11 backend. - Breaking:
unix::WindowExt
no longer returns pointers for things that aren't actually pointers;get_xlib_window
now returnsOption<std::os::raw::c_ulong>
andget_xlib_screen_id
returnsOption<std::os::raw::c_int>
. Additionally, methods that previously returnedlibc::c_void
have 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_decorations
method toWindow
to 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
modifiers
field toMouseInput
,MouseWheel
, andCursorMoved
events 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_pixels
andget_inner_size_points
methods ofWindow
in favor ofget_inner_size
. - Breaking:
EventsLoop
is!Send
and!Sync
because of platform-dependant constraints, butWindow
,WindowId
,DeviceId
andMonitorId
guaranteed to beSend
. MonitorId::get_position
now 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
EnumDisplayMonitors
instead ofEnumDisplayDevices
. This changes the value returned byMonitorId::get_name()
. - On Windows added
MonitorIdExt::hmonitor
method - Impl
Clone
forEventsLoopProxy
EventsLoop::get_primary_monitor()
on X11 will fallback to any available monitor if no primary is found- Support for touch event on wayland
WindowEvent
sMouseMoved
,MouseEntered
, andMouseLeft
have been renamed toCursorMoved
,CursorEntered
, andCursorLeft
.- New
DeviceEvent
s added,MouseMotion
andMouseWheel
. - Send
CursorMoved
event afterCursorEntered
andFocused
events. - Add support for
ModifiersState
,MouseMove
,MouseInput
,MouseMotion
for emscripten backend.
Version 0.8.3 (2017-10-11)
- Fixed issue of calls to
set_inner_size
blocking on Windows. - Mapped
ISO_Left_Tab
toVirtualKeyCode::Tab
to 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::maximized
andWindowBuilder::with_maximized
. - Added
Window::set_fullscreen
. - Changed
with_fullscreen
to take aOption<MonitorId>
instead of aMonitorId
. - Removed
MonitorId::get_native_identifer()
in favor of platform-specific traits in theos
module. - Changed
get_available_monitors()
andget_primary_monitor()
to be methods ofEventsLoop
instead of stand-alone methods. - Changed
EventsLoop
to be tied to a specific X11 or Wayland connection. - Added a
os::linux::EventsLoopExt
trait that makes it possible to configure the connection. - Fixed the emscripten code, which now compiles.
- Changed the X11 fullscreen code to use
xrandr
instead ofxxf86vm
. - Fixed the Wayland backend to produce
Refresh
event after window creation. - Changed the
Suspended
event to be outside ofWindowEvent
. - Fixed the X11 backend sometimes reporting the wrong virtual key (#273).