mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2939 ProgressInfo: Reintroduce process envents, to update the progress dialog durig processing on linux/mac.
Introduced isActive and used this info to block sheduled redraw/display model regen when progress bar is active, to avoid unintended recursive behaviour resulting in crashes.
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
|
||||
#include "cafProgressInfo.h"
|
||||
#include "cafAssert.h"
|
||||
#include "cafProgressState.h"
|
||||
|
||||
#include <QPointer>
|
||||
#include <QProgressDialog>
|
||||
@@ -317,6 +318,13 @@ namespace caf {
|
||||
return progressDialog()->thread() == QThread::currentThread();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool ProgressState::isActive()
|
||||
{
|
||||
return !maxProgressStack().empty();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@@ -426,8 +434,8 @@ namespace caf {
|
||||
progressDialog()->setValue(static_cast<int>(currentTotalProgress()));
|
||||
progressDialog()->setLabelText(currentComposedLabel());
|
||||
|
||||
//QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
||||
if (progressDialog()) progressDialog()->repaint();
|
||||
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
||||
//if (progressDialog()) progressDialog()->repaint();
|
||||
}
|
||||
|
||||
|
||||
@@ -441,8 +449,8 @@ namespace caf {
|
||||
descriptionStack().back() = description;
|
||||
|
||||
progressDialog()->setLabelText(currentComposedLabel());
|
||||
//QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
||||
if (progressDialog()) progressDialog()->repaint();
|
||||
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
||||
//if (progressDialog()) progressDialog()->repaint();
|
||||
|
||||
}
|
||||
|
||||
@@ -483,8 +491,8 @@ namespace caf {
|
||||
progressDialog()->setMaximum(totalMaxProgress);
|
||||
progressDialog()->setValue(totalProgress);
|
||||
|
||||
//QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
||||
if (progressDialog()) progressDialog()->repaint();
|
||||
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
||||
//if (progressDialog()) progressDialog()->repaint();
|
||||
|
||||
}
|
||||
|
||||
@@ -560,7 +568,7 @@ namespace caf {
|
||||
progressDialog()->setLabelText(currentComposedLabel());
|
||||
|
||||
// If we are finishing the last level, clean up
|
||||
if (!maxProgressStack_v.size())
|
||||
if (maxProgressStack_v.empty())
|
||||
{
|
||||
if (progressDialog() != nullptr)
|
||||
{
|
||||
@@ -568,11 +576,12 @@ namespace caf {
|
||||
progressDialog()->close();
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure the Gui is repainted
|
||||
//QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
||||
if (progressDialog()) progressDialog()->repaint();
|
||||
|
||||
else
|
||||
{
|
||||
// Make sure the Gui is repainted
|
||||
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
|
||||
//if (progressDialog()) progressDialog()->repaint();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
45
Fwk/AppFwk/cafUserInterface/cafProgressState.h
Normal file
45
Fwk/AppFwk/cafUserInterface/cafProgressState.h
Normal file
@@ -0,0 +1,45 @@
|
||||
//##################################################################################################
|
||||
//
|
||||
// Custom Visualization Core library
|
||||
// Copyright (C) 2011-2013 Ceetron AS
|
||||
//
|
||||
// This library may be used under the terms of either the GNU General Public License or
|
||||
// the GNU Lesser General Public License as follows:
|
||||
//
|
||||
// GNU General Public License Usage
|
||||
// This library is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <<http://www.gnu.org/licenses/gpl.html>>
|
||||
// for more details.
|
||||
//
|
||||
// GNU Lesser General Public License Usage
|
||||
// This library is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Lesser General Public License as published by
|
||||
// the Free Software Foundation; either version 2.1 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU Lesser General Public License at <<http://www.gnu.org/licenses/lgpl-2.1.html>>
|
||||
// for more details.
|
||||
//
|
||||
//##################################################################################################
|
||||
|
||||
namespace caf {
|
||||
|
||||
class ProgressState
|
||||
{
|
||||
public:
|
||||
static bool isActive();
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user