提交 9b5ac1fb 编写于 作者: J jp9000

UI: Fix preview right-click menu getting wrong source

When right-clicking items in the preview window and getting context
menus for them, it would often make the wrong scene item be associated
with the context menu because of the fact that it was using
QListWidget::currentItem instead of querying the actual selected list.

You must query the actual selection list via QListWidget::selectedItems
because QListWidget::currentItem does not work properly for
multi-selection list widgets.
上级 e5fc4dbb
......@@ -1285,7 +1285,7 @@ OBSSceneItem OBSBasic::GetSceneItem(QListWidgetItem *item)
OBSSceneItem OBSBasic::GetCurrentSceneItem()
{
return GetSceneItem(ui->sources->currentItem());
return GetSceneItem(GetTopSelectedSourceItem());
}
void OBSBasic::UpdateSources(OBSScene scene)
......@@ -2605,7 +2605,7 @@ void OBSBasic::on_sources_itemSelectionChanged()
void OBSBasic::EditSceneItemName()
{
QListWidgetItem *item = ui->sources->currentItem();
QListWidgetItem *item = GetTopSelectedSourceItem();
Qt::ItemFlags flags = item->flags();
OBSSceneItem sceneItem= GetOBSRef<OBSSceneItem>(item);
obs_source_t *source = obs_sceneitem_get_source(sceneItem);
......@@ -3339,9 +3339,18 @@ void OBSBasic::on_actionShowProfileFolder_triggered()
QDesktopServices::openUrl(QUrl::fromLocalFile(path));
}
QListWidgetItem *OBSBasic::GetTopSelectedSourceItem()
{
QList<QListWidgetItem*> selectedItems = ui->sources->selectedItems();
QListWidgetItem *topItem = nullptr;
if (selectedItems.size() != 0)
topItem = selectedItems[0];
return topItem;
}
void OBSBasic::on_preview_customContextMenuRequested(const QPoint &pos)
{
CreateSourcePopupMenu(ui->sources->currentItem(), true);
CreateSourcePopupMenu(GetTopSelectedSourceItem(), true);
UNUSED_PARAMETER(pos);
}
......
......@@ -189,6 +189,8 @@ private:
void SaveProjectNow();
QListWidgetItem *GetTopSelectedSourceItem();
obs_hotkey_pair_id streamingHotkeys, recordingHotkeys;
obs_hotkey_id forceStreamingStopHotkey;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册