diff --git a/modules/gui/src/sequence/sequence_viewer.cc b/modules/gui/src/sequence/sequence_viewer.cc index 4164bbeecdd5429488bbfbf2ba3a3c3d1e1c773c..b4e4a8cc32cc682ebe73ee500943884d8c9efe08 100644 --- a/modules/gui/src/sequence/sequence_viewer.cc +++ b/modules/gui/src/sequence/sequence_viewer.cc @@ -186,18 +186,35 @@ void SequenceViewerV2::MouseWheelEvent(QWheelEvent* event) void SequenceViewerV2::CopyEvent(QKeyEvent* event) { - const QModelIndexList& list = seq_table_view_->selectionModel()->selectedIndexes(); + QItemSelectionModel* model = seq_table_view_->selectionModel(); + const QModelIndexList& list = model->selectedIndexes(); if(list.size()>0){ QString clipboard_string; - - QVarLengthArray<QString> clipboard_array(model_->rowCount()); + QSet<int> rows; + int min_col=0; + int max_col=0; for(int i = 0; i < list.size(); i++){ - const QModelIndex& index = list[i]; - clipboard_array[index.row()].append(model_->data(index,Qt::DisplayRole).toString()); + if(list[i].column()>max_col){ + max_col = list[i].column(); + } + if(list[i].column()<min_col){ + min_col = list[i].column(); + } + rows.insert(list[i].row()); } - for(int i = 0; i < clipboard_array.size(); i++){ - if(clipboard_array[i].size()>0){ - clipboard_string.append(clipboard_array[i]+"\n"); + + for(int i = 0; i < model_->rowCount(); i++){ + if(rows.contains(i)){ + for(int j=min_col; j<=max_col; j++){ + const QModelIndex& index = model_->index(i,j); + if(model->isSelected(index)){ + clipboard_string.append(model_->data(index,Qt::DisplayRole).toString()); + } + else{ + clipboard_string.append('-'); + } + } + clipboard_string.append("\n"); } } QApplication::clipboard()->setText(clipboard_string);