From 90a692a58c57b6f4b972672b2fbd490e4dd881e4 Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 9 Aug 2018 17:19:12 +0100 Subject: [PATCH] Enable DPI aware plug-in hosting in the AudioPluginHost --- .../Source/Filters/FilterGraph.cpp | 9 +++++++++ .../Source/UI/GraphEditorPanel.cpp | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/extras/AudioPluginHost/Source/Filters/FilterGraph.cpp b/extras/AudioPluginHost/Source/Filters/FilterGraph.cpp index 4e24f74bd1..07ee7c67bf 100644 --- a/extras/AudioPluginHost/Source/Filters/FilterGraph.cpp +++ b/extras/AudioPluginHost/Source/Filters/FilterGraph.cpp @@ -169,6 +169,15 @@ PluginWindow* FilterGraph::getOrCreateWindowFor (AudioProcessorGraph::Node* node } } + #if JUCE_WINDOWS && JUCE_WIN_PER_MONITOR_DPI_AWARE + if (! node->properties["DPIAware"] + && ! node->getProcessor()->getName().contains ("Kontakt")) // Kontakt doesn't behave correctly in DPI unaware mode... + { + ScopedDPIAwarenessDisabler disableDPIAwareness; + return activePluginWindows.add (new PluginWindow (node, type, activePluginWindows)); + } + #endif + return activePluginWindows.add (new PluginWindow (node, type, activePluginWindows)); } diff --git a/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp index cf3c67f5f3..2b7b8d0410 100644 --- a/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp +++ b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp @@ -410,6 +410,13 @@ struct GraphEditorPanel::FilterComponent : public Component, menu->addItem (10, "Show plugin GUI"); menu->addItem (11, "Show all programs"); menu->addItem (12, "Show all parameters"); + #if JUCE_WINDOWS && JUCE_WIN_PER_MONITOR_DPI_AWARE + auto isTicked = false; + if (auto* node = graph.graph.getNodeForId (pluginID)) + isTicked = node->properties["DPIAware"]; + + menu->addItem (13, "Enable DPI awareness", true, isTicked); + #endif } menu->addSeparator(); @@ -433,7 +440,13 @@ struct GraphEditorPanel::FilterComponent : public Component, } case 10: showWindow (PluginWindow::Type::normal); break; case 11: showWindow (PluginWindow::Type::programs); break; - case 12: showWindow (PluginWindow::Type::generic); break; + case 12: showWindow (PluginWindow::Type::generic) ; break; + case 13: + { + if (auto* node = graph.graph.getNodeForId (pluginID)) + node->properties.set ("DPIAware", ! node->properties ["DPIAware"]); + break; + } case 20: showWindow (PluginWindow::Type::audioIO); break; case 21: testStateSaveLoad(); break;