Improves result info handling by ensuring the result
definition is valid before accessing it, preventing
potential crashes.
Uses `if (auto)` to check for null result definitions,
and displays a user-friendly message when no result
definition is available.
When working with a summary ensemble in a Debug build on Windows, a crash happened in RiuQwtPlotWidget::resetPlotCurveHighlighting(). When iterating over list of plot items, one pointer to item pointed to 0xddddddd, a clear indication that the underlying list had been updated during the loop and the iterator invalidated.
The change ensures that modifications to the item list during iteration do not cause unexpected behavior, particularly in scenarios involving grid lines and curve highlighting.
This is achieved by making a copy of the item list before iteration when modifications may occur. For cases where no add/remove will be performed during the iteration, a comment is added to clarify that it is safe to access the reference to the list.
2025-10-06 12:48:32.779] [rotating_logger] [error] Stack trace:
[0] manageSegFailure(int) at :0
[1] at :0
[2] __dynamic_cast at :0
[3] RimSummaryMultiPlot::updateReadOutLines(double, double) at :0
[4] CoordinatePicker::trackerText(QPoint const&) const at :0
[5] QwtPicker::trackerRect(QFont const&) const at :0
[6] QwtPicker::updateDisplay() at :0
[7] QwtPicker::begin() at :0
[8] QwtPicker::transition(QEvent const*) at :0
[9] QwtPicker::eventFilter(QObject*, QEvent*) at :0
[10] QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) at :0
[11] QApplicationPrivate::notify_helper(QObject*, QEvent*) at :0
[12] RiaGuiApplication::notify(QObject*, QEvent*) at :0
[13] QCoreApplication::notifyInternal2(QObject*, QEvent*) at :0
[14] at :0
[15] QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) at :0
[16] at :0
[17] at :0
[18] QApplicationPrivate::notify_helper(QObject*, QEvent*) at :0
[19] RiaGuiApplication::notify(QObject*, QEvent*) at :0
[20] QCoreApplication::notifyInternal2(QObject*, QEvent*) at :0
[21] QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) at :0
[22] QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) at :0
[23] at :0
[24] g_main_context_dispatch at :0
[25] g_main_context_iterate.isra.20 at :0
[26] g_main_context_iteration at :0
[27] QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) at :0
[28] QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) at :0
[29] QCoreApplication::exec() at :0
Removes the dedicated `SUMMARY_ENSEMBLE_STATISTICS` category and instead uses a `statisticsType` field within `RifEclipseSummaryAddress` to represent ensemble statistics.
This change simplifies the code and avoids potential confusion by representing statistics as attributes of existing summary types, rather than a separate category. It also improves code robustness.
Create a QVariant using caf::PdmPointer, and send this variant to the feature. The feature converts the QVariant to an ensemble curve set.
Make sure the right-click menu in the summary plot shows the Create from filtered cases independent to the selection in project tree.
* Qt6: Avoid insertWidget, use addWidget
In Qt6, the insertWidget function checks if the index parameter is valid based on current widgets present in the layout. This is error prone, and use addWidget to avoid manual counting of index.
* Disable use of Qt keyword foreach
* Replace use of QRegExp with QRegularExpression
Replace use of QRegExp with QRegularExpression
Remove dependency on qt5compat module
Simplify an expression based on review
* Remove Qt5 ifdefs
* Guard access out of bounds seen in debug build
* Avoid reuse of string variable
* Disconnect all signals from the QOpenGLContext
The call stack when this assert happens indicates that there are more signals to be disconnected from the object. Crash is fixed by disconnecting all signals.
Assert seen in debug build:
ASSERT failure in caf::Viewer: "Called object is not of the correct type (class destructor may have already run)", file C:\Qt\6.6.3\msvc2019_64\include\QtCore/qobjectdefs_impl.h, line 130
* Fix issue related to delete of a linked view
Guard null pointer use in view linker. Remove complicated cleanup in destructor in Rim3dVew.
* Remove bundling of openssl1.1
* Remove obsolete compile flags
* Remove use of obsolete RimCommandObject
* Use QColor::isValidColorName
QColor::isValidColor is deprecated in Qt 6.6, QColor::isValidColorName was introduced in 6.4
* Make sure debug DLLs are copied when required
* Remove Qt5 from AppFwk
* Remove obsolete copy of Qt DLLs
Required changes to use Qt6 and disable support for Qt5. There are still some adjustments related to Qt6 to be done, but these changes are not required to make Qt6 compile on relevant systems.
* Build system changes Qt6
* Override enterEvent
* Update QKeySequence
* QtChart changes
* Use QScreen to instepct dotsPerInch
* Add app->quit()
* Required updates for code related to QString
* Use RiaQDateTimeTools
* Required changes related to regular expressions
* Support compile on Qt < 6.5
When version < 6.5 is found, qt_generate_deploy_app_script() is disabled. Compilation of ResInsight will work, but the install target will be incomplete.
* Octave: add missing header.
* Qt Advanced Docking: force Qt6 where both Qt5 and Qt6 is available.
---------
Co-authored-by: magnesj <1793152+magnesj@users.noreply.github.com>
Co-authored-by: Kristian Bendiksen <kristian.bendiksen@gmail.com>
* Use appendMenuItems instead of ContextCommandBuilder
* Specify RimEclipseCaseCollection menu features once
* Add function to enable up/down arrows for combo box
* Guard crash when closing project
* Improve UI for grid case ensemble
- Create a view for the first case in the ensemble
- Show case name in view title
- Enable up/down buttons to Eclipse case
* Make sure 3D views in grid ensemble are created on project load
Selection of the cell result in the 3D view causes changes in active view and is very confusing for the user. Use "Activate Result in Project Tree" from right-click menu in the intersection view.