diff --git a/Source/IconMenu.cpp b/Source/IconMenu.cpp index 0554414..7f86dea 100644 --- a/Source/IconMenu.cpp +++ b/Source/IconMenu.cpp @@ -10,6 +10,9 @@ #include "IconMenu.hpp" #include "PluginWindow.h" #include +#if JUCE_WINDOWS +#include "Windows.h" +#endif #if !JUCE_MAC class IconMenu::PluginListWindow : public DocumentWindow @@ -58,6 +61,9 @@ IconMenu::IconMenu() { // Initiialization formatManager.addDefaultFormats(); + #if JUCE_WINDOWS + x = y = 0; + #endif // Audio device ScopedPointer savedAudioState (getAppProperties().getUserSettings()->getXmlValue("audioDeviceState")); deviceManager.initialise(256, 256, savedAudioState, true); @@ -84,6 +90,7 @@ IconMenu::IconMenu() #else setIconImage(ImageFileFormat::loadFrom(BinaryData::menu_icon_png, BinaryData::menu_icon_pngSize)); #endif + setIconTooltip(JUCEApplication::getInstance()->getApplicationName()); }; IconMenu::~IconMenu() @@ -222,7 +229,22 @@ void IconMenu::timerCallback() { menu.addItem(1, "Quit"); } + #if JUCE_MAC || JUCE_LINUX menu.showMenuAsync(PopupMenu::Options().withTargetComponent(this), ModalCallbackFunction::forComponent(menuInvocationCallback, this)); + #else + if (x == 0 || y == 0) + { + POINT iconLocation; + iconLocation.x = 0; + iconLocation.y = 0; + GetCursorPos(&iconLocation); + std::cout << ""; + x = iconLocation.x; + y = iconLocation.y; + } + juce::Rectangle rect(x, y, 1, 1); + menu.showMenuAsync(PopupMenu::Options().withTargetScreenArea(rect), ModalCallbackFunction::forComponent(menuInvocationCallback, this)); + #endif } void IconMenu::mouseDown(const MouseEvent& e) diff --git a/Source/IconMenu.hpp b/Source/IconMenu.hpp index a2f3d97..fd9bfbb 100644 --- a/Source/IconMenu.hpp +++ b/Source/IconMenu.hpp @@ -18,7 +18,6 @@ public: ~IconMenu(); void mouseDown(const MouseEvent&); static void menuInvocationCallback(int id, IconMenu*); - static void doReloadWithDefaultLocations(int id, IconMenu*); void changeListenerCallback(ChangeBroadcaster* changed); private: #if JUCE_MAC @@ -45,6 +44,10 @@ private: AudioProcessorPlayer player; AudioProcessorGraph::Node *inputNode; AudioProcessorGraph::Node *outputNode; + #if JUCE_WINDOWS + int x, y; + #endif + #if !JUCE_MAC class PluginListWindow; ScopedPointer pluginListWindow;