From 280a14f922849eb2b381c613f3d7e9739d6a6ef3 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Thu, 30 Dec 2021 11:33:33 +0100 Subject: [PATCH] Escape closes the about dialog --- plugins/editor/src/editor/DlgAbout.cpp | 18 ++++++++++++++++++ plugins/editor/src/editor/DlgAbout.h | 4 +++- plugins/editor/src/editor/Editor.cpp | 5 ++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/plugins/editor/src/editor/DlgAbout.cpp b/plugins/editor/src/editor/DlgAbout.cpp index 731a2a55..e701f352 100644 --- a/plugins/editor/src/editor/DlgAbout.cpp +++ b/plugins/editor/src/editor/DlgAbout.cpp @@ -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(); diff --git a/plugins/editor/src/editor/DlgAbout.h b/plugins/editor/src/editor/DlgAbout.h index 23c0a6e0..1571ac4d 100644 --- a/plugins/editor/src/editor/DlgAbout.h +++ b/plugins/editor/src/editor/DlgAbout.h @@ -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; diff --git a/plugins/editor/src/editor/Editor.cpp b/plugins/editor/src/editor/Editor.cpp index 2ac5a35b..286a9ef9 100644 --- a/plugins/editor/src/editor/Editor.cpp +++ b/plugins/editor/src/editor/Editor.cpp @@ -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: