diff --git a/include/ui/montabwidget.h b/include/ui/montabwidget.h index 2c9c2d93..e12d998d 100644 --- a/include/ui/montabwidget.h +++ b/include/ui/montabwidget.h @@ -14,7 +14,7 @@ class MonTabWidget : public QTabWidget { public: explicit MonTabWidget(Editor *editor = nullptr, QWidget *parent = nullptr); - ~MonTabWidget(){}; + ~MonTabWidget(); void populate(); void populateTab(int tabIndex, WildMonInfo monInfo); diff --git a/src/ui/montabwidget.cpp b/src/ui/montabwidget.cpp index 28fd9d16..45b0319b 100644 --- a/src/ui/montabwidget.cpp +++ b/src/ui/montabwidget.cpp @@ -6,12 +6,18 @@ +static WildMonInfo encounterClipboard; + MonTabWidget::MonTabWidget(Editor *editor, QWidget *parent) : QTabWidget(parent) { this->editor = editor; populate(); this->tabBar()->installEventFilter(this); } +MonTabWidget::~MonTabWidget() { + +} + bool MonTabWidget::eventFilter(QObject *, QEvent *event) { if (event->type() == QEvent::Wheel) { return true; @@ -53,25 +59,25 @@ void MonTabWidget::populate() { void MonTabWidget::actionCopyTab(int index) { QMenu contextMenu(this); - for (int i = 0; i < this->tabBar()->count(); i++) { - if (index == i) continue; - if (!activeTabs[i]) continue; + QAction *actionCopy = new QAction("Copy", &contextMenu); + connect(actionCopy, &QAction::triggered, [=](){ + EncounterTableModel *model = static_cast(this->tableAt(index)->model()); + encounterClipboard = model->encounterData(); + }); + contextMenu.addAction(actionCopy); - QString tabText = this->tabBar()->tabText(i); - QAction *actionCopyFrom = new QAction(QString("Copy encounters from %1").arg(tabText), &contextMenu); - - connect(actionCopyFrom, &QAction::triggered, [=](){ - EncounterTableModel *model = static_cast(this->tableAt(i)->model()); - WildMonInfo copyInfo = model->encounterData(); + if (encounterClipboard.active) { + QAction *actionPaste = new QAction("Paste", &contextMenu); + connect(actionPaste, &QAction::triggered, [=](){ clearTableAt(index); WildMonInfo newInfo = getDefaultMonInfo(editor->project->wildMonFields.at(index)); - combineEncounters(newInfo, copyInfo); + combineEncounters(newInfo, encounterClipboard); populateTab(index, newInfo); emit editor->wildMonDataChanged(); }); - - contextMenu.addAction(actionCopyFrom); + contextMenu.addAction(actionPaste); } + contextMenu.exec(mapToGlobal(this->copyTabButtons[index]->pos() + QPoint(0, this->copyTabButtons[index]->height()))); }