Explorar o código

UI: Correctly enable edit menu items with multiple sources

gxalpha %!s(int64=4) %!d(string=hai) anos
pai
achega
5b87a842ee
Modificáronse 1 ficheiros con 16 adicións e 15 borrados
  1. 16 15
      UI/window-basic-main.cpp

+ 16 - 15
UI/window-basic-main.cpp

@@ -7769,16 +7769,14 @@ config_t *OBSBasic::Config() const
 
 void OBSBasic::UpdateEditMenu()
 {
-	int idx = GetTopSelectedSourceItem();
 	QModelIndexList items = GetAllSelectedSourceItems();
 	int count = items.count();
 	size_t filter_count = 0;
-	OBSSceneItem sceneItem;
-	OBSSource source;
 
-	if (idx != -1) {
-		sceneItem = ui->sources->Get(idx);
-		source = obs_sceneitem_get_source(sceneItem);
+	if (count == 1) {
+		OBSSceneItem sceneItem =
+			ui->sources->Get(GetTopSelectedSourceItem());
+		OBSSource source = obs_sceneitem_get_source(sceneItem);
 		filter_count = obs_source_filter_count(source);
 	}
 
@@ -7798,24 +7796,27 @@ void OBSBasic::UpdateEditMenu()
 			allowPastingDuplicate = false;
 	}
 
-	ui->actionCopySource->setEnabled(idx != -1);
-	ui->actionEditTransform->setEnabled(idx != -1);
+	ui->actionCopySource->setEnabled(count > 0);
+	ui->actionEditTransform->setEnabled(count == 1);
 	ui->actionCopyTransform->setEnabled(count == 1);
 	ui->actionPasteTransform->setEnabled(hasCopiedTransform && count > 0);
 	ui->actionCopyFilters->setEnabled(filter_count > 0);
 	ui->actionPasteFilters->setEnabled(
-		!obs_weak_source_expired(copyFiltersSource) && idx != -1);
+		!obs_weak_source_expired(copyFiltersSource) && count > 0);
 	ui->actionPasteRef->setEnabled(!!clipboard.size());
 	ui->actionPasteDup->setEnabled(allowPastingDuplicate);
 
-	ui->actionMoveUp->setEnabled(idx != -1);
-	ui->actionMoveDown->setEnabled(idx != -1);
-	ui->actionMoveToTop->setEnabled(idx != -1);
-	ui->actionMoveToBottom->setEnabled(idx != -1);
+	ui->actionMoveUp->setEnabled(count > 0);
+	ui->actionMoveDown->setEnabled(count > 0);
+	ui->actionMoveToTop->setEnabled(count > 0);
+	ui->actionMoveToBottom->setEnabled(count > 0);
 
 	bool canTransform = false;
-	if (sceneItem)
-		canTransform = !obs_sceneitem_locked(sceneItem);
+	for (int i = 0; i < count; i++) {
+		OBSSceneItem item = ui->sources->Get(i);
+		if (!obs_sceneitem_locked(item))
+			canTransform = true;
+	}
 
 	ui->actionResetTransform->setEnabled(canTransform);
 	ui->actionRotate90CW->setEnabled(canTransform);