/* Dispatch a single event * @param anEvent - the event to dispatch * @return A boolean which states whether we handled the event */ PRBool nsMacMessagePump::DispatchEvent(EventRecord *anEvent) { PRBool handled = PR_FALSE; if (!mProcessEvents) return handled; switch(anEvent->what) { // diskEvt is gone in Carbon, and so is unhandled here. // keyUp, keyDown, and autoKey now have Carbon event handlers in // nsMacWindow. case mouseDown: handled = DoMouseDown(*anEvent); break; case mouseUp: handled = DoMouseUp(*anEvent); break; case osEvt: { unsigned char eventType = ((anEvent->message >> 24) & 0x00ff); if (eventType == mouseMovedMessage) handled = DoMouseMove(*anEvent); break; } case kHighLevelEvent: ::AEProcessAppleEvent(anEvent); handled = PR_TRUE; break; } return handled; }
/* ================== Sys_SendKeyEvents ================== */ void Sys_SendKeyEvents (void) { Boolean gotEvent; EventRecord event; if ( !glConfig.isFullscreen || sys_waitNextEvent->value ) { // this call involves 68k code and task switching. // do it on the desktop, or if they explicitly ask for // it when fullscreen gotEvent = WaitNextEvent(everyEvent, &event, 0, nil); } else { gotEvent = GetOSEvent( everyEvent, &event ); } // generate faked events from modifer changes Sys_ModifierEvents( event.modifiers ); sys_lastEventTic = event.when; if ( !gotEvent ) { return; } if ( Sys_ConsoleEvent(&event) ) { return; } switch(event.what) { case mouseDown: DoMouseDown(&event); break; case mouseUp: DoMouseUp(&event); break; case keyDown: DoKeyDown(&event); break; case keyUp: DoKeyUp(&event); break; case autoKey: DoKeyDown(&event); break; case updateEvt: DoUpdate((WindowPtr) event.message); break; case diskEvt: DoDiskEvent(&event); break; case activateEvt: DoActivate((WindowPtr) event.message, event.modifiers); break; case osEvt: DoOSEvent(&event); break; default: break; } }
void CFWL_ScrollBarImpDelegate::OnLButtonDown(FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) { if (!m_pOwner->IsEnabled()) { return; } m_pOwner->m_bMouseDown = TRUE; m_pOwner->SetGrab(TRUE); m_pOwner->m_cpTrackPointX = fx; m_pOwner->m_cpTrackPointY = fy; m_pOwner->m_fLastTrackPos = m_pOwner->m_fTrackPos; if (m_pOwner->m_rtMinBtn.Contains(fx, fy)) { DoMouseDown(0, m_pOwner->m_rtMinBtn, m_pOwner->m_iMinButtonState, fx, fy); } else { if (m_pOwner->m_rtThumb.Contains(fx, fy)) { DoMouseDown(1, m_pOwner->m_rtThumb, m_pOwner->m_iThumbButtonState, fx, fy); } else { if (m_pOwner->m_rtMaxBtn.Contains(fx, fy)) { DoMouseDown(2, m_pOwner->m_rtMaxBtn, m_pOwner->m_iMaxButtonState, fx, fy); } else { if (m_pOwner->m_rtMinTrack.Contains(fx, fy)) { DoMouseDown(3, m_pOwner->m_rtMinTrack, m_pOwner->m_iMinTrackState, fx, fy); } else { DoMouseDown(4, m_pOwner->m_rtMaxTrack, m_pOwner->m_iMaxTrackState, fx, fy); } } } } if (!m_pOwner->SendEvent()) { m_pOwner->m_hTimer = FWL_StartTimer(m_pOwner, FWL_SCROLLBAR_Elapse); } }