Skip to content

Commit 12f293f

Browse files
committed
Update 2.0.1 - See changelog.txt for details
1 parent 5e972a6 commit 12f293f

File tree

13 files changed

+42
-27
lines changed

13 files changed

+42
-27
lines changed

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ StreamLight is a fork of [Moonlight](https://github.com/moonlight-stream/moonlig
1414

1515
StreamLight is currently available for **Windows only**.
1616

17-
## ✨ What's New in Version 2.0.0 - "The Library Update" (21/03/2026)
17+
## ✨ What's New in Version 2.0.1 - "The Sort Fix" (21/03/2026)
18+
19+
### 🔧 Improvements
20+
* **App list sort order fixed**: Desktop now always appears first, Steam Big Picture second, then all other apps in alphabetical order — the previous implementation was being overridden by the app model's insertion logic
21+
22+
### Previously in 2.0.0 - "The Library Update"
1823

1924
### 🚀 New Features
2025
* **New FoggyBytes icon** — a new app icon visually unifies StreamLight and StreamTweak across the FoggyBytes suite
@@ -24,9 +29,6 @@ StreamLight is currently available for **Windows only**.
2429
### 🎨 UI Redesign
2530
* **Unified visual identity**: the full StreamLight UI has been revised to match StreamTweak's design language — color palette, spacing, and component styling now align across both apps for a seamless paired-app experience
2631

27-
### 🔧 Improvements
28-
* **App list sort order**: Desktop always appears first, Steam Big Picture second, then all other apps in alphabetical order
29-
3032
> StreamTweak 5.0.0 or later is required on the host PC for store badges to appear.
3133
3234
## 🛠️ Differences from Upstream Moonlight

StreamLight.iss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
; =====================================================
2-
; StreamLight v2.0.0 - Installer
2+
; StreamLight v2.0.1 - Installer
33
; A Moonlight fork with StreamTweak integration
44
; =====================================================
55
#define AppName "StreamLight"
6-
#define AppVersion "2.0.0"
6+
#define AppVersion "2.0.1"
77
#define AppPublisher "FoggyBytes"
88
#define AppURL "https://github.com/FoggyBytes/StreamLight"
99
#define AppExeName "StreamLight.exe"

app/app.pro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ unix:!macx: {
504504
INSTALLS += target desktop icons appstream
505505
}
506506
win32 {
507-
RC_ICONS = moonlight.ico
507+
RC_ICONS = streamlight.ico
508508
QMAKE_TARGET_COMPANY = FoggyBytes
509509
QMAKE_TARGET_DESCRIPTION = StreamLight - A Moonlight Fork
510510
QMAKE_TARGET_PRODUCT = StreamLight

app/gui/AppView.qml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ CenteredGridView {
4444
if (store === "Ubisoft Connect") return "qrc:/res/store_ubisoft.svg"
4545
if (store === "Xbox") return "qrc:/res/store_xbox.svg"
4646
if (store === "Battle.net") return "qrc:/res/store_battlenet.svg"
47+
if (store === "EA App") return "qrc:/res/store_ea.svg"
4748
return ""
4849
}
4950

app/gui/appmodel.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,17 @@ void AppModel::updateAppList(QVector<NvApp> newList)
177177
}
178178
}
179179

180+
auto appOrder = [](const QString& name) -> int {
181+
if (name.compare("Desktop", Qt::CaseInsensitive) == 0) return 0;
182+
if (name.compare("Steam Big Picture", Qt::CaseInsensitive) == 0) return 1;
183+
return 2;
184+
};
185+
180186
// Process additions now
181187
for (const NvApp& newApp : std::as_const(newVisibleList)) {
182188
int insertionIndex = m_VisibleApps.size();
183189
bool found = false;
190+
int ob = appOrder(newApp.name);
184191

185192
for (int i = 0; i < m_VisibleApps.count(); i++) {
186193
const NvApp& existingApp = m_VisibleApps.at(i);
@@ -189,9 +196,12 @@ void AppModel::updateAppList(QVector<NvApp> newList)
189196
found = true;
190197
break;
191198
}
192-
else if (existingApp.name.toLower() > newApp.name.toLower()) {
193-
insertionIndex = i;
194-
break;
199+
else {
200+
int oa = appOrder(existingApp.name);
201+
if (oa != ob ? ob < oa : existingApp.name.toLower() > newApp.name.toLower()) {
202+
insertionIndex = i;
203+
break;
204+
}
195205
}
196206
}
197207

app/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,7 @@ int main(int argc, char *argv[])
859859
#ifndef Q_OS_DARWIN
860860
// Set the window icon except on macOS where we want to keep the
861861
// modified macOS 11 style rounded corner icon.
862-
app.setWindowIcon(QIcon(":/res/moonlight.svg"));
862+
app.setWindowIcon(QIcon(":/streamlight.ico"));
863863
#endif
864864

865865
// This is necessary to show our icon correctly on Wayland

app/res/moonlight.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

app/res/store_ea.svg

Lines changed: 1 addition & 0 deletions
Loading

app/resources.qrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<file>res/settings.svg</file>
1313
<file>res/arrow_left.svg</file>
1414
<file>res/question_mark.svg</file>
15-
<file>res/moonlight.svg</file>
15+
<file>streamlight.ico</file>
1616
<file>res/update.svg</file>
1717
<file>res/baseline-help_outline-24px.svg</file>
1818
<file>res/baseline-error_outline-24px.svg</file>
@@ -24,6 +24,7 @@
2424
<file>res/store_ubisoft.svg</file>
2525
<file>res/store_xbox.svg</file>
2626
<file>res/store_battlenet.svg</file>
27+
<file>res/store_ea.svg</file>
2728
</qresource>
2829
<qresource prefix="/data">
2930
<file alias="gamecontrollerdb.txt">SDL_GameControllerDB/gamecontrollerdb.txt</file>

app/streaming/session.cpp

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#include <QtEndian>
3535
#include <QCoreApplication>
3636
#include <QThreadPool>
37-
#include <QSvgRenderer>
3837
#include <QPainter>
3938
#include <QImage>
4039
#include <QGuiApplication>
@@ -1877,18 +1876,14 @@ void Session::exec()
18771876

18781877
m_InputHandler->setWindow(m_Window);
18791878

1880-
QSvgRenderer svgIconRenderer(QString(":/res/moonlight.svg"));
1881-
QImage svgImage(ICON_SIZE, ICON_SIZE, QImage::Format_RGBA8888);
1882-
svgImage.fill(0);
1883-
1884-
QPainter svgPainter(&svgImage);
1885-
svgIconRenderer.render(&svgPainter);
1886-
SDL_Surface* iconSurface = SDL_CreateRGBSurfaceWithFormatFrom((void*)svgImage.constBits(),
1887-
svgImage.width(),
1888-
svgImage.height(),
1889-
32,
1890-
4 * svgImage.width(),
1891-
SDL_PIXELFORMAT_RGBA32);
1879+
QImage iconImage = QIcon(":/streamlight.ico").pixmap(ICON_SIZE, ICON_SIZE).toImage().convertToFormat(QImage::Format_RGBA8888);
1880+
SDL_Surface* iconSurface = iconImage.isNull() ? nullptr :
1881+
SDL_CreateRGBSurfaceWithFormatFrom((void*)iconImage.constBits(),
1882+
iconImage.width(),
1883+
iconImage.height(),
1884+
32,
1885+
4 * iconImage.width(),
1886+
SDL_PIXELFORMAT_RGBA32);
18921887
#ifndef Q_OS_DARWIN
18931888
// Other platforms seem to preserve our Qt icon when creating a new window.
18941889
if (iconSurface != nullptr) {

0 commit comments

Comments
 (0)