subsurface/desktop-widgets
Berthold Stoeger 152e6966c9 fix copy/paste of dive-site
The copy/pasting of dive-sites was fundamentally broken in at least two
ways:

1) The dive-site pointer in struct dive was simply overwritten, which
   breaks internal consistency. Also, no dive-site changed signals where
   sent.

2) The copied dive-site was stored as a pointer in a struct dive. Thus,
   the user could copy a dive, then delete the dive-site and paste.
   This would lead to a dangling pointer and ultimately crash the
   application.

Fix this by storing the UUID of the dive-site, not a pointer.
To do that, don't store a copy of the dive, but collect all
the data in a `dive_paste_data` structure.
If the dive site has been deleted on paste, do nothing.
Send the appropriate signals on pasting.

The mobile version had an additional bug: It kept a pointer to the
dive to be copied, which might become stale by undo.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2024-08-17 23:34:16 +12:00
..
css
preferences preferences: use std::string in struct preferences 2024-08-13 19:28:30 +02:00
qml statistics: don't import QtQuick in StatsView QML file 2022-11-19 15:07:07 -08:00
tab-widgets core: move gasname() to struct gasmix 2024-08-13 19:28:30 +02:00
about.cpp Desktop: Add Button and Link to 'Contribute' Page. 2024-02-04 14:50:18 -08:00
about.h Desktop: Add Button and Link to 'Contribute' Page. 2024-02-04 14:50:18 -08:00
about.ui Desktop: Add Button and Link to 'Contribute' Page. 2024-02-04 14:50:18 -08:00
addfilterpreset.ui filter: create a primitive "create filter preset" dialog 2020-09-29 16:13:03 -07:00
btdeviceselectiondialog.cpp Qt6: Bluetooth API changes 2022-03-12 08:28:32 -08:00
btdeviceselectiondialog.h cleanup: remove QPointer instances 2020-12-17 13:03:56 -08:00
btdeviceselectiondialog.ui
CMakeLists.txt fix copy/paste of dive-site 2024-08-17 23:34:16 +12:00
configuredivecomputerdialog.cpp import: turn C-string in device_data_t into std::strings 2024-08-13 19:28:30 +02:00
configuredivecomputerdialog.h dive download: pass current filename to dialog 2024-03-24 17:53:19 +01:00
configuredivecomputerdialog.ui Desktop: Use Persisted Device Information for Dive Computer Configuration. 2023-06-12 12:40:44 -07:00
divecomponentselection.cpp fix copy/paste of dive-site 2024-08-17 23:34:16 +12:00
divecomponentselection.h fix copy/paste of dive-site 2024-08-17 23:34:16 +12:00
divecomponentselection.ui core: replace dive master by dive guide 2022-02-15 09:35:43 -08:00
divelistview.cpp core: turn C dive-table into an owning table 2024-08-13 19:28:30 +02:00
divelistview.h cleanup: more Coverity silencing 2024-01-17 14:23:19 -08:00
divelogexportdialog.cpp map: use value semantics for MapLocation 2024-08-13 19:28:30 +02:00
divelogexportdialog.h
divelogexportdialog.ui Desktop: Change 'CSV summary dive details' output from TSV to CSV. 2023-05-18 10:31:31 +03:00
divelogimportdialog.cpp core: move process_import_dives() and related functions to divelog 2024-08-13 19:28:30 +02:00
divelogimportdialog.h parser: replace params[] code by new xml_params struct 2020-10-23 18:17:02 -07:00
divelogimportdialog.ui
divepicturewidget.cpp cleanup: remove unnecessary includes from divepicturewidget.cpp 2020-12-03 10:32:20 -08:00
divepicturewidget.h Cleanup: remove DivePictureThumbnailThread 2020-05-06 13:58:09 -07:00
diveplanner.cpp core: move get_dive_dc() to struct dive 2024-08-13 19:28:30 +02:00
diveplanner.h core: add constructor/destructor pairs to dive and divecomputer 2024-08-13 19:28:30 +02:00
diveplanner.ui Desktop: Fix Inconsistencies in Handling of Salinity. 2024-06-10 15:54:22 +12:00
diveshareexportdialog.cpp Qt6: move connection into C++ source 2022-03-12 08:28:32 -08:00
diveshareexportdialog.h
diveshareexportdialog.ui Qt6: move connection into C++ source 2022-03-12 08:28:32 -08:00
divesiteimportdialog.cpp import: initialize DiveSiteImportModel in constructor 2024-08-13 19:28:30 +02:00
divesiteimportdialog.h core: replace divesite_table_t by a vector of std::unique_ptr<>s 2024-08-13 19:28:30 +02:00
divesiteimportdialog.ui
divesitelistview.cpp core: include divesite table directly in divelog 2024-08-13 19:28:30 +02:00
divesitelistview.h map: use value semantics for MapLocation 2024-08-13 19:28:30 +02:00
divesitelistview.ui desktop: make dive site list an independent widget 2022-09-23 15:50:49 +02:00
downloadfromdivecomputer.cpp core: move process_import_dives() and related functions to divelog 2024-08-13 19:28:30 +02:00
downloadfromdivecomputer.h download: replace progress_bar_text by std::string 2024-08-13 19:28:30 +02:00
downloadfromdivecomputer.ui Update downloadfromdivecomputer.ui 2024-04-22 16:52:19 +12:00
filterconstraintwidget.cpp preferences: use std::string in struct preferences 2024-08-13 19:28:30 +02:00
filterconstraintwidget.h filter: add a filter constraint widget 2020-09-29 16:13:03 -07:00
filterwidget.cpp core: remove filterconstraint C boilerplate code 2024-08-13 19:28:30 +02:00
filterwidget.h cleanup: rename FilterWidget2 to FilterWidget 2020-09-29 16:14:31 -07:00
filterwidget.ui cleanup: rename FilterWidget2 to FilterWidget 2020-09-29 16:14:31 -07:00
findmovedimagesdialog.cpp core: turn C dive-table into an owning table 2024-08-13 19:28:30 +02:00
findmovedimagesdialog.h
findmovedimagesdialog.ui
groupedlineedit.cpp cleanup: replace Q_FOREACH and foreach by range base for 2024-03-24 17:53:19 +01:00
groupedlineedit.h
importgps.cpp
importgps.h
importgps.ui
kmessagewidget.cpp cleanup: replace Q_FOREACH and foreach by range base for 2024-03-24 17:53:19 +01:00
kmessagewidget.h
listfilter.ui
locationinformation.cpp core: remove accessor get_dive_site_for_dive() 2024-08-13 19:28:30 +02:00
locationinformation.h Desktop: Add mergeing into the selected dive site. 2023-05-20 07:24:39 +02:00
locationinformation.ui
mainwindow.cpp fix copy/paste of dive-site 2024-08-17 23:34:16 +12:00
mainwindow.h fix copy/paste of dive-site 2024-08-17 23:34:16 +12:00
mainwindow.ui Desktop: Regroup File Menu Entries. 2023-06-17 20:19:35 +02:00
mapwidget.cpp core: move divesite_has_gps_information() to struct dive_site 2024-08-13 19:28:30 +02:00
mapwidget.h map: use value semantics for MapLocation 2024-08-13 19:28:30 +02:00
modeldelegates.cpp core: move divesite_has_gps_information() to struct dive_site 2024-08-13 19:28:30 +02:00
modeldelegates.h desktop: unglobalize ComboBox-models 2024-04-16 08:56:49 +12:00
notificationwidget.cpp cleanup: fix incorrect QFuture return value 2022-03-12 08:28:32 -08:00
notificationwidget.h cleanup: fix incorrect QFuture return value 2022-03-12 08:28:32 -08:00
plannerDetails.ui
plannerSettings.ui
printdialog.cpp general: remove (void) function parameter declarations 2024-08-13 19:28:30 +02:00
printdialog.h printing: pass current filename to dialog 2024-03-24 17:53:19 +01:00
printer.cpp core: turn C dive-table into an owning table 2024-08-13 19:28:30 +02:00
printer.h printing: don't access displayed_dive in printing code 2023-04-16 20:23:59 +02:00
printoptions.cpp Add printing option for page orientation 2023-03-28 21:08:37 -07:00
printoptions.h Add printing option for page orientation 2023-03-28 21:08:37 -07:00
printoptions.ui Add printing option for page orientation 2023-03-28 21:08:37 -07:00
profilewidget.cpp core: move get_dive_dc() to struct dive 2024-08-13 19:28:30 +02:00
profilewidget.h core: turn dive-trip location and notes into std::string 2024-08-13 19:28:30 +02:00
profilewidget.ui Desktop: Add a Button to Hide the Infobox in the Dive Profile. 2023-06-25 14:40:23 +02:00
qtwaitingspinner.cpp cleanup: prevent distracing conversion warnings 2022-03-12 08:28:32 -08:00
qtwaitingspinner.h
renumber.ui
searchbar.ui
setpoint.ui
shiftimagetimes.ui desktop/image-time-shift: reorder UI 2021-09-22 09:09:12 -07:00
shifttimes.ui cleanup: remove duplicate connections in .ui files 2022-03-12 08:28:32 -08:00
simplewidgets.cpp fix copy/paste of dive-site 2024-08-17 23:34:16 +12:00
simplewidgets.h fix copy/paste of dive-site 2024-08-17 23:34:16 +12:00
starwidget.cpp cleanup: remove reference to deprecated enum value 2020-10-26 19:27:03 -07:00
starwidget.h cleanup: fix deprecated QFlags use 2020-10-26 19:27:03 -07:00
statswidget.cpp Qt6: prevent QML object from being garbage collected 2022-03-12 08:28:32 -08:00
statswidget.h Qt6: prevent QML object from being garbage collected 2022-03-12 08:28:32 -08:00
statswidget.ui statistics: add a sort mode for categorical bar charts 2022-01-04 11:14:24 -08:00
subsurfacewebservices.cpp core: move process_import_dives() and related functions to divelog 2024-08-13 19:28:30 +02:00
subsurfacewebservices.h Qt6: update the connect calls for QNetworkReply 2022-04-18 07:24:39 +02:00
tableview.cpp desktop: fix saving of column-widths of device and site tables 2020-11-07 11:37:51 -08:00
tableview.h
tableview.ui
tagwidget.cpp desktop: let tag-widget completion popup accept composition events 2022-08-13 11:19:37 -07:00
tagwidget.h desktop: improve composition on TagWidgets 2022-08-13 11:19:37 -07:00
templateedit.cpp printing: don't access displayed_dive in printing code 2023-04-16 20:23:59 +02:00
templateedit.h printing: move #includes from headers to source files 2020-12-17 13:03:56 -08:00
templateedit.ui
templatelayout.cpp core: move get_dive_location()/_country() to struct dive 2024-08-13 19:28:30 +02:00
templatelayout.h cleanup: silence std::move()-related Coverity warnings 2024-01-15 15:11:36 -08:00
textedit.cpp
textedit.h
tripselectiondialog.cpp core: include trip table directly in divelog 2024-08-13 19:28:30 +02:00
tripselectiondialog.h desktop: add trip selection dialog 2020-10-03 10:01:13 -07:00
tripselectiondialog.ui desktop: add trip selection dialog 2020-10-03 10:01:13 -07:00
updatemanager.cpp remove app uuid 2024-01-07 16:01:55 -08:00
updatemanager.h
urldialog.ui Allow more than one media file when importing from the web 2022-04-01 08:28:05 -07:00
usermanual.cpp cleanup: don't initialize flags with just an integer 2020-10-26 19:27:03 -07:00
usermanual.h
webservices.ui