apache / apache/netbeans

[macOS] Mouse cursor and click offset when launching in Full Screen (frame-state="6" conflict)

Open
#9,539 2 comments 0 reactions 0 assignees View on GitHub
kind:bug needs:triage os:macos pending-response UI
Dominant language
Java
Stars
3.1k
Forks
935
Avg merge
2d 3h
Merged PRs (30d)
17

Description

### Apache NetBeans version

Apache NetBeans 30

### What happened

### Description
When closing NetBeans while in macOS native Full Screen mode, the IDE saves an invalid window state (`frame-state="6"`) in the local configuration files. Upon the next launch, a coordinate mapping conflict occurs between the Java Swing/AWT frame management (`Frame.MAXIMIZED_BOTH`) and the macOS Full Screen Space manager. This results in a severe vertical/horizontal mouse coordinate and click offset across the entire UI.

---

### Environment
* **OS:** macOS (Apple Silicon M1/M2/M3)
* **NetBeans Version:** Apache NetBeans 26, 28, 29, 30
* **JDK:** Java 21+

---

### Root Cause Analysis
The issue originates in the window manager persistence file:
`~/Library/Application Support/NetBeans//config/Windows2Local/WindowManager.wswmgr`

1. **Working State (`frame-state="0"`):**
When NetBeans starts with `frame-state="0"`, window coordinates yield properly to macOS window management. Entering Full Screen mode manually works as expected with accurate mouse tracking.

2. **Corrupted State (`frame-state="6"`):**
Closing NetBeans while in macOS Full Screen mode writes `frame-state="6"` (`Frame.MAXIMIZED_BOTH`). On subsequent launches, Swing attempts to apply software-maximized geometry inside the native macOS Space, breaking the UI click matrix.

---

### Steps to Reproduce
1. Open Apache NetBeans on macOS.
2. Enter native macOS Full Screen mode (`Control + Cmd + F`).
3. Quit NetBeans (`Cmd + Q`) while still in Full Screen.
4. Relaunch NetBeans.
5. **Result:** The UI renders, but mouse clicks register with a offset relative to the visual cursor position.

---

### Temporary Workaround
Set the file permissions to read-only on `WindowManager.wswmgr` after ensuring `frame-state="0"` is present:

```bash
chmod 444 "$HOME/Library/Application Support/NetBeans//config/Windows2Local/WindowManager.wswmgr"
```

### Language / Project Type / NetBeans Component

_No response_

### How to reproduce

### Steps to Reproduce
1. Open Apache NetBeans on macOS.
2. Enter native macOS Full Screen mode (`Control + Cmd + F`).
3. Quit NetBeans (`Cmd + Q`) while still in Full Screen.
4. Relaunch NetBeans.
5. **Result:** The UI renders, but mouse clicks register with a offset relative to the visual cursor position.

### Did this work correctly in an earlier version?

Apache NetBeans 26 or earlier

### Operating System

macOS

### JDK

SDK 26

### Apache NetBeans packaging

Apache NetBeans binary zip

### Anything else

### Temporary Workaround
Set the file permissions to read-only on `WindowManager.wswmgr` after ensuring `frame-state="0"` is present:

```bash
chmod 444 "$HOME/Library/Application Support/NetBeans//config/Windows2Local/WindowManager.wswmgr"
```
### Are you willing to submit a pull request?

No

Contributor guide

Open the contributing guide

Research direction

Reproduce the issue on macOS using the listed full-screen and relaunch steps, then inspect the WindowManager.wswmgr file under the NetBeans configuration directory, especially the frame-state value. Done means quitting in native Full Screen no longer causes a cursor or click offset after relaunch, without requiring the read-only workaround.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, macos
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.