void ModelView::set_mouse_state__(bool ModelView::* mouse_state, bool b) { if (true == b) { if (!( mouse_left_down() || mouse_middle_down() || mouse_right_down())) this->*mouse_state = true; } else this->*mouse_state = false; }
void IOController::trigger_events(const BBox& playing_area) { // Loop over all possible keys to find active key states for (int i = SDLK_FIRST + 1; i < SDLK_LAST; i++) { IOEventTrigger::trigger_t notrigger = IOEventTrigger::NONE; if (iostate.key_press_states[i]) { // Trigger key press events __trigger_events(notrigger, SDLKey(i), iostate.keymod, false); } else if (iostate.key_down_states[i]) { // Trigger key hold events __trigger_events(notrigger, SDLKey(i), iostate.keymod, true); } } if (playing_area.contains(mouse_x(), mouse_y())) { if (mouse_left_click() || mouse_left_down()) { __trigger_events(IOEventTrigger::MOUSE_LEFT_CLICK, SDLKey(0), iostate.keymod, !mouse_left_click()); } if (mouse_right_click() || mouse_right_down()) { __trigger_events(IOEventTrigger::MOUSE_RIGHT_CLICK, SDLKey(0), iostate.keymod, !mouse_left_click()); } } if (iostate.mouse_middleclick || iostate.mouse_middledown) { __trigger_events(IOEventTrigger::MOUSE_MIDDLE_CLICK, SDLKey(0), iostate.keymod, !iostate.mouse_middleclick); } if (mouse_upwheel()) { __trigger_events(IOEventTrigger::MOUSE_WHEEL_UP, SDLKey(0), iostate.keymod, false); } if (mouse_downwheel()) { __trigger_events(IOEventTrigger::MOUSE_WHEEL_DOWN, SDLKey(0), iostate.keymod, false); } if (mouse_downwheel()) { __trigger_events(IOEventTrigger::MOUSE_WHEEL_DOWN, SDLKey(0), iostate.keymod, false); } }