From 18259c0fd4043e4e39d5ac6b43adfcf851ffac7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=B0=8F=E7=99=BD?= <364772080@qq.com> Date: Tue, 11 Mar 2025 21:14:36 +0800 Subject: [PATCH] chore: Bump `windows` crate version (#26455) Closes #ISSUE Release Notes: - N/A --- Cargo.lock | 141 +++++++++++++++--- Cargo.toml | 8 +- crates/gpui/Cargo.toml | 2 +- crates/gpui/src/platform/windows/clipboard.rs | 2 +- .../gpui/src/platform/windows/direct_write.rs | 10 +- crates/gpui/src/platform/windows/display.rs | 2 +- crates/gpui/src/platform/windows/events.rs | 17 ++- crates/gpui/src/platform/windows/platform.rs | 25 ++-- crates/gpui/src/platform/windows/util.rs | 1 + crates/gpui/src/platform/windows/window.rs | 15 +- 10 files changed, 162 insertions(+), 61 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 38859829b0..311c386af4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2301,7 +2301,7 @@ dependencies = [ "cap-primitives", "cap-std", "io-lifetimes", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2329,7 +2329,7 @@ dependencies = [ "ipnet", "maybe-owned", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", "winx", ] @@ -2670,7 +2670,7 @@ dependencies = [ "serde", "tempfile", "util", - "windows 0.58.0", + "windows 0.60.0", ] [[package]] @@ -2712,7 +2712,7 @@ dependencies = [ "tokio-socks", "url", "util", - "windows 0.58.0", + "windows 0.60.0", "worktree", ] @@ -4403,7 +4403,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5053,7 +5053,7 @@ dependencies = [ "text", "time", "util", - "windows 0.58.0", + "windows 0.60.0", ] [[package]] @@ -5064,7 +5064,7 @@ checksum = "5e2e6123af26f0f2c51cc66869137080199406754903cc926a7690401ce09cb4" dependencies = [ "io-lifetimes", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5481,7 +5481,7 @@ dependencies = [ "ui", "unindent", "util", - "windows 0.58.0", + "windows 0.60.0", "workspace", "zed_actions", ] @@ -5681,8 +5681,8 @@ dependencies = [ "wayland-cursor", "wayland-protocols", "wayland-protocols-plasma", - "windows 0.58.0", - "windows-core 0.58.0", + "windows 0.60.0", + "windows-core 0.60.1", "x11-clipboard", "x11rb", "xim", @@ -6709,7 +6709,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2285ddfe3054097ef4b2fe909ef8c3bcd1ea52a8f0d274416caebeef39f04a65" dependencies = [ "io-lifetimes", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -10734,7 +10734,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -11656,7 +11656,7 @@ dependencies = [ "libc", "linux-raw-sys", "once_cell", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -13428,7 +13428,7 @@ dependencies = [ "fd-lock", "io-lifetimes", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", "winx", ] @@ -13568,7 +13568,7 @@ dependencies = [ "getrandom 0.3.1", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -13615,7 +13615,7 @@ dependencies = [ "theme", "thiserror 1.0.69", "util", - "windows 0.58.0", + "windows 0.60.0", ] [[package]] @@ -13992,7 +13992,7 @@ dependencies = [ "tree-sitter-md", "ui", "util", - "windows 0.58.0", + "windows 0.60.0", "workspace", "zed_actions", "zeta", @@ -14699,7 +14699,7 @@ dependencies = [ "theme", "ui_macros", "util", - "windows 0.58.0", + "windows 0.60.0", ] [[package]] @@ -15914,7 +15914,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -15971,6 +15971,28 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf874e74c7a99773e62b1c671427abf01a425e77c3d3fb9fb1e4883ea934529" +dependencies = [ + "windows-collections", + "windows-core 0.60.1", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5467f79cc1ba3f52ebb2ed41dbb459b8e7db636cc3429458d9a852e15bc24dec" +dependencies = [ + "windows-core 0.60.1", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -16011,10 +16033,33 @@ dependencies = [ "windows-implement 0.58.0", "windows-interface 0.58.0", "windows-result 0.2.0", - "windows-strings", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca21a92a9cae9bf4ccae5cf8368dce0837100ddf6e6d57936749e85f152f6247" +dependencies = [ + "windows-implement 0.59.0", + "windows-interface 0.59.0", + "windows-link", + "windows-result 0.3.1", + "windows-strings 0.3.1", +] + +[[package]] +name = "windows-future" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a787db4595e7eb80239b74ce8babfb1363d8e343ab072f2ffe901400c03349f0" +dependencies = [ + "windows-core 0.60.1", + "windows-link", +] + [[package]] name = "windows-implement" version = "0.57.0" @@ -16037,6 +16082,17 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "windows-implement" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "windows-interface" version = "0.57.0" @@ -16059,12 +16115,33 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "windows-interface" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "windows-link" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" +[[package]] +name = "windows-numerics" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005dea54e2f6499f2cee279b8f703b3cf3b5734a2d8d21867c8f44003182eeed" +dependencies = [ + "windows-core 0.60.1", + "windows-link", +] + [[package]] name = "windows-registry" version = "0.2.0" @@ -16072,7 +16149,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ "windows-result 0.2.0", - "windows-strings", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] @@ -16094,6 +16171,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06374efe858fab7e4f881500e6e86ec8bc28f9462c47e5a9941a0142ad86b189" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-strings" version = "0.1.0" @@ -16104,6 +16190,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -16379,7 +16474,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f3fd376f71958b862e7afb20cfe5a22830e1963462f3a17f49d82a6c1d1f42d" dependencies = [ "bitflags 2.8.0", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -17020,7 +17115,7 @@ dependencies = [ "vim", "vim_mode_setting", "welcome", - "windows 0.58.0", + "windows 0.60.0", "winresource", "workspace", "zed_actions", diff --git a/Cargo.toml b/Cargo.toml index bde3d408e2..6148919020 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -597,12 +597,12 @@ features = [ ] [workspace.dependencies.windows] -version = "0.58" +version = "0.60" features = [ - "implement", "Foundation_Collections", "Foundation_Numerics", - "Storage", + "Storage_Search", + "Storage_Streams", "System_Threading", "UI_StartScreen", "UI_ViewManagement", @@ -623,9 +623,11 @@ features = [ "Win32_System_Com_StructuredStorage", "Win32_System_Console", "Win32_System_DataExchange", + "Win32_System_IO", "Win32_System_LibraryLoader", "Win32_System_Memory", "Win32_System_Ole", + "Win32_System_Pipes", "Win32_System_SystemInformation", "Win32_System_SystemServices", "Win32_System_Threading", diff --git a/crates/gpui/Cargo.toml b/crates/gpui/Cargo.toml index 2ef7c5b2bc..339799102c 100644 --- a/crates/gpui/Cargo.toml +++ b/crates/gpui/Cargo.toml @@ -207,7 +207,7 @@ blade-macros.workspace = true flume = "0.11" rand.workspace = true windows.workspace = true -windows-core = "0.58" +windows-core = "0.60" [dev-dependencies] backtrace = "0.3" diff --git a/crates/gpui/src/platform/windows/clipboard.rs b/crates/gpui/src/platform/windows/clipboard.rs index 2ef2c04ca7..5de057152f 100644 --- a/crates/gpui/src/platform/windows/clipboard.rs +++ b/crates/gpui/src/platform/windows/clipboard.rs @@ -170,7 +170,7 @@ fn set_data_to_clipboard(data: &[T], format: u32) -> Result<()> { let handle = GlobalLock(global); std::ptr::copy_nonoverlapping(data.as_ptr(), handle as _, data.len()); let _ = GlobalUnlock(global); - SetClipboardData(format, HANDLE(global.0))?; + SetClipboardData(format, Some(HANDLE(global.0)))?; } Ok(()) } diff --git a/crates/gpui/src/platform/windows/direct_write.rs b/crates/gpui/src/platform/windows/direct_write.rs index eef52b2014..2dc4db0d18 100644 --- a/crates/gpui/src/platform/windows/direct_write.rs +++ b/crates/gpui/src/platform/windows/direct_write.rs @@ -1049,7 +1049,7 @@ impl IDWriteTextRenderer_Impl for TextRenderer_Impl { _measuringmode: DWRITE_MEASURING_MODE, glyphrun: *const DWRITE_GLYPH_RUN, glyphrundescription: *const DWRITE_GLYPH_RUN_DESCRIPTION, - _clientdrawingeffect: Option<&windows::core::IUnknown>, + _clientdrawingeffect: windows::core::Ref, ) -> windows::core::Result<()> { unsafe { let glyphrun = &*glyphrun; @@ -1113,7 +1113,7 @@ impl IDWriteTextRenderer_Impl for TextRenderer_Impl { _baselineoriginx: f32, _baselineoriginy: f32, _underline: *const DWRITE_UNDERLINE, - _clientdrawingeffect: Option<&windows::core::IUnknown>, + _clientdrawingeffect: windows::core::Ref, ) -> windows::core::Result<()> { Err(windows::core::Error::new( E_NOTIMPL, @@ -1127,7 +1127,7 @@ impl IDWriteTextRenderer_Impl for TextRenderer_Impl { _baselineoriginx: f32, _baselineoriginy: f32, _strikethrough: *const DWRITE_STRIKETHROUGH, - _clientdrawingeffect: Option<&windows::core::IUnknown>, + _clientdrawingeffect: windows::core::Ref, ) -> windows::core::Result<()> { Err(windows::core::Error::new( E_NOTIMPL, @@ -1140,10 +1140,10 @@ impl IDWriteTextRenderer_Impl for TextRenderer_Impl { _clientdrawingcontext: *const ::core::ffi::c_void, _originx: f32, _originy: f32, - _inlineobject: Option<&IDWriteInlineObject>, + _inlineobject: windows::core::Ref, _issideways: BOOL, _isrighttoleft: BOOL, - _clientdrawingeffect: Option<&windows::core::IUnknown>, + _clientdrawingeffect: windows::core::Ref, ) -> windows::core::Result<()> { Err(windows::core::Error::new( E_NOTIMPL, diff --git a/crates/gpui/src/platform/windows/display.rs b/crates/gpui/src/platform/windows/display.rs index 9d62fde951..25631672c4 100644 --- a/crates/gpui/src/platform/windows/display.rs +++ b/crates/gpui/src/platform/windows/display.rs @@ -215,7 +215,7 @@ fn available_monitors() -> SmallVec<[HMONITOR; 4]> { let mut monitors: SmallVec<[HMONITOR; 4]> = SmallVec::new(); unsafe { EnumDisplayMonitors( - HDC::default(), + None, None, Some(monitor_enum_proc), LPARAM(&mut monitors as *mut _ as _), diff --git a/crates/gpui/src/platform/windows/events.rs b/crates/gpui/src/platform/windows/events.rs index 62a3d201df..f61c14a834 100644 --- a/crates/gpui/src/platform/windows/events.rs +++ b/crates/gpui/src/platform/windows/events.rs @@ -177,7 +177,12 @@ fn handle_size_msg( fn handle_size_move_loop(handle: HWND) -> Option { unsafe { - let ret = SetTimer(handle, SIZE_MOVE_LOOP_TIMER_ID, USER_TIMER_MINIMUM, None); + let ret = SetTimer( + Some(handle), + SIZE_MOVE_LOOP_TIMER_ID, + USER_TIMER_MINIMUM, + None, + ); if ret == 0 { log::error!( "unable to create timer: {}", @@ -190,7 +195,7 @@ fn handle_size_move_loop(handle: HWND) -> Option { fn handle_size_move_loop_exit(handle: HWND) -> Option { unsafe { - KillTimer(handle, SIZE_MOVE_LOOP_TIMER_ID).log_err(); + KillTimer(Some(handle), SIZE_MOVE_LOOP_TIMER_ID).log_err(); } None } @@ -217,7 +222,7 @@ fn handle_paint_msg(handle: HWND, state_ptr: Rc) -> Optio request_frame(Default::default()); state_ptr.state.borrow_mut().callbacks.request_frame = Some(request_frame); } - unsafe { ValidateRect(handle, None).ok().log_err() }; + unsafe { ValidateRect(Some(handle), None).ok().log_err() }; Some(0) } @@ -776,7 +781,7 @@ fn handle_activate_msg( if state_ptr.hide_title_bar { if let Some(titlebar_rect) = state_ptr.state.borrow().get_titlebar_rect().log_err() { unsafe { - InvalidateRect(handle, Some(&titlebar_rect), FALSE) + InvalidateRect(Some(handle), Some(&titlebar_rect), false) .ok() .log_err() }; @@ -1105,7 +1110,7 @@ fn handle_nc_mouse_up_msg( HTCLOSE => { if last_button == HTCLOSE { unsafe { - PostMessageW(handle, WM_CLOSE, WPARAM::default(), LPARAM::default()) + PostMessageW(Some(handle), WM_CLOSE, WPARAM::default(), LPARAM::default()) .log_err() }; handled = true; @@ -1133,7 +1138,7 @@ fn handle_set_cursor(lparam: LPARAM, state_ptr: Rc) -> Op ) { return None; } - unsafe { SetCursor(state_ptr.state.borrow().current_cursor) }; + unsafe { SetCursor(Some(state_ptr.state.borrow().current_cursor)) }; Some(1) } diff --git a/crates/gpui/src/platform/windows/platform.rs b/crates/gpui/src/platform/windows/platform.rs index 8c8d1a7544..d4d0328a99 100644 --- a/crates/gpui/src/platform/windows/platform.rs +++ b/crates/gpui/src/platform/windows/platform.rs @@ -130,14 +130,9 @@ impl WindowsPlatform { fn redraw_all(&self) { for handle in self.raw_window_handles.read().iter() { unsafe { - RedrawWindow( - *handle, - None, - HRGN::default(), - RDW_INVALIDATE | RDW_UPDATENOW, - ) - .ok() - .log_err(); + RedrawWindow(Some(*handle), None, None, RDW_INVALIDATE | RDW_UPDATENOW) + .ok() + .log_err(); } } } @@ -156,7 +151,7 @@ impl WindowsPlatform { .read() .iter() .for_each(|handle| unsafe { - PostMessageW(*handle, message, wparam, lparam).log_err(); + PostMessageW(Some(*handle), message, wparam, lparam).log_err(); }); } @@ -620,7 +615,7 @@ impl Platform for WindowsPlatform { CredReadW( PCWSTR::from_raw(target_name.as_ptr()), CRED_TYPE_GENERIC, - 0, + None, &mut credentials, )? }; @@ -648,7 +643,13 @@ impl Platform for WindowsPlatform { .chain(Some(0)) .collect_vec(); self.foreground_executor().spawn(async move { - unsafe { CredDeleteW(PCWSTR::from_raw(target_name.as_ptr()), CRED_TYPE_GENERIC, 0)? }; + unsafe { + CredDeleteW( + PCWSTR::from_raw(target_name.as_ptr()), + CRED_TYPE_GENERIC, + None, + )? + }; Ok(()) }) } @@ -805,7 +806,7 @@ fn load_icon() -> Result { let module = unsafe { GetModuleHandleW(None).context("unable to get module handle")? }; let handle = unsafe { LoadImageW( - module, + Some(module.into()), windows::core::PCWSTR(1 as _), IMAGE_ICON, 0, diff --git a/crates/gpui/src/platform/windows/util.rs b/crates/gpui/src/platform/windows/util.rs index 57a2d50ca6..1bf5924b99 100644 --- a/crates/gpui/src/platform/windows/util.rs +++ b/crates/gpui/src/platform/windows/util.rs @@ -2,6 +2,7 @@ use std::sync::OnceLock; use ::util::ResultExt; use windows::{ + core::BOOL, Wdk::System::SystemServices::RtlGetVersion, Win32::{Foundation::*, Graphics::Dwm::*, UI::WindowsAndMessaging::*}, UI::{ diff --git a/crates/gpui/src/platform/windows/window.rs b/crates/gpui/src/platform/windows/window.rs index d5972b3caa..ff33b0dc18 100644 --- a/crates/gpui/src/platform/windows/window.rs +++ b/crates/gpui/src/platform/windows/window.rs @@ -296,7 +296,7 @@ impl WindowsWindowStatePtr { unsafe { SetWindowPos( state_ptr.hwnd, - HWND::default(), + None, x, y, cx, @@ -433,7 +433,7 @@ impl WindowsWindow { CW_USEDEFAULT, None, None, - hinstance, + Some(hinstance.into()), lpparam, ) }; @@ -650,7 +650,7 @@ impl PlatformWindow for WindowsWindow { .spawn(async move { this.set_window_placement().log_err(); unsafe { SetActiveWindow(hwnd).log_err() }; - unsafe { SetFocus(hwnd).log_err() }; + unsafe { SetFocus(Some(hwnd)).log_err() }; // todo(windows) // crate `windows 0.56` reports true as Err unsafe { SetForegroundWindow(hwnd).as_bool() }; @@ -817,16 +817,13 @@ impl WindowsDragDropHandler { impl IDropTarget_Impl for WindowsDragDropHandler_Impl { fn DragEnter( &self, - pdataobj: Option<&IDataObject>, + pdataobj: windows::core::Ref, _grfkeystate: MODIFIERKEYS_FLAGS, pt: &POINTL, pdweffect: *mut DROPEFFECT, ) -> windows::core::Result<()> { unsafe { - let Some(idata_obj) = pdataobj else { - log::info!("no dragging file or directory detected"); - return Ok(()); - }; + let idata_obj = pdataobj.ok()?; let config = FORMATETC { cfFormat: CF_HDROP.0, ptd: std::ptr::null_mut() as _, @@ -905,7 +902,7 @@ impl IDropTarget_Impl for WindowsDragDropHandler_Impl { fn Drop( &self, - _pdataobj: Option<&IDataObject>, + _pdataobj: windows::core::Ref, _grfkeystate: MODIFIERKEYS_FLAGS, pt: &POINTL, _pdweffect: *mut DROPEFFECT,