Skip to content

Commit 502265f

Browse files
committed
Fix macOS bundle ID mismatch and improve Windows telnet handler
registration
1 parent 733cf1a commit 502265f

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/mudlet.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
#include <QApplication>
6666
#include <QtUiTools/quiloader.h>
6767
#include <QDesktopServices>
68+
#include <QDir>
6869
#include <QFile>
6970
#include <QFileDialog>
7071
#include <QJsonDocument>
@@ -1384,9 +1385,9 @@ QString mudlet::addProfile(const QString& host, const int port, const QString& l
13841385
bool mudlet::mudletIsDefault()
13851386
{
13861387
#if defined(Q_OS_WINDOWS)
1387-
QSettings settings(qsl("HKEY_CURRENT_USER\\Software\\Classes\\telnet"), QSettings::NativeFormat);
1388-
QString defaultCommand = settings.value(qsl("."), QString()).toString();
1389-
return defaultCommand.contains(qApp->applicationFilePath(), Qt::CaseInsensitive);
1388+
QSettings settings(qsl("HKEY_CURRENT_USER\\Software\\Classes\\telnet\\shell\\open\\command"), QSettings::NativeFormat);
1389+
QString command = settings.value(qsl("."), QString()).toString();
1390+
return command.contains(qApp->applicationFilePath(), Qt::CaseInsensitive);
13901391
#elif defined(Q_OS_MACOS)
13911392
// On macOS, check if Mudlet is the default handler for telnet:// URLs
13921393
CFStringRef telnetScheme = CFSTR("telnet");
@@ -1396,7 +1397,7 @@ bool mudlet::mudletIsDefault()
13961397
return false;
13971398
}
13981399

1399-
bool isDefault = (coreMacOS::CFStringCompare(defaultHandler, CFSTR("org.mudlet.Mudlet"), 0) == coreMacOS::kCFCompareEqualTo);
1400+
bool isDefault = (coreMacOS::CFStringCompare(defaultHandler, CFSTR("org.mudlet.mudlet"), 0) == coreMacOS::kCFCompareEqualTo);
14001401
coreMacOS::CFRelease(defaultHandler);
14011402

14021403
return isDefault;
@@ -1451,8 +1452,10 @@ void mudlet::setMudletAsDefault()
14511452
{
14521453
#if defined(Q_OS_WINDOWS)
14531454
QSettings settings(qsl("HKEY_CURRENT_USER\\Software\\Classes\\telnet"), QSettings::NativeFormat);
1454-
settings.setValue(qsl("."), qApp->applicationFilePath());
1455-
settings.setValue(qsl("shell\\open\\command\\."), qApp->applicationFilePath() + qsl(" \"%1\""));
1455+
settings.setValue(qsl("."), qsl("URL:Telnet Protocol"));
1456+
settings.setValue(qsl("URL Protocol"), qsl(""));
1457+
QString command = qsl("\"%1\" \"%2\"").arg(QDir::toNativeSeparators(qApp->applicationFilePath()), qsl("%1"));
1458+
settings.setValue(qsl("shell\\open\\command\\."), command);
14561459
QMessageBox::information(this, tr("Default Client"), tr("Mudlet has been set as your default Telnet client."));
14571460
#elif defined(Q_OS_MACOS)
14581461
// On macOS, register Mudlet as the default handler for telnet:// URLs

0 commit comments

Comments
 (0)