Desktop: Focus app window when loading a document (#4124)

This commit is contained in:
Timon 2026-05-08 15:00:20 +00:00 committed by GitHub
parent 9d876ab27d
commit d97fe835b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 23 additions and 0 deletions

View File

@ -368,6 +368,11 @@ impl App {
window.start_drag();
}
}
DesktopFrontendMessage::WindowFocus => {
if let Some(window) = &self.window {
window.focus();
}
}
DesktopFrontendMessage::WindowHide => {
if let Some(window) = &self.window {
window.hide();

View File

@ -140,6 +140,11 @@ impl Window {
let _ = self.winit_window.drag_window();
}
pub(crate) fn focus(&self) {
self.winit_window.set_minimized(false);
self.winit_window.focus_window();
}
pub(crate) fn hide(&self) {
self.native_handle.hide();
}

View File

@ -139,6 +139,9 @@ pub(super) fn intercept_frontend_message(dispatcher: &mut DesktopWrapperMessageD
FrontendMessage::WindowDrag => {
dispatcher.respond(DesktopFrontendMessage::WindowDrag);
}
FrontendMessage::WindowFocus => {
dispatcher.respond(DesktopFrontendMessage::WindowFocus);
}
FrontendMessage::WindowHide => {
dispatcher.respond(DesktopFrontendMessage::WindowHide);
}

View File

@ -72,6 +72,7 @@ pub enum DesktopFrontendMessage {
WindowMaximize,
WindowFullscreen,
WindowDrag,
WindowFocus,
WindowHide,
WindowHideOthers,
WindowShowAll,

View File

@ -11,6 +11,7 @@ pub enum AppWindowMessage {
Maximize,
Fullscreen,
Drag,
Focus,
Hide,
HideOthers,
ShowAll,

View File

@ -36,6 +36,10 @@ impl MessageHandler<AppWindowMessage, ()> for AppWindowMessageHandler {
#[cfg(not(target_family = "wasm"))]
responses.add(FrontendMessage::WindowDrag);
}
AppWindowMessage::Focus => {
#[cfg(not(target_family = "wasm"))]
responses.add(FrontendMessage::WindowFocus);
}
AppWindowMessage::Hide => {
#[cfg(not(target_family = "wasm"))]
responses.add(FrontendMessage::WindowHide);

View File

@ -362,6 +362,8 @@ pub enum FrontendMessage {
#[cfg(not(target_family = "wasm"))]
WindowHide,
#[cfg(not(target_family = "wasm"))]
WindowFocus,
#[cfg(not(target_family = "wasm"))]
WindowHideOthers,
#[cfg(not(target_family = "wasm"))]
WindowShowAll,

View File

@ -819,6 +819,8 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
// Load the document into the portfolio so it opens in the editor
self.load_document(document, document_id, responses);
responses.add(AppWindowMessage::Focus);
}
PortfolioMessage::OpenImage { name, image } => {
// `NewDocumentWithName`'s handler routes empty/None-equivalent names through `resolve_document_name` which assigns the next available "Untitled Document {N}".