From: <sv...@op...> - 2024-09-20 11:35:38
|
Author: sagamusix Date: Fri Sep 20 13:35:30 2024 New Revision: 21651 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21651 Log: [Mod/Fix] Remove the last traces of the global keyboard hook. Modifier states are no longer cached, which should resolve the last remaining problems of "stuck" modifier keys. [Reg] Special key interception (Win/CapsLock/ScrollLock/NumLock) is no longer active in dialogs where there is no input handling (e.g. file dialogs, message boxes). Modified: trunk/OpenMPT/mptrack/Ctrl_com.cpp trunk/OpenMPT/mptrack/Ctrl_gen.cpp trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/InputHandler.cpp trunk/OpenMPT/mptrack/InputHandler.h trunk/OpenMPT/mptrack/KeyConfigDlg.cpp trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_tre.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_com.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_com.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/Ctrl_com.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -333,7 +333,7 @@ // Ctrl-A is not handled by multiline edit boxes if(::GetFocus() == m_EditComments.m_hWnd) m_EditComments.SetSel(0, -1); - } else if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_TAB && CMainFrame::GetMainFrame()->GetInputHandler()->GetModifierMask() == ModNone) + } else if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_TAB && CInputHandler::GetModifierMask() == ModNone) { int selStart, selEnd; m_EditComments.GetSel(selStart, selEnd); Modified: trunk/OpenMPT/mptrack/Ctrl_gen.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/Ctrl_gen.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -465,9 +465,9 @@ pos32 *= TEMPO::fractFact; if(m_sndFile.GetModSpecifications().hasFractionalTempo) { - if(CMainFrame::GetMainFrame()->GetInputHandler()->CtrlPressed()) + if(CInputHandler::CtrlPressed()) pos32 /= 100; - else if(CMainFrame::GetMainFrame()->GetInputHandler()->ShiftPressed()) + else if(CInputHandler::ShiftPressed()) pos32 /= 10; } TEMPO newTempo; Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -1953,7 +1953,7 @@ void CCtrlInstruments::OnInstrumentNew() { - InsertInstrument(m_sndFile.GetNumInstruments() > 0 && CMainFrame::GetInputHandler()->ShiftPressed()); + InsertInstrument(m_sndFile.GetNumInstruments() > 0 && CInputHandler::ShiftPressed()); SwitchToView(); } @@ -2025,7 +2025,7 @@ void CCtrlInstruments::OnInstrumentSave() { - SaveInstrument(CMainFrame::GetInputHandler()->ShiftPressed()); + SaveInstrument(CInputHandler::ShiftPressed()); } @@ -2833,7 +2833,7 @@ { if(m_nInstrument) { - m_modDoc.TogglePluginEditor(m_CbnMixPlug.GetSelection().value_or(PLUGINDEX_INVALID), CMainFrame::GetInputHandler()->ShiftPressed()); + m_modDoc.TogglePluginEditor(m_CbnMixPlug.GetSelection().value_or(PLUGINDEX_INVALID), CInputHandler::ShiftPressed()); } } @@ -3020,7 +3020,7 @@ if(IsLocked() || !m_nInstrument) return; INSTRUMENTINDEX firstIns = m_nInstrument, lastIns = m_nInstrument; - if(CMainFrame::GetInputHandler()->ShiftPressed()) + if(CInputHandler::ShiftPressed()) { firstIns = 1; lastIns = m_sndFile.GetNumInstruments(); Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -1260,7 +1260,7 @@ { if(m_sndFile.GetInstrumentPlugin(m_nInstrument) != nullptr) { - m_modDoc.TogglePluginEditor(m_sndFile.Instruments[m_nInstrument]->nMixPlug - 1, CMainFrame::GetInputHandler()->ShiftPressed()); + m_modDoc.TogglePluginEditor(m_sndFile.Instruments[m_nInstrument]->nMixPlug - 1, CInputHandler::ShiftPressed()); } } Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -1171,7 +1171,7 @@ void CCtrlSamples::OnSampleNew() { - InsertSample(CMainFrame::GetInputHandler()->ShiftPressed()); + InsertSample(CInputHandler::ShiftPressed()); SwitchToView(); } @@ -1359,7 +1359,7 @@ void CCtrlSamples::OnSampleSave() { - SaveSample(CMainFrame::GetInputHandler()->ShiftPressed()); + SaveSample(CInputHandler::ShiftPressed()); } @@ -1628,7 +1628,7 @@ void CCtrlSamples::OnNormalize() { - Normalize(CMainFrame::GetInputHandler()->ShiftPressed()); + Normalize(CInputHandler::ShiftPressed()); } @@ -1709,7 +1709,7 @@ void CCtrlSamples::OnRemoveDCOffset() { - RemoveDCOffset(CMainFrame::GetInputHandler()->ShiftPressed()); + RemoveDCOffset(CInputHandler::ShiftPressed()); } @@ -1785,7 +1785,7 @@ return; SAMPLEINDEX first = m_nSample, last = m_nSample; - if(CMainFrame::GetInputHandler()->ShiftPressed()) + if(CInputHandler::ShiftPressed()) { first = 1; last = m_sndFile.GetNumSamples(); @@ -3032,7 +3032,7 @@ void CCtrlSamples::OnKeepSampleOnDisk() { SAMPLEINDEX first = m_nSample, last = m_nSample; - if(CMainFrame::GetInputHandler()->ShiftPressed()) + if(CInputHandler::ShiftPressed()) { first = 1; last = m_sndFile.GetNumSamples(); Modified: trunk/OpenMPT/mptrack/InputHandler.cpp ============================================================================== --- trunk/OpenMPT/mptrack/InputHandler.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/InputHandler.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -92,40 +92,14 @@ } -void CInputHandler::HandleModifierChanges(WPARAM wParam, LPARAM lParam) -{ - KeyMapRange cmd = { m_keyMap.end(), m_keyMap.end() }; - KeyEventType keyEventType; - - // Get the KeyEventType (key up, key down, key repeat) - DWORD scancode = static_cast<LONG>(lParam) >> 16; - if((scancode & 0xC000) == 0xC000) - keyEventType = kKeyEventUp; - else if((scancode & 0xC000) == 0x0000) - keyEventType = kKeyEventDown; - else - keyEventType = kKeyEventRepeat; - - // Catch modifier change (ctrl, alt, shift) - Only check on keyDown or keyUp. - // NB: we want to catch modifiers even when the input handler is locked - if(keyEventType == kKeyEventUp || keyEventType == kKeyEventDown) - { - scancode = (static_cast<LONG>(lParam) >> 16) & 0x1FF; - CatchModifierChange(wParam, keyEventType, scancode); - } - - if(!IsBypassed()) - InterceptSpecialKeys(static_cast<UINT>(wParam), static_cast<LONG>(lParam), true); -} - - CommandID CInputHandler::KeyEvent(const InputTargetContext context, const KeyboardEvent &event, CWnd *pSourceWnd) { if(InterceptSpecialKeys(event.key, event.flags, false)) return kcDummyShortcut; if(IsKeyPressHandledByTextBox(event.key, ::GetFocus())) return kcNull; - KeyMapRange cmd = m_keyMap.equal_range(KeyCombination(context, m_modifierMask, event.key, event.keyEventType)); + + KeyMapRange cmd = m_keyMap.equal_range(KeyCombination(context, GetModifierMask(), event.key, event.keyEventType)); if(pSourceWnd == nullptr) pSourceWnd = m_pMainFrm; // By default, send command message to main frame. @@ -202,50 +176,6 @@ }; -//Deal with Modifier keypresses. Private surouting used above. -bool CInputHandler::CatchModifierChange(WPARAM wParam, KeyEventType keyEventType, int scancode) -{ - FlagSet<Modifiers> modifierMask = ModNone; - // Scancode for right modifier keys should have bit 8 set, but Right Shift is actually 0x36. - const bool isRight = ((scancode & 0x100) || scancode == 0x36) && TrackerSettings::Instance().MiscDistinguishModifiers; - switch(wParam) - { - case VK_CONTROL: - modifierMask.set(isRight ? ModRCtrl : ModCtrl); - break; - case VK_SHIFT: - modifierMask.set(isRight ? ModRShift : ModShift); - break; - case VK_MENU: - modifierMask.set(isRight ? ModRAlt : ModAlt); - break; - case VK_LWIN: case VK_RWIN: // Feature: use Windows keys as modifier keys - modifierMask.set(ModWin); - break; - } - - if (modifierMask) // This keypress just changed the modifier mask - { - if (keyEventType == kKeyEventDown) - { - m_modifierMask.set(modifierMask); - // Right Alt is registered as Ctrl+Alt. - // Left Ctrl + Right Alt seems like a pretty difficult to use key combination anyway, so just ignore Ctrl. - if(scancode == 0x138) - m_modifierMask.reset(ModCtrl); -#ifdef _DEBUG - LogModifiers(); -#endif - } else if (keyEventType == kKeyEventUp) - m_modifierMask.reset(modifierMask); - - return true; - } - - return false; -} - - // Translate MIDI messages to shortcut commands CommandID CInputHandler::HandleMIDIMessage(InputTargetContext context, uint32 message) { @@ -293,19 +223,6 @@ } -//----------------------- Misc - - -void CInputHandler::LogModifiers() -{ - MPT_LOG_GLOBAL(LogDebug, "InputHandler", U_("----------------------------------\n")); - MPT_LOG_GLOBAL(LogDebug, "InputHandler", m_modifierMask[ModCtrl] ? U_("Ctrl On") : U_("Ctrl --")); - MPT_LOG_GLOBAL(LogDebug, "InputHandler", m_modifierMask[ModShift] ? U_("\tShft On") : U_("\tShft --")); - MPT_LOG_GLOBAL(LogDebug, "InputHandler", m_modifierMask[ModAlt] ? U_("\tAlt On") : U_("\tAlt --")); - MPT_LOG_GLOBAL(LogDebug, "InputHandler", m_modifierMask[ModWin] ? U_("\tWin On\n") : U_("\tWin --\n")); -} - - CInputHandler::KeyboardEvent CInputHandler::Translate(const MSG &msg) { MPT_ASSERT(msg.message == WM_KEYDOWN || msg.message == WM_SYSKEYDOWN || msg.message == WM_KEYUP || msg.message == WM_SYSKEYUP); @@ -364,33 +281,32 @@ int nSelectionKeys = m_activeCommandSet->GetKeyListSize(kcSelect); KeyCombination key; + const auto modifierMask = GetModifierMask(); for (int k=0; k<nSelectionKeys; k++) { key = m_activeCommandSet->GetKey(kcSelect, k); - if (m_modifierMask & key.Modifier()) - { + if(modifierMask & key.Modifier()) return true; - } } return false; } -bool CInputHandler::ShiftPressed() const +bool CInputHandler::ShiftPressed() { - return m_modifierMask[ModShift | ModRShift]; + return (GetAsyncKeyState(VK_SHIFT) & 0x8000) != 0; } -bool CInputHandler::CtrlPressed() const +bool CInputHandler::CtrlPressed() { - return m_modifierMask[ModCtrl | ModRCtrl]; + return (GetAsyncKeyState(VK_CONTROL) & 0x8000) != 0; } -bool CInputHandler::AltPressed() const +bool CInputHandler::AltPressed() { - return m_modifierMask[ModAlt | ModRAlt]; + return (GetAsyncKeyState(VK_MENU) & 0x8000) != 0; } @@ -425,15 +341,31 @@ } -FlagSet<Modifiers> CInputHandler::GetModifierMask() const +FlagSet<Modifiers> CInputHandler::GetModifierMask() { - return m_modifierMask; -} - + BYTE keyStates[256]; + FlagSet<Modifiers> modifierMask = ModNone; + if(!GetKeyboardState(keyStates)) + return modifierMask; -void CInputHandler::SetModifierMask(FlagSet<Modifiers> mask) -{ - m_modifierMask = mask; + const bool distinguishModifiers = TrackerSettings::Instance().MiscDistinguishModifiers; + if(keyStates[VK_LCONTROL] & 0x80) + modifierMask.set(ModCtrl); + if(keyStates[VK_RCONTROL] & 0x80) + modifierMask.set(distinguishModifiers ? ModRCtrl : ModCtrl); + if(keyStates[VK_LSHIFT] & 0x80) + modifierMask.set(ModShift); + if(keyStates[VK_RSHIFT] & 0x80) + modifierMask.set(distinguishModifiers ? ModRShift : ModShift); + if(keyStates[VK_LMENU] & 0x80) + modifierMask.set(ModAlt); + if(keyStates[VK_RMENU] & 0x80) + modifierMask.set(distinguishModifiers ? ModRAlt : ModAlt); + if(keyStates[VK_LWIN] & 0x80) + modifierMask.set(ModWin); + if(keyStates[VK_RWIN] & 0x80) + modifierMask.set(ModWin); + return modifierMask; } Modified: trunk/OpenMPT/mptrack/InputHandler.h ============================================================================== --- trunk/OpenMPT/mptrack/InputHandler.h Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/InputHandler.h Fri Sep 20 13:35:30 2024 (r21651) @@ -23,7 +23,6 @@ protected: CWnd *m_pMainFrm; KeyMap m_keyMap; - FlagSet<Modifiers> m_modifierMask = ModNone; int m_bypassCount = 0; bool m_bInterceptWindowsKeys : 1, m_bInterceptNumLock : 1, m_bInterceptCapsLock : 1, m_bInterceptScrollLock : 1; @@ -43,7 +42,6 @@ public: CInputHandler(CWnd *mainframe); - void HandleModifierChanges(WPARAM wParam, LPARAM lParam); CommandID KeyEvent(const InputTargetContext context, const KeyboardEvent &event, CWnd *pSourceWnd = nullptr); static KeyboardEvent Translate(const MSG &msg); static KeyEventType GetKeyEventType(const MSG &msg); @@ -54,22 +52,19 @@ int GetKeyListSize(CommandID cmd) const; protected: - void LogModifiers(); - bool CatchModifierChange(WPARAM wParam, KeyEventType keyEventType, int scancode); bool InterceptSpecialKeys(UINT nChar, UINT nFlags, bool generateMsg); void SetupSpecialKeyInterception(); CommandID SendCommands(CWnd *wnd, const KeyMapRange &cmd); public: - bool ShiftPressed() const; bool SelectionPressed() const; - bool CtrlPressed() const; - bool AltPressed() const; + static bool ShiftPressed(); + static bool CtrlPressed(); + static bool AltPressed(); OrderTransitionMode ModifierKeysToTransitionMode(); bool IsBypassed() const; void Bypass(bool); - FlagSet<Modifiers> GetModifierMask() const; - void SetModifierMask(FlagSet<Modifiers> mask); + static FlagSet<Modifiers> GetModifierMask(); CString GetKeyTextFromCommand(CommandID c, const TCHAR *prependText = nullptr) const; CString GetMenuText(UINT id) const; void UpdateMainMenu(); Modified: trunk/OpenMPT/mptrack/KeyConfigDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/KeyConfigDlg.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/KeyConfigDlg.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -77,7 +77,7 @@ { if(pMsg->message == WM_KEYDOWN || pMsg->message == WM_SYSKEYDOWN) { - SetKey(CMainFrame::GetInputHandler()->GetModifierMask(), static_cast<UINT>(pMsg->wParam)); + SetKey(CInputHandler::GetModifierMask(), static_cast<UINT>(pMsg->wParam)); return -1; // Keypress handled, don't pass on message. } else if(pMsg->message == WM_KEYUP || pMsg->message == WM_SYSKEYUP) { Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -140,8 +140,6 @@ ON_COMMAND_RANGE(ID_MRU_LIST_FIRST, ID_MRU_LIST_LAST, &CMainFrame::OnOpenMRUItem) ON_UPDATE_COMMAND_UI(ID_MRU_LIST_FIRST, &CMainFrame::OnUpdateMRUItem) //}}AFX_MSG_MAP - ON_WM_INITMENU() - ON_WM_KILLFOCUS() ON_WM_MOUSEWHEEL() ON_WM_SHOWWINDOW() ON_WM_ACTIVATEAPP() @@ -149,7 +147,6 @@ // Globals OptionsPage CMainFrame::m_nLastOptionsPage = OPTIONS_PAGE_DEFAULT; -HHOOK CMainFrame::ghKbdHook = nullptr; HHOOK CMainFrame::g_focusHook = nullptr; // GDI @@ -234,7 +231,6 @@ m_nTimer = SetTimer(TIMERID_GUI, MPTTIMER_PERIOD, NULL); // Setup Keyboard Hook - ghKbdHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, AfxGetInstanceHandle(), GetCurrentThreadId()); g_focusHook = SetWindowsHookEx(WH_CBT, FocusChangeProc, AfxGetInstanceHandle(), GetCurrentThreadId()); // Update the tree @@ -351,12 +347,6 @@ #pragma warning(pop) #endif - // Uninstall Keyboard Hook - if(ghKbdHook) - { - UnhookWindowsHookEx(ghKbdHook); - ghKbdHook = nullptr; - } if(g_focusHook) { UnhookWindowsHookEx(g_focusHook); @@ -466,7 +456,7 @@ const mpt::PathString file = mpt::PathString::FromNative(fileName.data()); #ifdef MPT_BUILD_DEBUG // Debug Hack: Quickly scan a folder containing module files (without running out of window handles ;) - if(m_InputHandler->CtrlPressed() && m_InputHandler->AltPressed() && m_InputHandler->ShiftPressed() && mpt::native_fs{}.is_directory(file)) + if(CInputHandler::GetModifierMask().test_all(ModCtrl | ModShift | ModAlt) && mpt::native_fs{}.is_directory(file)) { FolderScanner scanner(file, FolderScanner::kOnlyFiles | FolderScanner::kFindInSubDirectories); mpt::PathString scanName; @@ -500,21 +490,10 @@ { if(active) IPCWindow::UpdateLastUsed(); - else - m_InputHandler->SetModifierMask(ModNone); // Ensure modifiers are reset when we leave the window (e.g. Alt-Tab) CMDIFrameWnd::OnActivateApp(active, threadID); } -LRESULT CALLBACK CMainFrame::KeyboardProc(int code, WPARAM wParam, LPARAM lParam) -{ - if(code == HC_ACTION) - m_InputHandler->HandleModifierChanges(wParam, lParam); - - return CallNextHookEx(ghKbdHook, code, wParam, lParam); -} - - LRESULT CALLBACK CMainFrame::FocusChangeProc(int code, WPARAM wParam, LPARAM lParam) { // Hook to keep track of last focussed GUI item. This solves various focus issues when switching between @@ -2642,14 +2621,6 @@ } -void CMainFrame::OnInitMenu(CMenu* pMenu) -{ - m_InputHandler->SetModifierMask(ModNone); - CMDIFrameWnd::OnInitMenu(pMenu); - -} - - void CMainFrame::InitRenderer(CSoundFile *pSndFile) { CriticalSection cs; @@ -2678,15 +2649,6 @@ } -void CMainFrame::OnKillFocus(CWnd* pNewWnd) -{ - CMDIFrameWnd::OnKillFocus(pNewWnd); - - //rewbs: ensure modifiers are reset when we leave the window (e.g. alt-tab) - m_InputHandler->SetModifierMask(ModNone); -} - - void CMainFrame::OnShowWindow(BOOL bShow, UINT /*nStatus*/) { static bool firstShow = true; @@ -3381,7 +3343,6 @@ if(mainFrm != nullptr) { mainFrm->UpdateEffectKeys(mainFrm->GetActiveDoc()); - mainFrm->m_InputHandler->SetModifierMask(ModNone); } return ResultFromScode(S_OK); } Modified: trunk/OpenMPT/mptrack/Mainfrm.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/Mainfrm.h Fri Sep 20 13:35:30 2024 (r21651) @@ -144,7 +144,7 @@ // Globals static OptionsPage m_nLastOptionsPage; - static HHOOK ghKbdHook, g_focusHook; + static HHOOK g_focusHook; // GDI static HICON m_hIcon; @@ -446,9 +446,7 @@ //}}AFX_MSG DECLARE_MESSAGE_MAP() public: - afx_msg void OnInitMenu(CMenu *pMenu); bool UpdateEffectKeys(const CModDoc *modDoc); - afx_msg void OnKillFocus(CWnd* pNewWnd); afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); // Defines maximum number of items in example modules menu. Modified: trunk/OpenMPT/mptrack/View_gen.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/View_gen.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -1,5 +1,5 @@ /* - * view_gen.cpp + * View_gen.cpp * ------------ * Purpose: General tab, lower panel. * Notes : (currently none) @@ -1264,8 +1264,8 @@ auto &mixPlugs = pModDoc->GetSoundFile().m_MixPlugins; auto ¤tPlug = pModDoc->GetSoundFile().m_MixPlugins[m_nCurrentPlugin]; bool bypass = IsDlgButtonChecked(IDC_CHECK10) != BST_UNCHECKED; - const bool bypassOthers = CMainFrame::GetInputHandler()->ShiftPressed(); - const bool bypassOnlyMasterPlugs = CMainFrame::GetInputHandler()->CtrlPressed(); + const bool bypassOthers = CInputHandler::ShiftPressed(); + const bool bypassOnlyMasterPlugs = CInputHandler::CtrlPressed(); if(bypassOthers || bypassOnlyMasterPlugs) { CheckDlgButton(IDC_CHECK10, currentPlug.IsBypassed() ? BST_CHECKED : BST_UNCHECKED); @@ -1354,7 +1354,7 @@ { CModDoc *pModDoc = GetDocument(); if ((m_nCurrentPlugin >= MAX_MIXPLUGINS) || (!pModDoc)) return; - pModDoc->TogglePluginEditor(m_nCurrentPlugin, CMainFrame::GetInputHandler()->ShiftPressed()); + pModDoc->TogglePluginEditor(m_nCurrentPlugin, CInputHandler::ShiftPressed()); return; } Modified: trunk/OpenMPT/mptrack/View_ins.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/View_ins.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -1481,7 +1481,7 @@ if(IsDragItemEnvPoint()) { // Ctrl pressed -> move tail of envelope - changed = EnvSetValue(m_nDragItem - 1, nTick, nVal, CMainFrame::GetInputHandler()->CtrlPressed()); + changed = EnvSetValue(m_nDragItem - 1, nTick, nVal, CInputHandler::CtrlPressed()); } else { int nPoint = ScreenToPoint(pt.x, pt.y); @@ -1711,7 +1711,7 @@ } else { // Shift-Click: Insert envelope point here - if(CMainFrame::GetInputHandler()->ShiftPressed()) + if(CInputHandler::ShiftPressed()) { if(InsertAtPoint(pt) == 0 && oldDragItem != 0) { @@ -2115,7 +2115,7 @@ break; } - bool insertNew = CMainFrame::GetInputHandler()->ShiftPressed() && sndFile.GetNumInstruments() > 0; + bool insertNew = CInputHandler::ShiftPressed() && sndFile.GetNumInstruments() > 0; if(dropInfo->insertType != DRAGONDROP::InsertType::Unspecified) insertNew = dropInfo->insertType == DRAGONDROP::InsertType::InsertNew && sndFile.GetNumInstruments() > 0; Modified: trunk/OpenMPT/mptrack/View_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/View_pat.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -1298,7 +1298,7 @@ // Toggle record state modDoc->ToggleChannelRecordGroup(sourceChn, RecordGroup::Group1); InvalidateChannelsHeaders(sourceChn); - } else if(CMainFrame::GetInputHandler()->AltPressed()) + } else if(CInputHandler::AltPressed()) { // Solo / Unsolo OnSoloChannel(sourceChn, sourceChn); Modified: trunk/OpenMPT/mptrack/View_smp.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/View_smp.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -3125,7 +3125,7 @@ break; } - bool insertNew = CMainFrame::GetInputHandler()->ShiftPressed(); + bool insertNew = CInputHandler::ShiftPressed(); if(dropInfo->insertType != DRAGONDROP::InsertType::Unspecified) insertNew = dropInfo->insertType == DRAGONDROP::InsertType::InsertNew; Modified: trunk/OpenMPT/mptrack/View_tre.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp Fri Sep 20 08:45:57 2024 (r21650) +++ trunk/OpenMPT/mptrack/View_tre.cpp Fri Sep 20 13:35:30 2024 (r21651) @@ -3588,7 +3588,7 @@ void CModTree::OnDeleteTreeItem() { - DeleteTreeItem(GetSelectedItem(), CMainFrame::GetInputHandler()->ShiftPressed()); + DeleteTreeItem(GetSelectedItem(), CInputHandler::ShiftPressed()); } |