Skip to content

[desktop_multi_window] Subwindow does not repaint after regaining focus in dual-monitor setup on macOS #412

@seungjunyong

Description

@seungjunyong

A clear and concise description of what the bug is:

When using the desktop_multi_window plugin on macOS with a dual monitor setup, a subwindow that loses and then regains focus does not repaint its content. This leads to UI freeze or invisible input, until the window is manually resized or toggled fullscreen.

This issue does not occur when using a single monitor.

Reproduce Steps

Steps to reproduce the behavior:
1. Launch a Flutter application using the desktop_multi_window plugin.
2. Create a subwindow (NSWindow with its own FlutterViewController).
3. Move the subwindow to the secondary monitor.
4. Switch focus to another window or app.
5. Return focus to the subwindow.
6. Type into a text field — the input does not show.
7. Resize the subwindow manually.
8. The typed text suddenly appears (indicating delayed repaint).

Expected behavior

The subwindow should repaint immediately upon regaining focus, without requiring manual resizing or fullscreen toggling. Input and UI updates should be visible in real time.

(No screenshots needed — reproducible via text field input.)

Version (please complete the following information):
• Flutter Version: v3.29.2
• OS: macOS 15.3.2
• plugin: desktop_multi_window: 0.2.1
• Architecture: Apple Silicon (M1 Max)

This issue is reproducible only in a dual-monitor setup and is cleared when switching to fullscreen and back, or turning off one monitor.

Note:
The same application built with identical code runs correctly on Windows without this issue.
This suggests the problem is specific to the macOS implementation of desktop_multi_window or its interaction with macOS windowing and rendering systems.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions