Skip to content

Commit

Permalink
#6151: Prevent feedback loops when synchronising the media browser se…
Browse files Browse the repository at this point in the history
…lection to the shader clipboard
  • Loading branch information
codereader committed Nov 5, 2022
1 parent 18dca55 commit 5cb3fb3
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
22 changes: 19 additions & 3 deletions radiant/ui/mediabrowser/MediaBrowser.cpp
Expand Up @@ -98,6 +98,8 @@ void MediaBrowser::onIdle()

if (!_queuedSelection.empty())
{
util::ScopedBoolLock lock(_blockShaderClipboardUpdates);

setSelection(_queuedSelection);
_queuedSelection.clear();
}
Expand Down Expand Up @@ -180,17 +182,31 @@ void MediaBrowser::onMaterialDefsUnloaded()

void MediaBrowser::_onTreeViewSelectionChanged(wxDataViewEvent& ev)
{
util::ScopedBoolLock lock(_blockShaderClipboardUpdates);

// Update the preview if a texture is selected
if (!_treeView->IsDirectorySelected())
{
_preview->SetPreviewDeclName(getSelection());
GlobalShaderClipboard().setSourceShader(getSelection());
}
else
{
_preview->ClearPreview();
}

sendSelectionToShaderClipboard();
}

void MediaBrowser::sendSelectionToShaderClipboard()
{
if (_blockShaderClipboardUpdates) return;

util::ScopedBoolLock lock(_blockShaderClipboardUpdates);

if (!_treeView->IsDirectorySelected())
{
GlobalShaderClipboard().setSourceShader(getSelection());
}
else
{
// Nothing selected, clear the clipboard
GlobalShaderClipboard().clear();
}
Expand Down
1 change: 1 addition & 0 deletions radiant/ui/mediabrowser/MediaBrowser.h
Expand Up @@ -89,6 +89,7 @@ class MediaBrowser :
void focusMaterial(FocusMaterialRequest& request);

void onShaderClipboardSourceChanged();
void sendSelectionToShaderClipboard();
};

}

0 comments on commit 5cb3fb3

Please sign in to comment.