mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Windows: Allow IME input in plugins
This commit is contained in:
parent
dae9567dca
commit
c13276a4d6
1 changed files with 36 additions and 11 deletions
|
|
@ -2336,18 +2336,43 @@ public:
|
||||||
|
|
||||||
static bool offerKeyMessageToJUCEWindow (MSG& m)
|
static bool offerKeyMessageToJUCEWindow (MSG& m)
|
||||||
{
|
{
|
||||||
if (m.message == WM_KEYDOWN || m.message == WM_KEYUP)
|
auto* peer = getOwnerOfWindow (m.hwnd);
|
||||||
{
|
|
||||||
if (Component::getCurrentlyFocusedComponent() != nullptr)
|
|
||||||
{
|
|
||||||
if (auto* peer = getOwnerOfWindow (m.hwnd))
|
|
||||||
{
|
|
||||||
ScopedThreadDPIAwarenessSetter threadDpiAwarenessSetter { m.hwnd };
|
|
||||||
|
|
||||||
return m.message == WM_KEYDOWN ? peer->doKeyDown (m.wParam)
|
if (peer == nullptr)
|
||||||
: peer->doKeyUp (m.wParam);
|
return false;
|
||||||
}
|
|
||||||
}
|
auto* focused = Component::getCurrentlyFocusedComponent();
|
||||||
|
|
||||||
|
if (focused == nullptr || focused->getPeer() != peer)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
constexpr UINT keyMessages[] { WM_KEYDOWN,
|
||||||
|
WM_KEYUP,
|
||||||
|
WM_SYSKEYDOWN,
|
||||||
|
WM_SYSKEYUP,
|
||||||
|
WM_CHAR };
|
||||||
|
|
||||||
|
const auto messageTypeMatches = [&] (UINT msg) { return m.message == msg; };
|
||||||
|
|
||||||
|
if (std::none_of (std::begin (keyMessages), std::end (keyMessages), messageTypeMatches))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
ScopedThreadDPIAwarenessSetter threadDpiAwarenessSetter { m.hwnd };
|
||||||
|
|
||||||
|
if (m.message == WM_CHAR)
|
||||||
|
return peer->doKeyChar ((int) m.wParam, m.lParam);
|
||||||
|
|
||||||
|
TranslateMessage (&m);
|
||||||
|
|
||||||
|
switch (m.message)
|
||||||
|
{
|
||||||
|
case WM_KEYDOWN:
|
||||||
|
case WM_SYSKEYDOWN:
|
||||||
|
return peer->doKeyDown (m.wParam);
|
||||||
|
|
||||||
|
case WM_KEYUP:
|
||||||
|
case WM_SYSKEYUP:
|
||||||
|
return peer->doKeyUp (m.wParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue