diff --git a/ChangeLog b/ChangeLog index 8a4e4d2bc..59eca2dd3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -82,6 +82,7 @@ Enhancements: - #7437 Show message box explaining why settings are read-only - #7438 Compare result of `clickedButton` instead of `exec` - #7440 Fixed light logo filename on about screen +- #7441 Share file line logic between logger and message box # 1.14.6 diff --git a/src/lib/gui/Logger.cpp b/src/lib/gui/Logger.cpp index 76bb2547b..f61f4ec09 100644 --- a/src/lib/gui/Logger.cpp +++ b/src/lib/gui/Logger.cpp @@ -40,13 +40,6 @@ const auto kForceDebugMessages = QStringList{ Logger Logger::s_instance; -QString fileLine(const QMessageLogContext &context) { - if (!context.file) { - return ""; - } - return QString("%1:%2").arg(context.file).arg(context.line); -} - QString printLine( FILE *out, const QString &type, const QString &message, const QString &fileLine = "") { @@ -97,8 +90,7 @@ void Logger::logVerbose(const QString &message) const { } void Logger::handleMessage( - const QtMsgType type, const QMessageLogContext &context, - const QString &message) { + const QtMsgType type, const QString &fileLine, const QString &message) { auto mutatedType = type; if (kForceDebugMessages.contains(message)) { @@ -131,7 +123,7 @@ void Logger::handleMessage( break; } - const auto logLine = printLine(out, typeString, message, fileLine(context)); + const auto logLine = printLine(out, typeString, message, fileLine); emit newLine(logLine); } diff --git a/src/lib/gui/Logger.h b/src/lib/gui/Logger.h index bf6d5312b..dc1bab89d 100644 --- a/src/lib/gui/Logger.h +++ b/src/lib/gui/Logger.h @@ -35,8 +35,7 @@ public: void loadEnvVars(); void handleMessage( - const QtMsgType type, const QMessageLogContext &context, - const QString &message); + const QtMsgType type, const QString &fileLine, const QString &message); void logVerbose(const QString &message) const; signals: diff --git a/src/lib/gui/messages.cpp b/src/lib/gui/messages.cpp index 4ad6ac960..d0066fd7f 100644 --- a/src/lib/gui/messages.cpp +++ b/src/lib/gui/messages.cpp @@ -50,9 +50,7 @@ void raiseCriticalDialog() { } void showErrorDialog( - const QString &message, const QMessageLogContext &context, QtMsgType type) { - auto filename = QFileInfo(context.file).fileName(); - auto contextString = QString("%1:%2").arg(filename).arg(context.line); + const QString &message, const QString &fileLine, QtMsgType type) { auto title = type == QtFatalMsg ? "Fatal error" : "Critical error"; QString text; @@ -75,8 +73,7 @@ void showErrorDialog( } const QString version = QString::fromStdString(synergy::version()); - text += - QString("
v%1\n%2\n%3
").arg(version, message, contextString); + text += QString("
v%1\n%2\n%3
").arg(version, message, fileLine); if (type == QtFatalMsg) { // create a blocking message box for fatal errors, as we want to wait @@ -109,13 +106,21 @@ void showErrorDialog( } } +QString fileLine(const QMessageLogContext &context) { + if (!context.file) { + return ""; + } + return QString("%1:%2").arg(context.file).arg(context.line); +} + void messageHandler( QtMsgType type, const QMessageLogContext &context, const QString &message) { - Logger::instance().handleMessage(type, context, message); + const auto fileLine = messages::fileLine(context); + Logger::instance().handleMessage(type, fileLine, message); if (type == QtFatalMsg || type == QtCriticalMsg) { - showErrorDialog(message, context, type); + showErrorDialog(message, fileLine, type); } if (type == QtFatalMsg) { diff --git a/src/test/unittests/gui/LoggerTests.cpp b/src/test/unittests/gui/LoggerTests.cpp index a572e5c86..51c6a158e 100644 --- a/src/test/unittests/gui/LoggerTests.cpp +++ b/src/test/unittests/gui/LoggerTests.cpp @@ -34,7 +34,7 @@ TEST(LoggerTests, handleMessage_withDebugEnvVarOn_emitsNewLine) { qputenv("SYNERGY_GUI_DEBUG", "true"); logger.loadEnvVars(); - logger.handleMessage(QtDebugMsg, QMessageLogContext(), "test"); + logger.handleMessage(QtDebugMsg, "stub", "test"); EXPECT_THAT(newLineEmitted, HasSubstr("test")); @@ -50,7 +50,7 @@ TEST(LoggerTests, handleMessage_withDebugEnvVarOff_doesNotEmitNewLine) { qputenv("SYNERGY_GUI_DEBUG", "false"); logger.loadEnvVars(); - logger.handleMessage(QtDebugMsg, QMessageLogContext(), "test"); + logger.handleMessage(QtDebugMsg, "stub", "test"); EXPECT_FALSE(newLineEmitted);