Fix menu position on Windows

This commit is contained in:
Rolando Islas
2015-12-31 18:55:03 -07:00
parent 33af87aaf2
commit 3094d15f8f
2 changed files with 26 additions and 1 deletions
+22
View File
@@ -10,6 +10,9 @@
#include "IconMenu.hpp" #include "IconMenu.hpp"
#include "PluginWindow.h" #include "PluginWindow.h"
#include <ctime> #include <ctime>
#if JUCE_WINDOWS
#include "Windows.h"
#endif
#if !JUCE_MAC #if !JUCE_MAC
class IconMenu::PluginListWindow : public DocumentWindow class IconMenu::PluginListWindow : public DocumentWindow
@@ -58,6 +61,9 @@ IconMenu::IconMenu()
{ {
// Initiialization // Initiialization
formatManager.addDefaultFormats(); formatManager.addDefaultFormats();
#if JUCE_WINDOWS
x = y = 0;
#endif
// Audio device // Audio device
ScopedPointer<XmlElement> savedAudioState (getAppProperties().getUserSettings()->getXmlValue("audioDeviceState")); ScopedPointer<XmlElement> savedAudioState (getAppProperties().getUserSettings()->getXmlValue("audioDeviceState"));
deviceManager.initialise(256, 256, savedAudioState, true); deviceManager.initialise(256, 256, savedAudioState, true);
@@ -84,6 +90,7 @@ IconMenu::IconMenu()
#else #else
setIconImage(ImageFileFormat::loadFrom(BinaryData::menu_icon_png, BinaryData::menu_icon_pngSize)); setIconImage(ImageFileFormat::loadFrom(BinaryData::menu_icon_png, BinaryData::menu_icon_pngSize));
#endif #endif
setIconTooltip(JUCEApplication::getInstance()->getApplicationName());
}; };
IconMenu::~IconMenu() IconMenu::~IconMenu()
@@ -222,7 +229,22 @@ void IconMenu::timerCallback()
{ {
menu.addItem(1, "Quit"); menu.addItem(1, "Quit");
} }
#if JUCE_MAC || JUCE_LINUX
menu.showMenuAsync(PopupMenu::Options().withTargetComponent(this), ModalCallbackFunction::forComponent(menuInvocationCallback, this)); 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<int> rect(x, y, 1, 1);
menu.showMenuAsync(PopupMenu::Options().withTargetScreenArea(rect), ModalCallbackFunction::forComponent(menuInvocationCallback, this));
#endif
} }
void IconMenu::mouseDown(const MouseEvent& e) void IconMenu::mouseDown(const MouseEvent& e)
+4 -1
View File
@@ -18,7 +18,6 @@ public:
~IconMenu(); ~IconMenu();
void mouseDown(const MouseEvent&); void mouseDown(const MouseEvent&);
static void menuInvocationCallback(int id, IconMenu*); static void menuInvocationCallback(int id, IconMenu*);
static void doReloadWithDefaultLocations(int id, IconMenu*);
void changeListenerCallback(ChangeBroadcaster* changed); void changeListenerCallback(ChangeBroadcaster* changed);
private: private:
#if JUCE_MAC #if JUCE_MAC
@@ -45,6 +44,10 @@ private:
AudioProcessorPlayer player; AudioProcessorPlayer player;
AudioProcessorGraph::Node *inputNode; AudioProcessorGraph::Node *inputNode;
AudioProcessorGraph::Node *outputNode; AudioProcessorGraph::Node *outputNode;
#if JUCE_WINDOWS
int x, y;
#endif
#if !JUCE_MAC #if !JUCE_MAC
class PluginListWindow; class PluginListWindow;
ScopedPointer<PluginListWindow> pluginListWindow; ScopedPointer<PluginListWindow> pluginListWindow;