From b345495178ebaede818b8d9ef65f7aa3eae344f9 Mon Sep 17 00:00:00 2001 From: Collin Kidder Date: Sun, 15 Nov 2020 01:30:13 -0800 Subject: [PATCH] Fix compilation on Windows, fix glitch that could cause windows to appear off the actual screen with no way to get them back. --- connections/connectionwindow.cpp | 2 +- dbc/dbcmaineditor.cpp | 2 +- dbc/dbcmessageeditor.cpp | 2 +- dbc/dbcnodeeditor.cpp | 2 +- dbc/dbcsignaleditor.cpp | 2 +- framefileio.cpp | 4 +++- frameplaybackwindow.cpp | 2 +- helpwindow.cpp | 3 ++- mainwindow.cpp | 3 ++- re/dbccomparatorwindow.cpp | 2 +- re/discretestatewindow.cpp | 2 +- re/filecomparatorwindow.cpp | 2 +- re/flowviewwindow.cpp | 2 +- re/frameinfowindow.cpp | 2 +- re/graphingwindow.cpp | 2 +- re/isotp_interpreterwindow.cpp | 2 +- re/rangestatewindow.cpp | 2 +- re/sniffer/snifferwindow.cpp | 3 ++- re/temporalgraphwindow.cpp | 2 +- scriptingwindow.cpp | 2 +- utility.h | 16 ++++++++++++++++ 21 files changed, 41 insertions(+), 20 deletions(-) diff --git a/connections/connectionwindow.cpp b/connections/connectionwindow.cpp index e63e72a..26e4c70 100644 --- a/connections/connectionwindow.cpp +++ b/connections/connectionwindow.cpp @@ -150,7 +150,7 @@ void ConnectionWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("ConnWindow/WindowSize", QSize(956, 665)).toSize()); - move(settings.value("ConnWindow/WindowPos", QPoint(100, 100)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("ConnWindow/WindowPos", QPoint(100, 100)).toPoint())); } } diff --git a/dbc/dbcmaineditor.cpp b/dbc/dbcmaineditor.cpp index 2aa5825..967a9f2 100644 --- a/dbc/dbcmaineditor.cpp +++ b/dbc/dbcmaineditor.cpp @@ -133,7 +133,7 @@ void DBCMainEditor::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("DBCMainEditor/WindowSize", QSize(1103, 571)).toSize()); - move(settings.value("DBCMainEditor/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("DBCMainEditor/WindowPos", QPoint(50, 50)).toPoint())); } } diff --git a/dbc/dbcmessageeditor.cpp b/dbc/dbcmessageeditor.cpp index 2366696..6502f44 100644 --- a/dbc/dbcmessageeditor.cpp +++ b/dbc/dbcmessageeditor.cpp @@ -187,7 +187,7 @@ void DBCMessageEditor::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("DBCMessageEditor/WindowSize", QSize(340, 400)).toSize()); - move(settings.value("DBCMessageEditor/WindowPos", QPoint(100, 100)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("DBCMessageEditor/WindowPos", QPoint(100, 100)).toPoint())); } } diff --git a/dbc/dbcnodeeditor.cpp b/dbc/dbcnodeeditor.cpp index 0f25543..7a94790 100644 --- a/dbc/dbcnodeeditor.cpp +++ b/dbc/dbcnodeeditor.cpp @@ -81,7 +81,7 @@ void DBCNodeEditor::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("DBCNodeEditor/WindowSize", QSize(312, 128)).toSize()); - move(settings.value("DBCNodeEditor/WindowPos", QPoint(100, 100)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("DBCNodeEditor/WindowPos", QPoint(100, 100)).toPoint())); } } diff --git a/dbc/dbcsignaleditor.cpp b/dbc/dbcsignaleditor.cpp index ce69871..c02fdac 100644 --- a/dbc/dbcsignaleditor.cpp +++ b/dbc/dbcsignaleditor.cpp @@ -280,7 +280,7 @@ void DBCSignalEditor::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("DBCSignalEditor/WindowSize", QSize(1000, 600)).toSize()); - move(settings.value("DBCSignalEditor/WindowPos", QPoint(100, 100)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("DBCSignalEditor/WindowPos", QPoint(100, 100)).toPoint())); } } diff --git a/framefileio.cpp b/framefileio.cpp index 84b563b..0d93524 100644 --- a/framefileio.cpp +++ b/framefileio.cpp @@ -15,6 +15,7 @@ QFile FrameFileIO::continuousFile; struct TeslaAPCANRecord { + #pragma pack(push, 1) int64_t sec; int32_t nano; int32_t padding1; @@ -22,7 +23,8 @@ struct TeslaAPCANRecord uint8_t ctr; uint8_t data[8]; uint8_t padding2; -} __attribute__((packed)); + #pragma pack(pop) +}; FrameFileIO::FrameFileIO() { diff --git a/frameplaybackwindow.cpp b/frameplaybackwindow.cpp index 85fd517..5cef16f 100644 --- a/frameplaybackwindow.cpp +++ b/frameplaybackwindow.cpp @@ -143,7 +143,7 @@ void FramePlaybackWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("Playback/WindowSize", QSize(742, 606)).toSize()); - move(settings.value("Playback/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("Playback/WindowPos", QPoint(50, 50)).toPoint())); } if (settings.value("Playback/AutoLoop", false).toBool()) { diff --git a/helpwindow.cpp b/helpwindow.cpp index 386948b..056ef32 100644 --- a/helpwindow.cpp +++ b/helpwindow.cpp @@ -1,4 +1,5 @@ #include +#include "utility.h" #include "helpwindow.h" #include "ui_helpwindow.h" @@ -32,7 +33,7 @@ void HelpWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("HelpViewer/WindowSize", QSize(600, 700)).toSize()); - move(settings.value("HelpViewer/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("HelpViewer/WindowPos", QPoint(50, 50)).toPoint())); } } diff --git a/mainwindow.cpp b/mainwindow.cpp index dc4ab13..dd5c091 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -324,7 +324,8 @@ void MainWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("Main/WindowSize", QSize(800, 750)).toSize()); - move(settings.value("Main/WindowPos", QPoint(100, 100)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("Main/WindowPos", QPoint(100, 100)).toPoint())); + ui->canFramesView->setColumnWidth(0, settings.value("Main/TimeColumn", 150).toUInt()); //time stamp ui->canFramesView->setColumnWidth(1, settings.value("Main/IDColumn", 70).toUInt()); //frame ID ui->canFramesView->setColumnWidth(2, settings.value("Main/ExtColumn", 40).toUInt()); //extended diff --git a/re/dbccomparatorwindow.cpp b/re/dbccomparatorwindow.cpp index 57d4c1e..f7b27fd 100644 --- a/re/dbccomparatorwindow.cpp +++ b/re/dbccomparatorwindow.cpp @@ -66,7 +66,7 @@ void DBCComparatorWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("DBCComparator/WindowSize", QSize(720, 631)).toSize()); - move(settings.value("DBCComparator/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("DBCComparator/WindowPos", QPoint(50, 50)).toPoint())); } } diff --git a/re/discretestatewindow.cpp b/re/discretestatewindow.cpp index a4a0ba3..0844e40 100644 --- a/re/discretestatewindow.cpp +++ b/re/discretestatewindow.cpp @@ -198,7 +198,7 @@ void DiscreteStateWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("DiscreteState/WindowSize", QSize(400, 300)).toSize()); - move(settings.value("DiscreteState/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("DiscreteState/WindowPos", QPoint(50, 50)).toPoint())); } } diff --git a/re/filecomparatorwindow.cpp b/re/filecomparatorwindow.cpp index a159146..4c93be7 100644 --- a/re/filecomparatorwindow.cpp +++ b/re/filecomparatorwindow.cpp @@ -64,7 +64,7 @@ void FileComparatorWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("FileComparator/WindowSize", QSize(720, 631)).toSize()); - move(settings.value("FileComparator/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("FileComparator/WindowPos", QPoint(50, 50)).toPoint())); } } diff --git a/re/flowviewwindow.cpp b/re/flowviewwindow.cpp index 31e4010..5c60202 100644 --- a/re/flowviewwindow.cpp +++ b/re/flowviewwindow.cpp @@ -158,7 +158,7 @@ void FlowViewWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("FlowView/WindowSize", QSize(1078, 621)).toSize()); - move(settings.value("FlowView/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("FlowView/WindowPos", QPoint(50, 50)).toPoint())); } if (settings.value("FlowView/AutoRef", false).toBool()) diff --git a/re/frameinfowindow.cpp b/re/frameinfowindow.cpp index 03ab8e6..d97b2d9 100644 --- a/re/frameinfowindow.cpp +++ b/re/frameinfowindow.cpp @@ -170,7 +170,7 @@ void FrameInfoWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("FrameInfo/WindowSize", QSize(794, 694)).toSize()); - move(settings.value("FrameInfo/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("FrameInfo/WindowPos", QPoint(50, 50)).toPoint())); } useOpenGL = settings.value("Main/UseOpenGL", false).toBool(); diff --git a/re/graphingwindow.cpp b/re/graphingwindow.cpp index 8849183..82be855 100644 --- a/re/graphingwindow.cpp +++ b/re/graphingwindow.cpp @@ -125,7 +125,7 @@ void GraphingWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("Graphing/WindowSize", QSize(800, 600)).toSize()); - move(settings.value("Graphing/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("Graphing/WindowPos", QPoint(50, 50)).toPoint())); } secondsMode = settings.value("Main/TimeSeconds", false).toBool(); useOpenGL = settings.value("Main/UseOpenGL", false).toBool(); diff --git a/re/isotp_interpreterwindow.cpp b/re/isotp_interpreterwindow.cpp index 9d5e440..9d23399 100644 --- a/re/isotp_interpreterwindow.cpp +++ b/re/isotp_interpreterwindow.cpp @@ -112,7 +112,7 @@ void ISOTP_InterpreterWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("ISODecodeWindow/WindowSize", this->size()).toSize()); - move(settings.value("ISODecodeWindow/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("ISODecodeWindow/WindowPos", QPoint(50, 50)).toPoint())); } } diff --git a/re/rangestatewindow.cpp b/re/rangestatewindow.cpp index 498ff20..9e62021 100644 --- a/re/rangestatewindow.cpp +++ b/re/rangestatewindow.cpp @@ -126,7 +126,7 @@ void RangeStateWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("RangeStateView/WindowSize", QSize(765, 615)).toSize()); - move(settings.value("RangeStateView/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("RangeStateView/WindowPos", QPoint(50, 50)).toPoint())); } } diff --git a/re/sniffer/snifferwindow.cpp b/re/sniffer/snifferwindow.cpp index 1c7a729..29faed0 100644 --- a/re/sniffer/snifferwindow.cpp +++ b/re/sniffer/snifferwindow.cpp @@ -6,6 +6,7 @@ #include "helpwindow.h" #include "connections/canconmanager.h" #include "SnifferDelegate.h" +#include "utility.h" SnifferWindow::SnifferWindow(QWidget *parent) : QDialog(parent), @@ -73,7 +74,7 @@ void SnifferWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("Sniffer/WindowSize", QSize(1100, 750)).toSize()); - move(settings.value("Sniffer/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("Sniffer/WindowPos", QPoint(50, 50)).toPoint())); ui->treeView->setColumnWidth(0, settings.value("Sniffer/DeltaColumn", 110).toUInt()); ui->treeView->setColumnWidth(1, settings.value("Sniffer/IDColumn", 70).toUInt()); ui->treeView->setColumnWidth(2, settings.value("Sniffer/Data0Column", 92).toUInt()); diff --git a/re/temporalgraphwindow.cpp b/re/temporalgraphwindow.cpp index 2b3ff4c..26319c6 100644 --- a/re/temporalgraphwindow.cpp +++ b/re/temporalgraphwindow.cpp @@ -91,7 +91,7 @@ void TemporalGraphWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("Temporal/WindowSize", QSize(800, 600)).toSize()); - move(settings.value("Temporal/WindowPos", QPoint(50, 50)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("Temporal/WindowPos", QPoint(50, 50)).toPoint())); } useOpenGL = settings.value("Main/UseOpenGL", false).toBool(); } diff --git a/scriptingwindow.cpp b/scriptingwindow.cpp index 46ffa2b..101bf6b 100644 --- a/scriptingwindow.cpp +++ b/scriptingwindow.cpp @@ -126,7 +126,7 @@ void ScriptingWindow::readSettings() if (settings.value("Main/SaveRestorePositions", false).toBool()) { resize(settings.value("ScriptingWindow/WindowSize", QSize(860, 650)).toSize()); - move(settings.value("ScriptingWindow/WindowPos", QPoint(100, 100)).toPoint()); + move(Utility::constrainedWindowPos(settings.value("ScriptingWindow/WindowPos", QPoint(100, 100)).toPoint())); } } diff --git a/utility.h b/utility.h index ab2d44d..fd369e3 100644 --- a/utility.h +++ b/utility.h @@ -6,6 +6,9 @@ #include #include #include +#include +#include +#include class Utility { @@ -16,6 +19,19 @@ public: static bool sysTimeMode; static QString timeFormat; + //determines whether the window position is within any available screens. If it is not we default + //back to 0,0 which is going to be on screen. This fixes a problem where some operating systems would + //otherwise let you put windows on a second monitor, disconnect that monitor, and still put windows on it. + static QPoint constrainedWindowPos(QPoint originalPos) + { + QScreen *screen = QGuiApplication::screenAt(originalPos); + if (!screen) + { + return QPoint(0,0); + } + return originalPos; + } + static QString unQuote(QString inStr) { QStringList temp;