void Container::HandleEvent( const sf::Event& event ) { // Ignore event when widget is not visible. if( !IsGloballyVisible() ) { return; } // Create a copy of the event and transform mouse coordinates to local // coordinates if event is a mouse event. sf::Event local_event( event ); if( local_event.type == sf::Event::MouseMoved ) { local_event.mouseMove.x -= static_cast<int>( GetAllocation().left ); local_event.mouseMove.y -= static_cast<int>( GetAllocation().top ); } if( local_event.type == sf::Event::MouseButtonPressed || local_event.type == sf::Event::MouseButtonReleased ) { local_event.mouseButton.x -= static_cast<int>( GetAllocation().left ); local_event.mouseButton.y -= static_cast<int>( GetAllocation().top ); } std::size_t children_size = m_children.size(); // Pass event to children. for( std::size_t index = 0; index < children_size; ++index ) { m_children[index]->HandleEvent( local_event ); } // Process event for own widget. Widget::HandleEvent( event ); }
int snd_seq_oss_process_event(seq_oss_devinfo_t *dp, evrec_t *q, snd_seq_event_t *ev) { switch (q->s.code) { case SEQ_EXTENDED: return extended_event(dp, q, ev); case EV_CHN_VOICE: return chn_voice_event(dp, q, ev); case EV_CHN_COMMON: return chn_common_event(dp, q, ev); case EV_TIMING: return timing_event(dp, q, ev); case EV_SEQ_LOCAL: return local_event(dp, q, ev); case EV_SYSEX: return snd_seq_oss_synth_sysex(dp, q->x.dev, q->x.buf, ev); case SEQ_MIDIPUTC: if (dp->seq_mode == SNDRV_SEQ_OSS_MODE_MUSIC) return -EINVAL; /* put a midi byte */ if (! is_write_mode(dp->file_mode)) break; if (snd_seq_oss_midi_open(dp, q->s.dev, SNDRV_SEQ_OSS_FILE_WRITE)) break; if (snd_seq_oss_midi_filemode(dp, q->s.dev) & SNDRV_SEQ_OSS_FILE_WRITE) return snd_seq_oss_midi_putc(dp, q->s.dev, q->s.parm1, ev); break; case SEQ_ECHO: if (dp->seq_mode == SNDRV_SEQ_OSS_MODE_MUSIC) return -EINVAL; return set_echo_event(dp, q, ev); case SEQ_PRIVATE: if (dp->seq_mode == SNDRV_SEQ_OSS_MODE_MUSIC) return -EINVAL; return snd_seq_oss_synth_raw_event(dp, q->c[1], q->c, ev); default: if (dp->seq_mode == SNDRV_SEQ_OSS_MODE_MUSIC) return -EINVAL; return old_event(dp, q, ev); } return -EINVAL; }