void CommandChanged(const SmartPointer<const CommandEvent>& commandEvent) override
 {
   if (commandEvent->IsHandledChanged() || commandEvent->IsEnabledChanged()
       || commandEvent->IsDefinedChanged())
   {
     item->UpdateCommandProperties(commandEvent);
   }
 }
Пример #2
0
void Command::HandlerChanged(const SmartPointer<HandlerEvent>& handlerEvent)
{
  bool enabledChanged = handlerEvent->IsEnabledChanged();
  bool handledChanged = handlerEvent->IsHandledChanged();
  CommandEvent::Pointer cmdEvent(new CommandEvent(Command::Pointer(this), false,
                                                  false, false, handledChanged, false, false, false,
                                                  false, enabledChanged));
  this->FireCommandChanged(cmdEvent);
}
void CommandContributionItem::UpdateCommandPropertiesInUI(const SmartPointer<
    const CommandEvent>& commandEvent)
{
   if (commandEvent->GetCommand()->IsDefined())
   {
     this->Update();
   }
   if (commandEvent->IsEnabledChanged()
       || commandEvent->IsHandledChanged())
   {
     if (visibleEnabled)
     {
       IContributionManager* parent = this->GetParent();
       if (parent)
       {
         parent->Update(true);
       }
     }
   }
}
void CommandContributionItem::UpdateCommandProperties(const SmartPointer<
    const CommandEvent> commandEvent)
{
  if (commandEvent->IsHandledChanged())
  {
    dropDownMenuOverride = "";
  }
  if (!action)
  {
    return;
  }
  Display* display = Display::GetDefault();
  typedef AsyncRunnable<SmartPointer<const CommandEvent>, CommandContributionItem > UpdateRunnable;
  Poco::Runnable* update = new UpdateRunnable(this, &CommandContributionItem::UpdateCommandPropertiesInUI, commandEvent);
  if (display->InDisplayThread())
  {
    update->run();
  }
  else
  {
    display->AsyncExec(update);
  }
}