@@ -11,9 +11,7 @@
|
||||
|
||||
## 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
|
||||
|
||||
@@ -687,7 +687,9 @@ class _PlSongListPainter extends CustomPainter {
|
||||
final listRight = paintSize.width - 20;
|
||||
final listWidth = listRight - _listLeft;
|
||||
final visibleRows = ((paintSize.height - _rowsLocalTop) / _rowStride)
|
||||
.floor();
|
||||
.floor()
|
||||
.clamp(0, _playlist.length)
|
||||
.toInt();
|
||||
final rowsBottom = _rowsLocalTop + visibleRows * _rowStride;
|
||||
canvas.drawRect(
|
||||
Rect.fromLTWH(_listLeft, 0, listWidth, 3),
|
||||
@@ -771,6 +773,7 @@ class _PlSongListPainter extends CustomPainter {
|
||||
final pledit = skin.image("pledit.bmp")!;
|
||||
final trackH = paintSize.height;
|
||||
const slidH = 18;
|
||||
if (trackH < slidH + _rowsLocalTop) return;
|
||||
final visibleRows = ((trackH - _rowsLocalTop) / _rowStride).floor();
|
||||
final t = _playlist.length - visibleRows;
|
||||
int yp;
|
||||
|
||||
@@ -184,6 +184,12 @@ class _SubWindowRootState extends State<SubWindowRoot> {
|
||||
} else {
|
||||
_windowBounds = newBounds;
|
||||
}
|
||||
if (!(_isEq ? _player.eqShade : _player.plShade)) {
|
||||
_lastNormalSize = Size(
|
||||
width / _player.uiScale,
|
||||
height / _player.uiScale,
|
||||
);
|
||||
}
|
||||
await windowManager.setSize(Size(width, height));
|
||||
await windowManager.setPosition(Offset(x, y));
|
||||
}
|
||||
@@ -260,6 +266,13 @@ class _SubWindowRootState extends State<SubWindowRoot> {
|
||||
} else {
|
||||
_windowBounds = await windowManager.getBounds();
|
||||
}
|
||||
final readyBounds = _windowBounds;
|
||||
if (readyBounds != null && !(_isEq ? _player.eqShade : _player.plShade)) {
|
||||
_lastNormalSize = Size(
|
||||
readyBounds.width / _player.uiScale,
|
||||
readyBounds.height / _player.uiScale,
|
||||
);
|
||||
}
|
||||
_windowReady = true;
|
||||
final controller = await WindowController.fromCurrentEngine();
|
||||
await controller.show();
|
||||
@@ -398,6 +411,12 @@ class _SubWindowRootState extends State<SubWindowRoot> {
|
||||
} else {
|
||||
_windowBounds = nb;
|
||||
}
|
||||
if (!(_isEq ? _player.eqShade : _player.plShade)) {
|
||||
_lastNormalSize = Size(
|
||||
nb.width / _player.uiScale,
|
||||
nb.height / _player.uiScale,
|
||||
);
|
||||
}
|
||||
unawaited(windowManager.setSize(nb.size));
|
||||
unawaited(windowManager.setPosition(nb.topLeft));
|
||||
_reportSubBounds(nb);
|
||||
@@ -409,14 +428,14 @@ class _SubWindowRootState extends State<SubWindowRoot> {
|
||||
final current = _windowBounds?.size;
|
||||
if (current != null) {
|
||||
final width = current.width / _wasScale * useScale;
|
||||
final height = current.height / _wasScale * useScale;
|
||||
final minWidth = _mainSize.width * useScale;
|
||||
final desiredWidth = useShade
|
||||
? width
|
||||
: (width < minWidth ? minWidth : width);
|
||||
final normalHeight = _lastNormalSize?.height ?? _mainSize.height;
|
||||
final desiredHeight = useShade
|
||||
? _shadeSize.height * useScale
|
||||
: (_lastNormalSize?.height ?? height) * useScale;
|
||||
: normalHeight * useScale;
|
||||
return Size(desiredWidth, desiredHeight);
|
||||
}
|
||||
final base = useShade ? _shadeSize : _mainSize;
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 247 247" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g>
|
||||
<path d="M123.5,0L247,123.5L123.5,247L0,123.5L123.5,0Z"/>
|
||||
<path d="M123.5,17L230,123.5L123.5,230L17,123.5L123.5,17Z" style="fill:url(#_Linear1);"/>
|
||||
<path d="M122.5,217L214.984,125.016L122.5,28L27.105,122.895L122.5,217Z" style="fill:url(#_Linear2);"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-213,213,0,123.5,230)"><stop offset="0" style="stop-color:white;stop-opacity:1"/><stop offset="1" style="stop-color:rgb(244,244,244);stop-opacity:1"/></linearGradient>
|
||||
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,189,-189,0,123.5,28)"><stop offset="0" style="stop-color:white;stop-opacity:1"/><stop offset="1" style="stop-color:rgb(244,244,244);stop-opacity:1"/></linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 195 230" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1,0,0,1,-20,-12)">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M53,104L215,12L215,53L176,92L188,96L188,135L20,242L20,193L66,147L53,147L53,104Z"/>
|
||||
<g>
|
||||
<path d="M63,110L205,29L138,89L178,103L30,198L117,110L63,110Z" style="fill:url(#_Linear1);"/>
|
||||
<path d="M205,29L205,49L158,96L138,89L205,29Z" style="fill:url(#_Linear2);"/>
|
||||
<path d="M178,103L178,130L30,225L30,198L178,103Z" style="fill:url(#_Linear3);"/>
|
||||
<path d="M63,110L63,137L90,137L118,109L63,110Z" style="fill:url(#_Linear4);"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M63,110L117,110L31,197L127,106L63,110Z" style="fill:rgb(255,242,222);"/>
|
||||
<path d="M178,103L138,89L170,103.5L136,130L178,103Z" style="fill:rgb(255,242,222);"/>
|
||||
<path d="M63,110L205,29L191.5,41L63,110Z" style="fill:rgb(255,242,222);"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M63,110L63,113L111,116L118,109L63,110Z" style="fill:rgb(237,95,28);"/>
|
||||
<path d="M30,198L178,103L178,111L30,198Z" style="fill:rgb(237,95,28);"/>
|
||||
<path d="M138,89L205,29L144,91.1L138,89Z" style="fill:rgb(237,95,28);"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(36,60,-60,36,114,69)"><stop offset="0" style="stop-color:rgb(255,197,44);stop-opacity:1"/><stop offset="0.5" style="stop-color:rgb(255,242,217);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,197,44);stop-opacity:1"/></linearGradient>
|
||||
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,40,-40,1,197,37)"><stop offset="0" style="stop-color:rgb(255,194,30);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,132,19);stop-opacity:1"/></linearGradient>
|
||||
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(11,18,-18,11,102,152)"><stop offset="0" style="stop-color:rgb(255,182,28);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(235,121,17);stop-opacity:1"/></linearGradient>
|
||||
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-3,26,-26,-3,92,110)"><stop offset="0" style="stop-color:rgb(255,186,29);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,132,19);stop-opacity:1"/></linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"fill" : {
|
||||
"linear-gradient" : [
|
||||
"display-p3:0.87891,0.53516,0.21277,1.00000",
|
||||
"display-p3:0.99072,0.93750,0.81445,1.00000"
|
||||
],
|
||||
"orientation" : {
|
||||
"start" : {
|
||||
"x" : 0.5,
|
||||
"y" : 0
|
||||
},
|
||||
"stop" : {
|
||||
"x" : 0.5,
|
||||
"y" : 0.7
|
||||
}
|
||||
}
|
||||
},
|
||||
"groups" : [
|
||||
{
|
||||
"layers" : [
|
||||
{
|
||||
"glass" : false,
|
||||
"image-name" : "winamp_main.svg",
|
||||
"name" : "winamp_main",
|
||||
"position" : {
|
||||
"scale" : 3.5,
|
||||
"translation-in-points" : [
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"shadow" : {
|
||||
"kind" : "neutral",
|
||||
"opacity" : 0.5
|
||||
},
|
||||
"translucency" : {
|
||||
"enabled" : true,
|
||||
"value" : 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"layers" : [
|
||||
{
|
||||
"glass" : false,
|
||||
"image-name" : "winamp_background.svg",
|
||||
"name" : "winamp_background",
|
||||
"position" : {
|
||||
"scale" : 3.5,
|
||||
"translation-in-points" : [
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"shadow" : {
|
||||
"kind" : "neutral",
|
||||
"opacity" : 0.5
|
||||
},
|
||||
"translucency" : {
|
||||
"enabled" : true,
|
||||
"value" : 0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"supported-platforms" : {
|
||||
"circles" : [
|
||||
"watchOS"
|
||||
],
|
||||
"squares" : "shared"
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"size" : "16x16",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_16.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "16x16",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_32.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "32x32",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_32.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "32x32",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_64.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "128x128",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_128.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "128x128",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_256.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "256x256",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_256.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "256x256",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_512.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "512x512",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_512.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "512x512",
|
||||
"idiom" : "mac",
|
||||
"filename" : "app_icon_1024.png",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 520 B |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"fill" : "automatic",
|
||||
"groups" : [
|
||||
{
|
||||
"layers" : [
|
||||
{
|
||||
"glass" : false,
|
||||
"image-name" : "WinampIcon.png",
|
||||
"name" : "WinampIcon",
|
||||
"position" : {
|
||||
"scale" : 3.5,
|
||||
"translation-in-points" : [
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"shadow" : {
|
||||
"kind" : "neutral",
|
||||
"opacity" : 0.5
|
||||
},
|
||||
"translucency" : {
|
||||
"enabled" : true,
|
||||
"value" : 0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"supported-platforms" : {
|
||||
"circles" : [
|
||||
"watchOS"
|
||||
],
|
||||
"squares" : "shared"
|
||||
}
|
||||
}
|
||||