mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Made ApplicationCommandManager::registerCommand update the command info.
This commit is contained in:
parent
38bddb3a0d
commit
76c6d324ac
2 changed files with 26 additions and 14 deletions
|
|
@ -51,7 +51,20 @@ void ApplicationCommandManager::registerCommand (const ApplicationCommandInfo& n
|
||||||
// the name isn't optional!
|
// the name isn't optional!
|
||||||
jassert (newCommand.shortName.isNotEmpty());
|
jassert (newCommand.shortName.isNotEmpty());
|
||||||
|
|
||||||
if (getCommandForID (newCommand.commandID) == 0)
|
if (ApplicationCommandInfo* command = getMutableCommandForID (newCommand.commandID))
|
||||||
|
{
|
||||||
|
// Trying to re-register the same command ID with different parameters can often indicate a typo.
|
||||||
|
// This assertion is here because I've found it useful catching some mistakes, but it may also cause
|
||||||
|
// false alarms if you're deliberately updating some flags for a command.
|
||||||
|
jassert (newCommand.shortName == getCommandForID (newCommand.commandID)->shortName
|
||||||
|
&& newCommand.categoryName == getCommandForID (newCommand.commandID)->categoryName
|
||||||
|
&& newCommand.defaultKeypresses == getCommandForID (newCommand.commandID)->defaultKeypresses
|
||||||
|
&& (newCommand.flags & (ApplicationCommandInfo::wantsKeyUpDownCallbacks | ApplicationCommandInfo::hiddenFromKeyEditor | ApplicationCommandInfo::readOnlyInKeyEditor))
|
||||||
|
== (getCommandForID (newCommand.commandID)->flags & (ApplicationCommandInfo::wantsKeyUpDownCallbacks | ApplicationCommandInfo::hiddenFromKeyEditor | ApplicationCommandInfo::readOnlyInKeyEditor)));
|
||||||
|
|
||||||
|
*command = newCommand;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
ApplicationCommandInfo* const newInfo = new ApplicationCommandInfo (newCommand);
|
ApplicationCommandInfo* const newInfo = new ApplicationCommandInfo (newCommand);
|
||||||
newInfo->flags &= ~ApplicationCommandInfo::isTicked;
|
newInfo->flags &= ~ApplicationCommandInfo::isTicked;
|
||||||
|
|
@ -61,16 +74,6 @@ void ApplicationCommandManager::registerCommand (const ApplicationCommandInfo& n
|
||||||
|
|
||||||
triggerAsyncUpdate();
|
triggerAsyncUpdate();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
// trying to re-register the same command ID with different parameters?
|
|
||||||
jassert (newCommand.shortName == getCommandForID (newCommand.commandID)->shortName
|
|
||||||
&& (newCommand.description == getCommandForID (newCommand.commandID)->description || newCommand.description.isEmpty())
|
|
||||||
&& newCommand.categoryName == getCommandForID (newCommand.commandID)->categoryName
|
|
||||||
&& newCommand.defaultKeypresses == getCommandForID (newCommand.commandID)->defaultKeypresses
|
|
||||||
&& (newCommand.flags & (ApplicationCommandInfo::wantsKeyUpDownCallbacks | ApplicationCommandInfo::hiddenFromKeyEditor | ApplicationCommandInfo::readOnlyInKeyEditor))
|
|
||||||
== (getCommandForID (newCommand.commandID)->flags & (ApplicationCommandInfo::wantsKeyUpDownCallbacks | ApplicationCommandInfo::hiddenFromKeyEditor | ApplicationCommandInfo::readOnlyInKeyEditor)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ApplicationCommandManager::registerAllCommandsForTarget (ApplicationCommandTarget* target)
|
void ApplicationCommandManager::registerAllCommandsForTarget (ApplicationCommandTarget* target)
|
||||||
|
|
@ -113,7 +116,7 @@ void ApplicationCommandManager::commandStatusChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
const ApplicationCommandInfo* ApplicationCommandManager::getCommandForID (const CommandID commandID) const noexcept
|
ApplicationCommandInfo* ApplicationCommandManager::getMutableCommandForID (CommandID commandID) const noexcept
|
||||||
{
|
{
|
||||||
for (int i = commands.size(); --i >= 0;)
|
for (int i = commands.size(); --i >= 0;)
|
||||||
if (commands.getUnchecked(i)->commandID == commandID)
|
if (commands.getUnchecked(i)->commandID == commandID)
|
||||||
|
|
@ -122,6 +125,11 @@ const ApplicationCommandInfo* ApplicationCommandManager::getCommandForID (const
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ApplicationCommandInfo* ApplicationCommandManager::getCommandForID (const CommandID commandID) const noexcept
|
||||||
|
{
|
||||||
|
return getMutableCommandForID (commandID);
|
||||||
|
}
|
||||||
|
|
||||||
String ApplicationCommandManager::getNameOfCommand (const CommandID commandID) const noexcept
|
String ApplicationCommandManager::getNameOfCommand (const CommandID commandID) const noexcept
|
||||||
{
|
{
|
||||||
if (const ApplicationCommandInfo* const ci = getCommandForID (commandID))
|
if (const ApplicationCommandInfo* const ci = getCommandForID (commandID))
|
||||||
|
|
@ -215,7 +223,10 @@ ApplicationCommandTarget* ApplicationCommandManager::getTargetForCommand (const
|
||||||
target = target->getTargetForCommand (commandID);
|
target = target->getTargetForCommand (commandID);
|
||||||
|
|
||||||
if (target != nullptr)
|
if (target != nullptr)
|
||||||
|
{
|
||||||
|
upToDateInfo.commandID = commandID;
|
||||||
target->getCommandInfo (commandID, upToDateInfo);
|
target->getCommandInfo (commandID, upToDateInfo);
|
||||||
|
}
|
||||||
|
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
@ -223,7 +234,7 @@ ApplicationCommandTarget* ApplicationCommandManager::getTargetForCommand (const
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
ApplicationCommandTarget* ApplicationCommandManager::findTargetForComponent (Component* c)
|
ApplicationCommandTarget* ApplicationCommandManager::findTargetForComponent (Component* c)
|
||||||
{
|
{
|
||||||
ApplicationCommandTarget* target = dynamic_cast <ApplicationCommandTarget*> (c);
|
ApplicationCommandTarget* target = dynamic_cast<ApplicationCommandTarget*> (c);
|
||||||
|
|
||||||
if (target == nullptr && c != nullptr)
|
if (target == nullptr && c != nullptr)
|
||||||
target = c->findParentComponentOfClass<ApplicationCommandTarget>();
|
target = c->findParentComponentOfClass<ApplicationCommandTarget>();
|
||||||
|
|
@ -263,7 +274,7 @@ ApplicationCommandTarget* ApplicationCommandManager::findDefaultComponentTarget(
|
||||||
// component that really should get the event. And if not, the event will
|
// component that really should get the event. And if not, the event will
|
||||||
// still be passed up to the top level window anyway, so let's send it to the
|
// still be passed up to the top level window anyway, so let's send it to the
|
||||||
// content comp.
|
// content comp.
|
||||||
if (ResizableWindow* const resizableWindow = dynamic_cast <ResizableWindow*> (c))
|
if (ResizableWindow* const resizableWindow = dynamic_cast<ResizableWindow*> (c))
|
||||||
if (Component* const content = resizableWindow->getContentComponent())
|
if (Component* const content = resizableWindow->getContentComponent())
|
||||||
c = content;
|
c = content;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -308,6 +308,7 @@ private:
|
||||||
void sendListenerInvokeCallback (const ApplicationCommandTarget::InvocationInfo&);
|
void sendListenerInvokeCallback (const ApplicationCommandTarget::InvocationInfo&);
|
||||||
void handleAsyncUpdate() override;
|
void handleAsyncUpdate() override;
|
||||||
void globalFocusChanged (Component*) override;
|
void globalFocusChanged (Component*) override;
|
||||||
|
ApplicationCommandInfo* getMutableCommandForID (CommandID) const noexcept;
|
||||||
|
|
||||||
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
|
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
|
||||||
// This is just here to cause a compile error in old code that hasn't been changed to use the new
|
// This is just here to cause a compile error in old code that hasn't been changed to use the new
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue