Example #1
0
/*  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;
}
Example #2
0
/*
==================
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;
	}
}
Example #3
0
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);
  }
}