mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 17:49:14 +00:00
UI: Correctly disable "Paste Duplicate" if required
This commit is contained in:
parent
8298f040fe
commit
9f15a58483
|
@ -7782,11 +7782,20 @@ void OBSBasic::UpdateEditMenu()
|
|||
filter_count = obs_source_filter_count(source);
|
||||
}
|
||||
|
||||
bool allowPastingDuplicate = !!clipboard.size();
|
||||
for (size_t i = clipboard.size(); i > 0; i--) {
|
||||
const size_t idx = i - 1;
|
||||
OBSWeakSource &weak = clipboard[idx].weak_source;
|
||||
if (obs_weak_source_expired(weak))
|
||||
if (obs_weak_source_expired(weak)) {
|
||||
clipboard.erase(clipboard.begin() + idx);
|
||||
continue;
|
||||
}
|
||||
OBSSourceAutoRelease strong =
|
||||
obs_weak_source_get_source(weak.Get());
|
||||
if (allowPastingDuplicate &&
|
||||
obs_source_get_output_flags(source) &
|
||||
OBS_SOURCE_DO_NOT_DUPLICATE)
|
||||
allowPastingDuplicate = false;
|
||||
}
|
||||
|
||||
ui->actionCopySource->setEnabled(idx != -1);
|
||||
|
@ -7796,7 +7805,7 @@ void OBSBasic::UpdateEditMenu()
|
|||
ui->actionPasteFilters->setEnabled(
|
||||
!obs_weak_source_expired(copyFiltersSource) && idx != -1);
|
||||
ui->actionPasteRef->setEnabled(!!clipboard.size());
|
||||
ui->actionPasteDup->setEnabled(!!clipboard.size());
|
||||
ui->actionPasteDup->setEnabled(allowPastingDuplicate);
|
||||
|
||||
ui->actionMoveUp->setEnabled(idx != -1);
|
||||
ui->actionMoveDown->setEnabled(idx != -1);
|
||||
|
@ -9053,7 +9062,6 @@ void OBSBasic::on_actionMainRedo_triggered()
|
|||
void OBSBasic::on_actionCopySource_triggered()
|
||||
{
|
||||
clipboard.clear();
|
||||
bool allowPastingDuplicate = true;
|
||||
|
||||
for (auto &selectedSource : GetAllSelectedSourceItems()) {
|
||||
OBSSceneItem item = ui->sources->Get(selectedSource.row());
|
||||
|
@ -9072,14 +9080,9 @@ void OBSBasic::on_actionCopySource_triggered()
|
|||
copyInfo.visible = obs_sceneitem_visible(item);
|
||||
|
||||
clipboard.push_back(copyInfo);
|
||||
|
||||
uint32_t output_flags = obs_source_get_output_flags(source);
|
||||
if (output_flags & OBS_SOURCE_DO_NOT_DUPLICATE)
|
||||
allowPastingDuplicate = false;
|
||||
}
|
||||
|
||||
ui->actionPasteRef->setEnabled(true);
|
||||
ui->actionPasteDup->setEnabled(allowPastingDuplicate);
|
||||
UpdateEditMenu();
|
||||
}
|
||||
|
||||
void OBSBasic::on_actionPasteRef_triggered()
|
||||
|
|
Loading…
Reference in a new issue