Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

winit suddenly requires cmake dependency #2373

Closed
Jasper-Bekkers opened this issue Jul 14, 2022 · 28 comments · Fixed by #2381 or #2438
Closed

winit suddenly requires cmake dependency #2373

Jasper-Bekkers opened this issue Jul 14, 2022 · 28 comments · Fixed by #2381 or #2438

Comments

@Jasper-Bekkers
Copy link
Contributor

It looks like ever since sctk-adwaita got upgraded (and their dependencies got upgraded) this crate is dragging in cmake, polluting everybody's build system and setup. Our project has a zero-tolerance policy for cmake (or other build time tools since we just want to be able to build trough cargo with no additional tools required to be set up).

Dependency tree seems to be:

sctk-adwaita ->crossfont -> servo-fontconfig -> servo-fontconfig-sys -> expat-sys -> cmake

Presumably all of this isn't strictly required and can be disabled?

@kchibisov
Copy link
Member

Presumably all of this isn't strictly required and can be disabled?

Just disable sctk-adwaita feature? Or install system headers for fontconfig, freetype?

@Jasper-Bekkers
Copy link
Contributor Author

Just disable sctk-adwaita feature? Or install system headers for fontconfig, freetype?

Honestly if sctk-adwaita drags in such major dependencies, I don't think it should be enabled by default

@kchibisov
Copy link
Member

The point to have decorations that make sense on Wayland. Like you know, that you will have a text in your title bar. That's the main point to provide sensible defaults. Otherwise you'll be surprised that your window suddently doesn't have a title bar or actual buttons.

If anything we can abort compilation if you don't have system library headers installed.

@Jasper-Bekkers
Copy link
Contributor Author

I don't think any of that is needed, sensible titlebars are very welcome, however, that can all be achieved without reliance on cmake (and by having a sensible build setup).

@kchibisov
Copy link
Member

Well, bring it to whoever builds those system crates and requires to put the entire thing just to build it just in case?

I'll alter to just abort. So you won't have a cmake problem.

@maroider
Copy link
Member

maroider commented Jul 14, 2022

On alternative might be to swap out servo-fontconfig with fontconfig/yeslogic-fontconfig, which doesn't fall back to vendoring fontconfig and expat when it can't find a compatible version of fontconfig at build time, but that's a decision to make for whoever is maintaining crossfont.

@kchibisov
Copy link
Member

On alternative might be to swap out servo-fontconfig with fontconfig/yeslogic-fontconfig, which doesn't fall back to vendoring fontconfig and expat when it can't find a compatible version of fontconfig at build time, but that's a decision to make for whoever is maintaining crossfont.

Servo does the same thing. That's the point. The issue is that it fallbacks. We have a flag in crossfont to not ever fallback here, which is what they want. I've patched sctk-adwaita to use that flag instead, but it'll have time for it to release.

whoever is maintaining crossfont.

It's alacritty's project, so it's kind of me.

kchibisov added a commit to kchibisov/winit that referenced this issue Jul 19, 2022
This should force the use of system libraries for Fontconfig
and freetype instead of building them with cmake if missing.

Fixes rust-windowing#2373.
@kchibisov
Copy link
Member

Reopening since we want to force system libraries.

@kchibisov kchibisov reopened this Jul 19, 2022
kchibisov added a commit to kchibisov/winit that referenced this issue Jul 20, 2022
This should force the use of system libraries for Fontconfig
and freetype instead of building them with cmake if missing.

Fixes rust-windowing#2373.
kchibisov added a commit to kchibisov/winit that referenced this issue Jul 20, 2022
This should force the use of system libraries for Fontconfig
and freetype instead of building them with cmake if missing.

Fixes rust-windowing#2373.
kchibisov added a commit to kchibisov/winit that referenced this issue Jul 20, 2022
This should force the use of system libraries for Fontconfig
and freetype instead of building them with cmake if missing.

Fixes rust-windowing#2373.
kchibisov added a commit to kchibisov/winit that referenced this issue Jul 20, 2022
This should force the use of system libraries for Fontconfig
and freetype instead of building them with cmake if missing.

Fixes rust-windowing#2373.
kchibisov added a commit that referenced this issue Jul 20, 2022
This should force the use of system libraries for Fontconfig
and freetype instead of building them with cmake if missing.

This also fixes compilation failures on nightly.

Fixes #2373.
@MarijnS95
Copy link
Member

It seems to still pull in cmake:

$ cargo tree -i cmake
cmake v0.1.48
[build-dependencies]
├── expat-sys v2.1.6
│   └── servo-fontconfig-sys v5.1.0
│       └── servo-fontconfig v0.5.1
│           └── crossfont v0.5.0
│               └── sctk-adwaita v0.4.1
│                   └── winit v0.26.1 (https://github.com/rust-windowing/winit?rev=f09259f6#f09259f6)
│                       ...
└── freetype-sys v0.13.1
    ├── freetype-rs v0.26.0
    │   └── crossfont v0.5.0 (*)
    └── servo-fontconfig-sys v5.1.0 (*)

At the same time the requirement for pkg-config makes me unable to cross-compile winit for an aarch64 platform where I don't have pkg-config support (yet, could be added but it's a hassle), nor Android it seems.

Fortunately we can circumvent both issues by disabling Client-Side Decorations, as we don't render any of those.

@kchibisov
Copy link
Member

I'm pretty sure you can use env variable for pkg-config to cross it. I've been doing so for a long time in alacritty.

@kchibisov
Copy link
Member

You're cross compiling for linux, not android, right? Since none of that should be triggered for android target.

If @maroider thinks that we shouldn't have any fancy decorations on Wayland by default, then we can swap defaults.

@maroider
Copy link
Member

I feel like the default should be what works best for the most amount of people, and that seems to me like it would require the fancy decorations.

@MarijnS95
Copy link
Member

MarijnS95 commented Jul 21, 2022

You're cross compiling for linux, not android, right? Since none of that should be triggered for android target.

Correct, aarch64-unknown-linux-gnu. I don't remember what I was doing when writing "nor Android it seems" yesterday, because it is definitely compiling just fine.

I'm pretty sure you can use env variable for pkg-config to cross it.

Allowing it is easy, but I'll have to pull the .pc files and libraries from the target machine to make it link. Not the end of the world, but a hassle nonetheless.


Regarding decorations, I wanted to ask if these ugly non-GNOME borders are also caused - and fixed - by this feature on wayland?:

image

That'd be an incentive for me to set that up. I've only used this application on Sway thus far without any window borders and didn't notice.

In order to rule out any issues in my application I tried the winit examples. But none actually show a window on neither my x64+sway desktop nor aarch64+GNOME "phone" (both on Wayland)? Not even when going back to v0.26.1. @kchibisov are the examples missing any kind of event handling or Window setup to make it work properly?

@kchibisov
Copy link
Member

kchibisov commented Jul 21, 2022

@MarijnS95 winit examples are not showing anything on Wayland unfortunatelly, since you should draw on Wayland to make your window visible, but none of the examples are drawing anything. It's recommended to use glutin examples here. (or add something like softbuffer right into winit examples, that's why I've suggested it, but it's clear now that softbuffer isn't a good project in terms of quality, so we should add something our selves).

Regarding decorations, I wanted to ask if these ugly non-GNOME borders are also caused - and fixed - by this feature on wayland?:

Yes, the goal is to provide more visually pleasant decorations. That's how they look.

picture

They also have a light variant(you can control that when building a window in winit or by using environment variable).

The decorations on GNOME will always be non-native, since winit isn't using gtk and won't do so. But drawing something similar looking or at least with text is preferred imho, like we do now.

@MarijnS95
Copy link
Member

@kchibisov Thanks for explaining, you mentioned softbuffer before so it'd be good to have some solution to make the examples run on Wayland again.

Indeed, after setting up cross-compilation for these libs through pkg-config the window borders are more pleasant again.

I just expected the window manager and compositor to take care of and be able to render them natively (if the application doesn't request custom rendering). Guess I have more to learn about them - or specifically Wayland?

@MarijnS95
Copy link
Member

MarijnS95 commented Jul 21, 2022

However, back to the original issue: cmake is still in the dependency graph, despite stating in #2381:

This should force the use of system libraries for Fontconfig
and freetype instead of building them with cmake if missing.

@kchibisov
Copy link
Member

I just expected the window manager and compositor to take care of and be able to render them natively (if the application doesn't request custom rendering). Guess I have more to learn about them - or specifically Wayland?

GNOME refuses to support server-side decorations. So we must draw something ourselves.

However, back to the original issue: cmake is still in the dependency graph, despite stating in #2381:

IIRC it's still there, but not used anymore. Is it causing issues?

@MarijnS95
Copy link
Member

MarijnS95 commented Jul 21, 2022

It seems like expat-sys is still trying to invoke it...

EDIT: And it'll a problem generally in the sense of dragging in unneeded dependencies, and not making it through cargo-deny if we were to deny this dependency (which we do on a mental basis, but were planning to configure that way).

@kchibisov
Copy link
Member

Hm, That's unfortunate.

@kchibisov kchibisov reopened this Jul 21, 2022
@MarijnS95
Copy link
Member

MarijnS95 commented Jul 21, 2022

https://github.com/servo/libfontconfig/blob/master/Cargo.toml Looks like this is where the force_system_lib feature isn't propagated into expat-sys nor freetype-sys, only fontconfig's pkg-config error is non-fatal based on that.

@kchibisov
Copy link
Member

Freetype won't build with cmake, look at its build.rs. However expat I think can. The original flag was added to mitigate fontconfig from building.

@MarijnS95
Copy link
Member

Freetype won't build with cmake, look at its build.rs.

It still pulls in this dependency into the tree even if unlikely to be ran thanks to the env var; it should just be guarded by a feature toggle as well or instead.

@LoganDark

This comment was marked as resolved.

@MarijnS95
Copy link
Member

@kchibisov I think both crates can be reworked to make cmake optional, but we can't base it on force_system_lib since that'd require an inversion in Cargo.toml which I don't think is possible (enable the optional cmake crate when force_system_lib is not set).

Instead we might have to have a cmake feature, and replace force_system_lib with enable_cmake or something similar in libfontconfig.

Thoughts?

@alexheretic
Copy link
Contributor

Yeah this was a bit of a pain building my game in ubuntu:16.04 (to maintain compat) where cmake is too old to work with freetype-sys. Working around that, by dling newer cmake, I faced bundling additional libs with my game to solve linking failures across the distros I support (libfontconfig.so.1, libfreetype.so.6, libpng12.so.0, libexpat.so.1).

I think I can make that work, but it's fairly high effort to render a 2 word wayland title. In the end I went with the wayland-csd-adwaita-notitle feature. It would be nice to have a rust-text alternative to freetype option for wayland titles, perhaps that can be added to sctk-adwaita?

@PolyMeilex
Copy link
Contributor

Although this was already mentioned here, I'll say it anyway:
If you want to eliminate the system dependency, just use wayland-csd-adwaita-notitle there is no reason to remove all of the decorations. Rendering decorations is done in pure rust, so you can still keep the "fancy" decorations, and just drop the title.
To quote the changelog:

  • wayland-csd-adwaita feature that enables proper CSD with title rendering using FreeType system library.
  • wayland-csd-adwaita-notitle feature that enables CSD but without title rendering.

That being said, Alex's ab_glyph version of title rendering got merged in sctk-adwaita already, and I will release it shortly, so winit could expose this option as well, but that's not for me to decide.

@john01dav
Copy link

but it's clear now that softbuffer isn't a good project in terms of quality, so we should add something our selves

Hi, softbuffer developer here. Would you be willing to share what your issues with it are? I had some issues relating to my employment contract with a new employer that made FOSS contributions a bad idea so I had to let some issues & PRs sit, but the contract issues are resolved now so I'm starting to process the backlog.

@kchibisov

@kchibisov
Copy link
Member

@john01dav I'd suggest to contact @i509VCB on that regard wrt Wayland.

Wrt X11 we had issues here #2246.

a-llie pushed a commit to a-llie/winit that referenced this issue Aug 24, 2022
Unify `with_app_id` and `with_class` methods

Both APIs are used to set application name. This commit unifies the API
between Wayland and X11, so downstream applications can remove platform
specific code when using `WindowBuilderExtUnix`.

Fixes rust-windowing#1739.

Unify behavior of `resizable` across platforms

This makes X11 and Wayland follow Windows and macOS, so the size of the
window could be set even though it has resizable attribute set to false.

Fixes rust-windowing#2242.

Fix assigning the wrong monitor when receiving Windows move events (rust-windowing#2266)

Fix embedded NULs in C wide strings returned from Windows API (rust-windowing#2264)

On Wayland, fix hiding cursors on GNOME

`wl_pointer::set_cursor` expects a serial number of the last
`wl_pointer::enter` event. However other calls expect latest
observed pointer serial, so this commit tracks both and
use them as required by specification.

Fixes rust-windowing#2273.

Bump windows-sys version to 0.36 (rust-windowing#2277)

Add new `Ime` event for desktop platforms

This commit brings new Ime event to account for preedit state of input
method, also adding `Window::set_ime_allowed` to toggle IME input on
the particular window.

This commit implements API as designed in rust-windowing#1497 for desktop platforms.

On Wayland, provide option for better CSD

While most compositors provide server side decorations, the GNOME
does not, and won't provide them. Also Wayland clients must render
client side decorations.

Winit was already drawing some decorations, however they were bad
looking and provided no text rendering, so the title was missing.
However this commit makes use of the SCTK external frame similar to
GTK's Adwaita theme supporting text rendering and looking similar to
other GTK applications.

Fixes rust-windowing#1967.

Fix warnings on nightly rust (rust-windowing#2295)

This was causing CI to fail: https://github.com/rust-windowing/winit/runs/6506026326

On macOS, emit resize event on `frame_did_change`

When the window switches mode from normal to tabbed one, it doesn't
get resized, however the frame gets resized. This commit makes
winit to track resizes when frame changes instead of window.

Fixes rust-windowing#2191.

Reorganize `EventLoopBuilder::build()` platform documentation

Since there's a "Platform-specific" header, it makes sense to put the
Linux-specific part under it. On the other hand, "Can only be called on
the main thread." is true for all platforms, not just iOS, so there is
no reason to call it out for iOS specifically.

[Windows] Avoid GetModuleHandle(NULL) (rust-windowing#2301)

Use get_instance_handle() over GetModuleHandle(NULL)

On Windows, fix reported cursor position. (rust-windowing#2311)

When clicking and moving the cursor out of the window negative coordinates were not handled correctly.

Revert "On Wayland, fix resize not propagating properly"

This reverts commit 78e5a39.

It was discovered that in some cases mesa will lock the back
buffer, e.g. when making context current, leading to resize
missing. Given that applications can restructure their rendering
to account for that, and that winit isn't limited to playing
nice with mesa reverting the original commit.

Set `WindowBuilder` to must_use

Add X11 opt-in function for device events

Previously on X11, by default all global events were broadcasted to
every winit application. This unnecessarily drains battery due to
excessive CPU usage when moving the mouse.

To resolve this, device events are now ignored by default and users must
manually opt into it using
`EventLoopWindowTarget::set_filter_device_events`.

Fixes (rust-windowing#1634) on Linux.

Prevent null dereference on X11 with bad locale

Remove old dialog fix that is superseded by rust-windowing#2027 (rust-windowing#2292)

This fixes the run_return loop never returning on macos when using multiple windows

Migrate from lazy_static to once_cell

macOS: Emit LoopDestroyed on CMD+Q (rust-windowing#2073)

override applicationWillTerminate:

On Android, use `HasRawWindowHandle` directly from the `ndk` crate (rust-windowing#2318)

The `ndk` crate now implements [`HasRawWindowHandle` directly on
`NativeWindow`], relieving the burden to reimplement it on `winit`.

[`HasRawWindowHandle` directly on `NativeWindow`]: rust-mobile/ndk#274

Run clippy on CI

Fixes rust-windowing#1402.

Make `set_device_event_filter` non-mut

Commit f10a984 added `EventLoopWindowTarget::set_device_event_filter`
with for a mutable reference, however most winit APIs work with
immutable references, so altering API to play nicely with existing APIs.

This also disables device event filtering on debug example.

Make `WindowAttributes` private (rust-windowing#2134)

* Make `WindowAttributes` private, and move its documentation

* Reorder WindowAttributes title and fullscreen to match method order

Build docs on `docs.rs` for iOS and Android as well (rust-windowing#2324)

Remove core-video-sys dependency (rust-windowing#2326)

Hasn't been updated in over 2 years - many open PRs, seems abandoned. Is the cause of several duplicate dependencies in our dependency tree!

Fix macOS 32bit (rust-windowing#2327)

Documentation cleanup (rust-windowing#2328)

* Remove redundant documentation links

* Add note to README about windows not showing up on Wayland

* Fix documentation links

* Small documentation fixes

* Add note about doing stuff after StartCause::Init on macOS

Add `WindowBuilder::transparent`

This is required to help hardware accelerated libraries like glutin
that accept WindowBuilder instead of RawWindowHandle, since the api
to access builder properties directly was removed.

Follow up to 44288f6.

Refine `Window::set_cursor_grab` API

This commit renames `Window::set_cursor_grab` to
`Window::set_cursor_grab_mode`. The new API now accepts enumeration
to control the way cursor grab is performed. The value could be: `lock`,
`confine`, or `none`.

This commit also implements `Window::set_cursor_position` for Wayland,
since it's tied to locked cursor.

Implements API from rust-windowing#1677.

examples/window_run_return: Enable on Android (rust-windowing#2321)

Android also supports `EventLoopExtRunReturn`.  The user will still have
to follow the README to turn this example into a `cdylib` and add the
`ndk_glue::main()` initialization attribute, though.

Fix doubled device events on X11

Fixes rust-windowing#2332

macOS: disallow_highdpi will set explicity the value to avoid the SO value by default (rust-windowing#2339)

ci: Disallow warnings in rustdoc and test private items (rust-windowing#2341)

Make sure `cargo doc` runs cleanly without any warnings in the CI - some
recently introduced but still allowing a PR to get merged.

In case someone wishes to add docs on private items, make sure those
adhere to the same standards.

Bump smithay-client-toolkit to v0.16.0

Disallow multiple EventLoop creation

Fix conflict in `WindowFlags` on Windows

Map XK_Caps_Lock to VirtualKeyCode::Capital (rust-windowing#1864)

This allows applications to handle events for the caps lock key under X11

Less redundancy and improve fullscreen in examples

Remove examples/minimize which is redundant

Implement From<u64> for WindowId and vise-versa

This should help downstream applications to expose WindowId to the end
users via e.g. IPC to control particular windows in multi window
systems.

examples/multiwindow.rs: ignore synthetic key press events

Fix infinite recursion in `WindowId` conversion methods

Add 'WindowEvent::Occluded(bool)'

This commits and an event to track window occlusion state,
which could help optimize rendering downstream.

Add `refresh_rate_millihertz` for `MonitorHandle`

This also alters `VideoMode::refresh_rate` to
`VideoMode::refresh_rate_millihertz` which now returns monitor refresh rate in
mHz.

On Wayland send Focused(false) for new window

On Wayland winit will always get an explicit focused event from the
system and will transfer it downstream. So send focused false to enforce
it.

On Wayland, drop wl_surface on window close

web: Manually emit focused event on mouse click (rust-windowing#2202)

* Manually emit focused event on mouse click

* Update CHANGELOG.md

Co-authored-by: Markus Røyset <[email protected]>

web: Add `EventLoop::spawn` (rust-windowing#2208)

* web: Add `EventLoop::spawn`

This is the same as `EventLoop::run`, but doesn't throw an exception in order to return `!`.

I decided to name it `spawn` rather than `run_web` because I think that's more descriptive, but I'm happy to change it to `run_web`.

Resolves rust-windowing#1714

* Update src/platform/web.rs

* Fix outdated names

Co-authored-by: Markus Røyset <[email protected]>

Fix changelog entry for `EventLoopExtWebSys` (rust-windowing#2372)

android: Hold `NativeWindow` lock until after notifying the user with `Event::Suspended` (rust-windowing#2307)

This applies rust-mobile/ndk#117
on the `winit` side: Android destroys its window/surface as soon as the
user returns from [`onNativeWindowDestroyed`], and we "fixed" this on
the `ndk-glue` side by sending the `WindowDestroyed` event before
locking the window and removing it: this lock has to wait for any user
of `ndk-glue` - ie. `winit` - to give up its readlock on the window,
which is what we utilize here to give users of `winit` "time" to destroy
any resource created on top of a `RawWindowHandle`.

since we can't pass the user a `RawWindowHandle` through the
`HasRawWindowHandle` trait we have to document this case explicitly and
keep the lock alive on the `winit` side instead.

[`onNativeWindowDestroyed`]: https://developer.android.com/ndk/reference/struct/a-native-activity-callbacks#onnativewindowdestroyed

web: add `with_prevent_default`, `with_focusable` (rust-windowing#2365)

* web: add `with_prevent_default`, `with_focusable`

`with_prevent_default` controls whether `event.preventDefault` is called

`with_focusable` controls whether `tabindex` is added

Fixes rust-windowing#1768

* Remove extra space from CHANGELOG

windows: Use correct value for mouse wheel delta (rust-windowing#2374)

Make winit focus take activity into account on Windows (rust-windowing#2159)

winit's notion of "focus" is very simple; you're either focused or not.
However, Windows has both notions of focused window and active window
and paying attention only to WM_SETFOCUS/WM_KILLFOCUS can cause a window
to believe the user is interacting with it when they're not. (this
manifests when a user switches to another application between when a
winit application starts and it creates its first window)

Fix typos (rust-windowing#2375)

Bump sctk-adwaita to 0.4.1

This should force the use of system libraries for Fontconfig
and freetype instead of building them with cmake if missing.

This also fixes compilation failures on nightly.

Fixes rust-windowing#2373.

Tidy up "platform-specifc" doc sections (rust-windowing#2356)

* Tidy up "platform-specific" doc sections

* Unrelated grammatical fix

* Subjective improvements

Android: avoid deadlocks while handling UserEvent (rust-windowing#2343)

Replace `Arc<Mutex<VecDeque<T>>` by `mpsc`

Update raw-window-handle to v0.5.0

This updates raw-window-handle to v0.5.0.

On macOS, fix confirmed character inserted

When confirming input in e.g. Korean IME or using characters like
`+` winit was sending those twice, once via `Ime::Commit` and the
other one via `ReceivedCharacter`, since those events weren't generating
any `Ime::Preedit` and were forwarded due to `do_command_by_selector`.

Add method to hook xlib error handler

This should help glutin to handle errors coming from GLX
and offer multithreading support in a safe way.

Fixes rust-windowing#2378.

Windows: apply skip taskbar state when taskbar is restarted (rust-windowing#2380)

Fix hiding a maximized window On Windows (rust-windowing#2336)

Bump `ndk` and `ndk-glue` dependencies to stable `0.7.0` release (rust-windowing#2392)

Fix type hint reference for xlib hook

Consistently deliver a Resumed event on all platforms

To be more consistent with mobile platforms this updates the Windows,
macOS, Wayland, X11 and Web backends to all emit a Resumed event
immediately after the initial `NewEvents(StartCause::Init)` event.

The documentation for Suspended and Resumed has also been updated
to provide general recommendations for how to handle Suspended and
Resumed events in portable applications as well as providing
Android and iOS specific details.

This consistency makes it possible to write applications that lazily
initialize their graphics state when the application resumes without
any platform-specific knowledge. Previously, applications that wanted
to run on Android and other systems would have to maintain two,
mutually-exclusive, initialization paths.

Note: This patch does nothing to guarantee that Suspended events will
be delivered. It's still reasonable to say that most OSs without a
formal lifecycle for applications will simply never "suspend" your
application. There are currently no known portability issues caused
by not delivering `Suspended` events consistently and technically
it's not possible to guarantee the delivery of `Suspended` events if
the OS doesn't define an application lifecycle. (app can always be
terminated without any kind of clean up notification on most
non-mobile OSs)

Fixes rust-windowing#2185.

ci: manually point ANDROID_NDK_ROOT to latest supplied version

It seems the symlink to `ndk-bundle` and this environment variable
pointing to it have been removed to prevent the sdkmanager from failing,
when finding the SDK setup to be in an "indeterminate" state.  It is now
up to the users themselves to install an NDK through that tool or point
the right variables to a preinstalled "latest" NDK.

actions/runner-images#2689
actions/runner-images#5926

Fix changelog entry wrt scrolling

The breaking change was put into the wrong release section.

Release 0.27.0 version

Explicitly specify minimum supported rust version

This should help with distributing apps using winit.

Fixes rust-windowing#1075.

On X11, fix crash when can't disable IME

Fixes rust-windowing#2402.

Release 0.27.1 version

Windows: respect min/max sizes when creating the window (rust-windowing#2393)

On X11, fix window hints not persisting

This commit fixes the issue with min, max, and resize increments
not persisting across the dpi changes.

Fix tracking of phase changes for mousewheel on trackpad (rust-windowing#2158)

On Windows, add opt-in function for device events (rust-windowing#2409)

Add CODEOWNERS file (rust-windowing#2420)

* Add CODEOWNERS file

This makes it very clear when you're stepping down from the post as a maintainer, and makes it clear for users who is expected to review their PR

* Fix grammar

* Make @kchibisov receive pings for the X11 platform

* Fix typo

Implement version 0.4 of the HasRawWindowHandle trait

This makes Winit 0.27 compatible with crates like Wgpu 0.13 that are
using the raw_window_handle v0.4 crate and aren't able to upgrade to 0.5
until they do a new release (since it requires a semver change).

The change is intended to be self-contained (instead of pushing
the details into all the platform_impl backends) since this is only
intended to be a temporary trait implementation for backwards
compatibility that will likely be removed before the next Winit release.

Fixes rust-windowing#2415.

Fix missleading breaking change on Windows

The applications should not rely on not-implemented behavior and
should use the right functions for that.

Remove redundant steps from CI

Tests are already building the entire crate, so no need for a
separate builds slowing down the CI.

On Wayland, fix `Window::request_redraw` being delayed

On Waylnad when asking for redraw before `MainEventsCleared`
would result for redraw being send on the next event loop tick,
which is not expectable given that it must be delivered on the same
event loop tick.

Release 0.27.2 version

On Windows, improve support for undecorated windows (rust-windowing#2419)

Add touchpad magnify and rotate gestures support for macOS (rust-windowing#2157)

* Add touchpad magnify support for macOS

* Add touchpad rotate support for macOS

* Add macOS rotate and magnify gesture cancelled phases

* Correct docs for TouchpadRotate event

* Fix tracing macros

Document `WindowEvent::Moved` as unsupported on Wayland

Update `sctk-adwaita` to use `ab_glyph`

The crossfont will still be available under the option.

Mark new events as breaking change

Adding a new enum variant is a breaking change in winit.

Co-Authored-By: kas <[email protected]>
Co-Authored-By: Artur Kovacs <[email protected]>
Co-Authored-By: Markus Siglreithmaier <[email protected]>
Co-Authored-By: Murarth <[email protected]>
Co-Authored-By: Yusuke Kominami <[email protected]>
Co-Authored-By: moko256 <[email protected]>
Co-Authored-By: Mads Marquart <[email protected]>
Co-Authored-By: Markus Røyset <[email protected]>
Co-Authored-By: Marijn Suijten <[email protected]>
Co-Authored-By: Kirill Chibisov <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging a pull request may close this issue.

8 participants