Escape closes the about dialog

This commit is contained in:
Paul Fd 2021-12-30 11:33:33 +01:00
parent aa1b79936f
commit 280a14f922
3 changed files with 25 additions and 2 deletions

View file

@ -223,6 +223,24 @@ CMouseEventResult SAboutDialog::onMouseDown(CPoint& where, const CButtonState& b
return result;
}
int32_t SAboutDialog::onKeyDown (const VstKeyCode& keyCode, CFrame* frame)
{
if (keyCode.virt == VKEY_ESCAPE) {
setVisible(false);
frame->unregisterKeyboardHook(this);
return 1;
}
return -1;
}
int32_t SAboutDialog::onKeyUp (const VstKeyCode& keyCode, CFrame* frame)
{
(void)keyCode;
(void)frame;
return -1;
}
void SAboutDialog::valueChanged(CControl *ctl)
{
int32_t tag = ctl->getTag();

View file

@ -13,7 +13,7 @@
using namespace VSTGUI;
class SAboutDialog : public CViewContainer, public IControlListener {
class SAboutDialog : public CViewContainer, public IControlListener, public IKeyboardHook{
enum {
kTagButtonSfztools,
@ -28,6 +28,8 @@ public:
void setPluginFormat(const std::string& pluginFormat);
void setPluginHost(const std::string& pluginHost);
int32_t onKeyDown (const VstKeyCode& code, CFrame* frame) override;
int32_t onKeyUp (const VstKeyCode& code, CFrame* frame) override;
protected:
CMouseEventResult onMouseDown(CPoint& where, const CButtonState& buttons) override;

View file

@ -2128,7 +2128,10 @@ void Editor::Impl::valueChanged(CControl* ctl)
if (value != 1)
break;
Call::later([this]() { aboutDialog_->setVisible(true); });
Call::later([this]() {
aboutDialog_->setVisible(true);
frame_->registerKeyboardHook(aboutDialog_);
});
break;
case kTagThemeMenu: