diff --git a/ChangeLog b/ChangeLog index a82b598f..5f9eb4e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23838,3 +23838,6 @@ 2022-12-21 Fred Gleason * Added a test for duplicate log line IDs to rddbmgr(8). * Added a '--check-log-line-ids' switch to rddbmgr(8). +2022-12-21 Fred Gleason + * Fixed a regression in rdlogedit(1) that caused duplicate line IDs + to be used when pasting from the clipboard. diff --git a/rdlogedit/Makefile.am b/rdlogedit/Makefile.am index 54fd1289..2b4f4844 100644 --- a/rdlogedit/Makefile.am +++ b/rdlogedit/Makefile.am @@ -2,7 +2,7 @@ ## ## Use automake to process this into a Makefile.in ## -## (C) Copyright 2002-2021 Fred Gleason +## (C) Copyright 2002-2022 Fred Gleason ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License version 2 as diff --git a/rdlogedit/edit_log.cpp b/rdlogedit/edit_log.cpp index 737f7554..f7dfd6be 100644 --- a/rdlogedit/edit_log.cpp +++ b/rdlogedit/edit_log.cpp @@ -31,7 +31,7 @@ #include "globals.h" EditLog::EditLog(QString *filter,QString *group,QString *schedcode, - QList *clipboard,QWidget *parent) + QWidget *parent) : RDDialog(parent) { QColor system_mid_color=palette().mid().color(); @@ -40,7 +40,6 @@ EditLog::EditLog(QString *filter,QString *group,QString *schedcode, edit_filter=filter; edit_group=group; edit_schedcode=schedcode; - edit_clipboard=clipboard; edit_default_trans=RDLogLine::Play; edit_log=NULL; edit_log_lock=NULL; @@ -912,11 +911,13 @@ void EditLog::pasteButtonData() if((line=SingleSelectionLine())<0) { return; } - edit_log_model->insert(line,edit_clipboard->size()); - for(int i=0;isize();i++) { - *edit_log_model->logLine(line+i)=edit_clipboard->at(i); + edit_log_model->insert(line,edit_clipboard.size()); + for(int i=0;ilogLine(line+i)->id(); // Save the line ID + *edit_log_model->logLine(line+i)=edit_clipboard.at(i); + edit_log_model->logLine(line+i)->setId(line_id); // So we can restore it edit_log_model->logLine(line+i)->setSource(RDLogLine::Manual); - (*edit_clipboard)[i].clearExternalData(); + edit_clipboard[i].clearExternalData(); } SetLogModified(true); UpdateTracks(); @@ -1065,8 +1066,8 @@ void EditLog::okData() DeleteTracks(); } edit_player->stop(); - for(int i=0;isize();i++) { - (*edit_clipboard)[i].clearExternalData(); + for(int i=0;istop(); - for(int i=0;isize();i++) { - (*edit_clipboard)[i].clearExternalData(); + for(int i=0;iselectionModel(); - edit_clipboard->clear(); + edit_clipboard.clear(); QModelIndexList rows=sel->selectedRows(); for(int i=0;i + edit_clipboard. push_back(*edit_log_model->logLine(rows.at(i).row())); if(clear_ext) { - edit_clipboard->back().clearExternalData(); + edit_clipboard.back().clearExternalData(); } } } diff --git a/rdlogedit/edit_log.h b/rdlogedit/edit_log.h index f6014bc7..233f17e4 100644 --- a/rdlogedit/edit_log.h +++ b/rdlogedit/edit_log.h @@ -46,8 +46,7 @@ class EditLog : public RDDialog { Q_OBJECT public: - EditLog(QString *filter,QString *group,QString *schedcode, - QList *clipboard,QWidget *parent=0); + EditLog(QString *filter,QString *group,QString *schedcode,QWidget *parent=0); ~EditLog(); QSize sizeHint() const; @@ -104,7 +103,7 @@ class EditLog : public RDDialog void SetLogModified(bool state); void SendNotification(RDNotification::Action action,const QString &log_name); RDLog *edit_log; - QList *edit_clipboard; + QList edit_clipboard; std::vector edit_deleted_tracks; QStringList *edit_newlogs; QString edit_logname; diff --git a/rdlogedit/rdlogedit.cpp b/rdlogedit/rdlogedit.cpp index 08c5e3bc..549b0c04 100644 --- a/rdlogedit/rdlogedit.cpp +++ b/rdlogedit/rdlogedit.cpp @@ -110,8 +110,7 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent) // // Dialogs // - log_edit_dialog= - new EditLog(&log_filter,&log_group,&log_schedcode,&log_clipboard,this); + log_edit_dialog=new EditLog(&log_filter,&log_group,&log_schedcode,this); log_tracker_dialog=new VoiceTracker(&log_import_path,this); // diff --git a/rdlogedit/rdlogedit.h b/rdlogedit/rdlogedit.h index 1eb79635..df04e9a5 100644 --- a/rdlogedit/rdlogedit.h +++ b/rdlogedit/rdlogedit.h @@ -81,7 +81,6 @@ class MainWidget : public RDMainWindow RDLogFilter *log_filter_widget; RDTableView *log_log_view; RDLogListModel *log_log_model; - QList log_clipboard; QPushButton *log_add_button; QPushButton *log_edit_button; QPushButton *log_delete_button;