Axis range and auto-zoom setters now schedule the editor update instead of
performing it immediately. Every immediate update rebuilds the tags of the whole
project tree, and zoom-all releases the range and re-enables auto zoom for every
axis of every subplot. Scheduling also avoids deleting the tag whose clicked
signal is still being emitted from onPinnedTagClicked().
Remove the m_isAutoZoom branches in fieldChangedByUi(). The field is not part of
any UI ordering, and both orderings end with skipRemainingFields(), so the
branches were unreachable. Comments referring to a "Set Range Automatically"
checkbox are updated accordingly.
The pinned tag no longer reuses pinned.svg, which is also the Quick Access dock
icon and must keep following the widget palette. The gray tag variant lives in
PinnedAxisRange.svg.
Zoom All is an explicit request for automatic ranges, but only summary plots
released the user defined range. Histogram, grid cross, VFP and analysis plots
share RimPlotAxisProperties and set the range as user defined when a min or max
is typed, so Zoom All left them with a stale pinned tag and permanently blocked
enableAutoValueMinMax().
Release the range for every axis owned by the window in RimViewWindow instead,
which makes the summary specific overrides redundant.
An axis range defined by the user is now kept when a summary case or ensemble is added, reloaded or replaced. The range is marked as user defined when the user edits the min/max values, unchecks "Set Range Automatically" or zooms interactively in the plot.
The user defined range is released by "Zoom All", by double click in a plot, by checking "Set Range Automatically" or by changing the Y axis range aggregation of a summary multi plot.
Sumo data is loaded so the application stays responsive while it waits.
Run Sumo transfers on a dedicated thread
Split RiaSumoConnector into transport and data delegates
Load Sumo summary vectors concurrently and without waiting
Show that Sumo data is being loaded
Migrate all assert macros in ApplicationLibCode to CAF_ASSERT and remove every
use of cvfAssert.h.
CVF_ASSERT is replaced one to one. CVF_TIGHT_ASSERT is also replaced by
CAF_ASSERT, which is semantically exact: CVF_ENABLE_TIGHT_ASSERTS is 1 only
under _DEBUG, and that is what CAF_ASSERT now does. The two CVF_FAIL_MSG sites
become CAF_ASSERT( false && "message" ), preserving the message with the idiom
already used elsewhere in the code base.
Counts before and after: CVF_ASSERT 1044 to 0, CVF_TIGHT_ASSERT 66 to 0,
CVF_FAIL_MSG 2 to 0, cvfAssert.h references 154 to 0.
Include handling: files that included cvfAssert.h directly now include
cafAssert.h instead, includes left dead by the migration are removed, and files
that were relying on cvfAssert.h transitively get an explicit cafAssert.h. Files
that reach cafAssert.h through another caf header are left unchanged; a missing
include here is a compile error, not a silently disabled assert.
ResultStatisticsCache links only LibCore and therefore had no path to
cafAssert.h. Add the cafPdmCore directory as a private include path rather than
linking the library, since cafAssert.h is header only.
Note that this stops these asserts from firing in Release and RelWithDebInfo,
where CVF_ASSERT was previously active.
Introduces common readout settings for summary multi plots, allowing users to apply a single readout configuration across multiple plots instead of configuring each individually.
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
Addresses potential null pointer dereferences by adding checks for null summary readers before accessing their data.
This change prevents crashes and improves the robustness of summary data processing, particularly when dealing with incomplete or corrupted summary data.
The checks are added in the following locations:
- RiaSummaryPlotTemplateTools
- RiaSummaryStringTools
- RicPlotProductionRateFeature
- RicSummaryPlotFeatureImpl
- RimAnalysisPlot
- RimSummaryCalculation
- RimEnsembleCurveFilter
- RimEnsembleCurveSet
- RimSummaryEnsemble
- RimSummaryMultiPlot
- RimSummaryRegressionAnalysisCurve
- RimSummaryEnsembleSumo
Refactors zoom handling in multi-plot scenarios to ensure consistent
axis ranges and proper synchronization between subplots, especially
when linking subplot axes.
Removes direct zoom event handling from subplots and centralizes zoom
logic in the multi-plot container.
This ensures that the 'Zoom All' operation correctly adjusts the
Y-axis ranges based on the configured aggregation method and linked
axes settings.
Skip distance check when clicking in the plot, always select closest curve
When pressing CTRL, toggle highlighted curves
Allow multi select of realizations in Project Tree
Avoid curve highlight operation during zoom
Make sure wheel zoom works for a single plot
Use the first available highlighted curve as basis for display of horizontal readout value. Fallback to single realization curves.
When selecting a realization in project tree, highlight all related curves
Make sure zoom rect works when readout annotations are active
* Add category WELL_CONNECTION
* Throw exception if category string is invalid
* Make it possible to step connections
* Add definition of completion vectors
* Use WELL_CONNECTION for CPRL
* Convert "WGPRL__2:MY-WELL1-A5" to "WGPRL:MY-WELL1-A5:2"
Use the syntax for well completions in opm-common
* More tests for different variants of summary texts
* Prepare for more customization of annotation objects
* Move files
* Add configuration of readout lines in sub plots. The location along the time axis is based on the current mouse cursor position. The location is distributed to all sub plots. Optional support for readout of values at the current time.
After merging the cross plot with the summary plot, the sources stepping can be simplified. Remove obsolete sources stepping code, to prepare for other source stepping issues.
If a summary plot is created with a cross plot curve, the time axis object might not be configured. Always use a time based summary plot as source for linking of time axis.
* Support cross plot in plot templates
* Fix source stepping for cross plots
* Show cross plot data in "Show Plot Data"
* Use bin size and realization count when computing cross plot statistics
* Verify vector size only for cross plot regression curves
* Add filtering on axis orientation
Makes it possible to show only horizontal or vertical axes when selecting an axis to attach a curve to.
* Send curvesChanged signal to trigger multi plot updates
This signal will trigger update of axes and set correct scaling factor
* Use object name for axis object
* Use address for both x and y axis to create ensemble curve name
* Fix bug for drag/drop of ensemble object into plot
* Add RiaSummaryCurveAddress to RiaSummaryCurveDefinition
* Remove SummaryDataSource
* Use childFieldChangedByUi to trigger update of curves and titles
* Performance: Cache registry value
* Performance: Avoid recursive update
Early return if values are identical
updateConnectedEditors is handled by setValueFromUiEditor
Avoid fieldChanged in analyzePlotsAndAdjustAppearanceSettings
Previously, when the stepping dimension was set to 'well' for range aggregation, it was based on all wells. If one of the wells had extreme values and was not visible, it would set the y-range to match the extreme value, making some curves invisible. We have now changed the default setting to use visible subplots to determine the y-range aggregation.
* #9681 Disable auto plot title check box when typing a custom name
The Auto Plot Title check box is not possible to click on using the mouse. A useful workaround is to disable the check box when the user enter a custom name in the name field.
* #10361 Make sure all objects change color when selecting curve color
Add support for direct change of all selected curve objects when changing color
* Use title as first field in group to avoid Qt checkbox not reacting to mouse click
* #9681 Disable auto name when name is changed in sub plot
* #10344 Surfaces: Add option to exclude inactive cells
* #10369 Use one color for bars in tornado plot
* Update license info
* Remove light mode from theme selection
The light mode is not working well, and was intended to be used when exporting to pdf from dark mode.
* Allow direct edit of summary case name
The name for a summary case can be automatically created. If the user starts to edit the name manually, set the name option to Custom. Make the descriptionField available as not read-only, then it is possible to edit the name directly in the project tree using F2 or double-click.
* Allow drag of ensembles
* Add support for drag/drop of well segments
* Add support for well segment number stepping in toolbar
Improved GitHub Action to run clang-format as part of clang-tidy
* Simplify clang-tidy workflow
* Added modernize-use-using, modernize-redundant-void-arg, readability-static-accessed-through-instance
* Add nolint for libecl typedefs