0f6c3faf6a
- Update the main window close behavior to use `windowManager.destroy()` for proper app termination. - Enhance cursor management in `SkinCursorsGate` to prevent stale cursor states during rapid enter/exit events. - Improve sub-window control channel registration to ensure readiness before main window updates. - Simplify the drag logic for sub-windows, ensuring only the dragged window moves independently. - Add diagnostics for mouse events in macOS to aid in debugging drag behavior. - Refactor docking logic to ensure proper vertical-only docking behavior and improve test coverage for window interactions. - Update tests to reflect changes in docking behavior and ensure accurate movement tracking for main and sub-windows. Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
3.5 KiB
3.5 KiB
TODO
- The EQ and playlist windows should be "dockable" to each other. Dragging, for example, the playlist window to the bottom of the main window would "dock" the playlist window to the bottom window, at which point moving the main window would also move the playlist window. This should allow you to dock all the main windows (main, playlist, equalizer) atop each other, or any two of the windows should be dockable to each other. If, for example, the playlist window is docked between the main and equalizer windows, then the playlist window is closed, the "docking" should be severed for the windows that are no longer touching. The current window-snapping feature should be retained, as it helps you align the windows with each other. Moving docked windows is accomplished by moving the window on the "top" of the stack. So, if the playlist is docked below the main window, moving the playlist window will undock it from the main window, but moving the main window will move both windows together. Toggling window-shade mode on a docked window will reposition windows below it to keep them pinned to the bottom. Verify all of this behavior against the original source.
- There should be a preferences window that matches the original application's look/feel/layout. The options can be no-op stubs, except for the skins.
- Skins should be importable from .wsz files. Imported skins should no longer rely on the original file and should be available in the skins list.
- Cursors should be supported. If a skin includes a custom cursor, we should change the cursor to the custom version from the skin. This includes the original cursors from the default skin.
- The "classic" winamp skin code should be a project-level package. This will allow us to, later, add a "modern" winamp skin codepath. The app itself should handle logic, but skin-related items should be abstracted into its own package (including any tooling that was developed to assist in debugging the skin loading/functionality).
- The playlist window should be resizable if you drag from the bottom right corner.
- The presets button on the equalizer doesn't open the presets window as it should.
- The playlist window has 5 action buttons along the bottom that are currently implemented incorrectly. Right now, the sprites are drawn full-size, but they should be clipped. However, when you tap and hold on the button, it should open the full sprite sheet as a pop-up. Releasing the cursor on any of the items should trigger the action. Verify this against the original source.
- Right-clicking the dock icon should give us the same window menu options for the main window, equalizer, and playlist window visibility. The window menu currently lacks an option for the main window, so it should be added. Closing all windows shouldn't exit the program.
New Items
- BUG: I can no longer move the main window unless it is in window-shade mode or until I've toggled window shade mode on/off.
- BUG: The main screen's un-window-shade button is not wired up.
- BUG: The windows take a long time to toggle window shade mode on/off.
- BUG: The main screen has 4 buttons on the top-right: the first one is currently bugged with the incorrect sprite, minimize (which doesn't work), window shade (works), and close (which doesn't work).
- BUG: Always-on-top doesn't apply to all windows
- BUG: Equalizer and playlist windows don't scale with the main window when the UI scale changes
- BUG: The custom cursor support is bugged; the cursor changes, but it's glitched.