eliminate some bad old-style casts which hide an obscure error

This commit is contained in:
wmayer
2019-07-21 17:51:29 +02:00
parent 3cc93d1961
commit 53f51db8ae
3 changed files with 28 additions and 22 deletions

View File

@@ -400,7 +400,7 @@ MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags f)
pcReport->setObjectName
(QString::fromLatin1(QT_TRANSLATE_NOOP("QDockWidget","Report view")));
pDockMgr->registerDockWindow("Std_ReportView", pcReport);
ReportOutputObserver* rvObserver = new ReportOutputObserver((QDockWidget*)pcReport->parent());
ReportOutputObserver* rvObserver = new ReportOutputObserver(pcReport);
qApp->installEventFilter(rvObserver);
}

View File

@@ -237,37 +237,43 @@ private:
* user always gets the warnings/errors
*/
ReportOutputObserver::ReportOutputObserver(QDockWidget *parent)
ReportOutputObserver::ReportOutputObserver(ReportOutput *report)
{
this->reportViewParent = parent;
this->reportView = report;
}
ReportOutputObserver::~ReportOutputObserver(){
}
bool ReportOutputObserver::eventFilter(QObject *obj, QEvent *event){
if (event->type() == QEvent::User) {
CustomReportEvent* cr = (CustomReportEvent*) event;
QDockWidget* rv = this->reportViewParent->findChild
<QDockWidget*>(QString::fromLatin1(QT_TRANSLATE_NOOP("QDockWidget","Report view")));
if(cr && rv){
bool ReportOutputObserver::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::User && obj == reportView.data()) {
CustomReportEvent* cr = dynamic_cast<CustomReportEvent*>(event);
if (cr) {
ReportHighlighter::Paragraph msgType = cr->messageType();
if (msgType == ReportHighlighter::Error || msgType == ReportHighlighter::Warning){
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("OutputWindow");
if(group->GetBool("checkShowReportViewOnWarningOrError", true)){
if(!rv->toggleViewAction()->isChecked()){
rv->toggleViewAction()->activate(QAction::Trigger);
if (group->GetBool("checkShowReportViewOnWarningOrError", true)) {
// get the QDockWidget parent of the report view
QDockWidget* dw = nullptr;
QWidget* par = reportView->parentWidget();
while (par) {
dw = qobject_cast<QDockWidget*>(par);
if (dw)
break;
par = par->parentWidget();
}
if (dw && !dw->toggleViewAction()->isChecked()) {
dw->toggleViewAction()->activate(QAction::Trigger);
}
}
}
}
return false; //true would prevent the messages reaching the report view
} else {
// standard event processing
return QObject::eventFilter(obj, event);
}
// standard event processing
return QObject::eventFilter(obj, event);
}
// ----------------------------------------------------------

View File

@@ -201,11 +201,11 @@ class ReportOutputObserver : public QObject
Q_OBJECT
public:
ReportOutputObserver (QDockWidget* parent = 0);
~ReportOutputObserver();
ReportOutputObserver (ReportOutput* view);
bool eventFilter(QObject *obj, QEvent *event);
protected:
QPointer <QDockWidget> reportViewParent;
QPointer <ReportOutput> reportView;
};
} // namespace DockWnd