std::queue<Event> SDLInputBackend::fetchEvents() { SDL_Event event; std::queue<Event> result; while(SDL_PollEvent(&event)) { if(event.type == SDL_QUIT) result.push(closed()); else if(event.type == SDL_VIDEORESIZE) result.push(resized(event)); else if(event.type == SDL_ACTIVEEVENT) result.push(active(event)); else if(event.type == SDL_KEYDOWN) result.push(keyPressed(event)); else if(event.type == SDL_KEYUP) result.push(keyReleased(event)); else if(event.type == SDL_MOUSEBUTTONDOWN) result.push(mouseButtonPressed(event)); else if(event.type == SDL_MOUSEBUTTONUP) result.push(mouseButtonReleased(event)); else if(event.type == SDL_MOUSEMOTION) result.push(mouseMoved(event)); else if(event.type == SDL_JOYBUTTONDOWN) result.push(gamepadButtonPressed(event)); else if(event.type == SDL_JOYBUTTONUP) result.push(gamepadButtonReleased(event)); else if(event.type == SDL_JOYAXISMOTION) result.push(gamepadMoved(event)); } return result; }
bool Viewer::deviceEventOccurred(const DeviceEvent &event) { switch (event.getType()) { case Device::EKeyDownEvent: if (event.getKeyboardKey() == 'q' || event.getKeyboardSpecial() == Device::EKeyEscape) { m_quit = true; m_leaveEventLoop = true; } else { keyPressed(event); } break; case Device::EKeyUpEvent: keyReleased(event); break; case Device::EMouseMotionEvent: mouseMoved(event); break; case Device::EMouseDragEvent: mouseDragged(event); break; case Device::EMouseButtonDownEvent: mouseButtonPressed(event); break; case Device::EMouseButtonUpEvent: mouseButtonReleased(event); break; case Device::EMouseBeginDragEvent: mouseBeginDrag(event); break; case Device::EMouseEndDragEvent: mouseEndDrag(event); break; case Device::EQuitEvent: m_quit = true; m_leaveEventLoop = true; break; case Device::EResizeEvent: m_renderer->reconfigure(m_device); windowResized(event); // no break case Device::EGainFocusEvent: m_leaveEventLoop = true; break; } return true; }
void ItemBox::notifyMouseButtonReleased(Widget* _sender, int _left, int _top, MouseButton _id) { bool needEvent = !mStartDrop; mouseButtonReleased(_id); if (needEvent) eventNotifyItem(this, IBNotifyItemData(getIndexByWidget(_sender), IBNotifyItemData::MouseReleased, _left, _top, _id)); }
void mouse(int button, int state, int x, int y) { if (state == GLUT_DOWN) { mouseButtonPressed(button, x, y); } else { mouseButtonReleased(button, x, y); } if(!TwEventMouseButtonGLUT(button,state,x,y) ) { } }
void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods) { double x, y; glfwGetCursorPos(window, &x, &y); Context *ctx = static_cast<Context *>(glfwGetWindowUserPointer(window)); if (action == GLFW_PRESS) { mouseButtonPressed(ctx, button, x, y); } else { mouseButtonReleased(ctx, button, x, y); } }
void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods) { double x, y; glfwGetCursorPos(window, &x, &y); if(!TwEventMouseButtonGLFW(button, action)){ if (action == GLFW_PRESS) { mouseButtonPressed(button, x, y); } else { mouseButtonReleased(button, x, y); } } }
std::queue<Event> SFMLInputBackend::fetchEvents() { sf::Event event; std::queue<Event> result; while (mWindow.pollEvent(event)) { if(event.type == sf::Event::Closed) result.push(closed()); else if(event.type == sf::Event::Resized) result.push(resized(event)); else if(event.type == sf::Event::LostFocus) result.push(lostFocus()); else if(event.type == sf::Event::GainedFocus) result.push(gainedFocus()); else if(event.type == sf::Event::TextEntered) result.push(textEntered(event)); else if(event.type == sf::Event::KeyPressed) result.push(keyPressed(event)); else if(event.type == sf::Event::KeyReleased) result.push(keyReleased(event)); else if(event.type == sf::Event::MouseWheelMoved) result.push(mouseWheelMoved(event)); else if(event.type == sf::Event::MouseButtonPressed) result.push(mouseButtonPressed(event)); else if(event.type == sf::Event::MouseButtonReleased) result.push(mouseButtonReleased(event)); else if(event.type == sf::Event::MouseMoved) result.push(mouseMoved(event)); else if(event.type == sf::Event::MouseEntered) result.push(mouseEntered()); else if(event.type == sf::Event::MouseLeft) result.push(mouseLeft()); else if(event.type == sf::Event::JoystickButtonPressed) result.push(gamepadButtonPressed(event)); else if(event.type == sf::Event::JoystickButtonReleased) result.push(gamepadButtonReleased(event)); else if(event.type == sf::Event::JoystickMoved) result.push(gamepadMoved(event)); else if(event.type == sf::Event::JoystickConnected) result.push(gamepadConnected(event)); else if(event.type == sf::Event::JoystickDisconnected) result.push(gamepadDisconnected(event)); } return result; }
void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods) { #ifdef WITH_TWEAKBAR if (TwEventMouseButtonGLFW3(window, button, action, mods)) return; #endif // WITH_TWEAKBAR double x, y; glfwGetCursorPos(window, &x, &y); Context *ctx = static_cast<Context *>(glfwGetWindowUserPointer(window)); if (action == GLFW_PRESS) { mouseButtonPressed(ctx, button, x, y); } else { mouseButtonReleased(ctx, button, x, y); } }
const SUCCESS Events::handleEvent(const SDL_Event * const Event) { switch(Event->type) { //newline brackets implemented since this is a lot of nesting case SDL_WINDOWEVENT: ///Some sort of input or output gained or lost { const Uint8 &winID = Event->window.windowID; switch(Event->window.event) { case SDL_WINDOWEVENT_ENTER: ///Mouse message handling gained or lost return mouseEnter(winID); case SDL_WINDOWEVENT_LEAVE: ///General input message handling gained or lost return mouseLeave(winID); case SDL_WINDOWEVENT_MINIMIZED: ///Output to the screen at all gained or lost return minimized(winID); case SDL_WINDOWEVENT_RESTORED: return restored(winID); case SDL_WINDOWEVENT_MAXIMIZED: return maximized(winID); case SDL_WINDOWEVENT_SHOWN: return shown(winID); case SDL_WINDOWEVENT_HIDDEN: return hidden(winID); case SDL_WINDOWEVENT_EXPOSED: return exposed(winID); case SDL_WINDOWEVENT_FOCUS_GAINED: return keyboardFocusGain(winID); case SDL_WINDOWEVENT_FOCUS_LOST: return keyboardFocusLost(winID); case SDL_WINDOWEVENT_SIZE_CHANGED: return changeSize(winID); case SDL_WINDOWEVENT_RESIZED: return resized(winID, Dimensions<int>(Event->window.data1, Event->window.data2)); case SDL_WINDOWEVENT_MOVED: return moved(winID, Point<int>(Event->window.data1, Event->window.data2)); case SDL_WINDOWEVENT_CLOSE: return windowExited(winID); default: ///For some reason there is an unknown window event return FAILED; } break; } case SDL_KEYDOWN: { if(Event->key.repeat) { return keyHeld(Event->key.windowID, Event->key.keysym); } else { return keyPressed(Event->key.windowID, Event->key.keysym); } break; } case SDL_KEYUP: return keyReleased(Event->key.windowID, Event->key.keysym); case SDL_TEXTINPUT: return textInput(Event->text.windowID, Event->text.text); case SDL_TEXTEDITING: return textEdit(Event->edit.windowID, Event->edit.text, Event->edit.start, Event->edit.length); case SDL_MOUSEMOTION: return mouseMove(Event->motion.windowID, Event->motion.which, Delta<Point<int> >(Point<int>(Event->motion.xrel, Event->motion.yrel), Point<int>(Event->motion.x, Event->motion.y)), bitset<N_MOUSE_BUTTONS>(Event->motion.state)); case SDL_MOUSEBUTTONDOWN: return mouseButtonPressed(Event->button.windowID, Event->button.which, Event->button.button, Event->button.clicks, Point<int>(Event->button.x, Event->button.y)); case SDL_MOUSEBUTTONUP: return mouseButtonReleased(Event->button.windowID, Event->button.which, Event->button.button, Event->button.clicks, Point<int>(Event->button.x, Event->button.y)); case SDL_MOUSEWHEEL: return mouseWheel(Event->wheel.windowID, Event->wheel.which, Point<int>(Event->wheel.x, Event->wheel.y)); case SDL_JOYAXISMOTION: return joyAxis(Event->jaxis.which, Event->jaxis.axis, Event->jaxis.value); case SDL_JOYBUTTONDOWN: return joyButtonPressed(Event->jbutton.which, Event->jbutton.button); case SDL_JOYBUTTONUP: return joyButtonReleased(Event->jbutton.which, Event->jbutton.button); case SDL_JOYHATMOTION: return joyHatChange(Event->jhat.which, Event->jhat.hat, Event->jhat.value); case SDL_JOYBALLMOTION: return joyBallMove(Event->jball.which, Event->jball.ball, Point<int>(Event->jball.xrel, Event->jball.yrel)); case SDL_DROPFILE: { const SUCCESS ret = droppedFile(Event->drop.file); SDL_free(Event->drop.file); return ret; } case SDL_SYSWMEVENT: return unhandledSystemEvent(Event->syswm.msg); case SDL_QUIT: return appExited(); case SDL_USEREVENT: default: { return userEvent(Event->user.windowID, Event->user.code, Event->user.data1, Event->user.data2); } } return FAILED; }
void SdlContext::refreshInputs() { SCOPE_profile_cpu_function("RenderTimer"); SDL_Event events; auto input = _dependencyManager->getInstance<Input>(); input->frameUpdate(); if (_firstCall) { _initJoysticks(*input); _firstCall = false; } while (SDL_PollEvent(&events)) { switch (events.type) { case SDL_KEYDOWN: input->keyInputPressed(findAgeMappedKey(events.key.keysym.sym), findAgePhysicalKey(events.key.keysym.scancode)); break; case SDL_KEYUP: input->keyInputReleased(findAgeMappedKey(events.key.keysym.sym), findAgePhysicalKey(events.key.keysym.scancode)); break; case SDL_MOUSEBUTTONDOWN: input->mouseButtonPressed(findAgeMouseButton(events.button.button)); break; case SDL_MOUSEBUTTONUP: input->mouseButtonReleased(findAgeMouseButton(events.button.button)); break; case SDL_MOUSEWHEEL: input->setMouseWheel(glm::ivec2(events.wheel.x, events.wheel.y)); break; case SDL_MOUSEMOTION: input->setMousePosition(glm::ivec2(events.motion.x, events.motion.y), glm::ivec2(events.motion.xrel, events.motion.yrel)); break; case SDL_JOYDEVICEADDED: _addJoystick(*input, events.jdevice.which); break; case SDL_JOYDEVICEREMOVED: _removeJoystick(*input, events.jdevice.which); break; case SDL_JOYAXISMOTION: { uint32_t joyId = _fromSdlJoystickIdToAge(events.jaxis.which); AgeJoystickAxis joyAxis = findAgeJoystickAxis(events.jaxis.axis); float value = (float)events.jaxis.value / 32768.0f; input->setJoystickAxis(joyId, joyAxis, value); } break; case SDL_JOYBUTTONDOWN: { uint32_t joyId = _fromSdlJoystickIdToAge(events.jbutton.which); AgeJoystickButtons joyButton = findAgeJoystickButton(events.jbutton.button); input->joystickButtonPressed(joyId, joyButton); } break; case SDL_JOYBUTTONUP: { uint32_t joyId = _fromSdlJoystickIdToAge(events.jbutton.which); AgeJoystickButtons joyButton = findAgeJoystickButton(events.jbutton.button); input->joystickButtonReleased(joyId, joyButton); } break; case SDL_JOYBALLMOTION: { uint32_t joyId = _fromSdlJoystickIdToAge(events.jball.which); input->setJoystickTrackBall(joyId, events.jball.ball, glm::ivec2(events.jball.xrel, events.jball.yrel)); } break; case SDL_JOYHATMOTION: { uint32_t joyId = _fromSdlJoystickIdToAge(events.jhat.which); AgeJoystickHatDirections joyHatDir = findAgeJoystickHatDirection(events.jhat.value); input->setJoystickHat(joyId, events.jhat.hat, joyHatDir); } break; case SDL_WINDOWEVENT: input->addWindowInput(findAgeWindowInput(events.window.event)); break; default: input->addWindowInput(findAgeWindowInput(events.type)); break; } } input->sendMouseStateToIMGUI(); }
void Label::mouseReleaseEvent(QMouseEvent* event) { Qt::MouseButton mouseButton = event->button(); m_mouseButtonsPressed.erase(mouseButton); emit mouseButtonReleased(mouseButton); event->accept(); }
void DDContainer::onMouseButtonReleased(int _left, int _top, MouseButton _id) { mouseButtonReleased(_id); Base::onMouseButtonReleased(_left, _top, _id); }
void ListCtrl::notifyMouseButtonReleased(Widget* _sender, int _left, int _top, MouseButton _id) { mouseButtonReleased(_id); eventNotifyItem(this, IBNotifyItemData(getIndexByWidget(_sender), IBNotifyItemData::MouseReleased, _left, _top, _id)); }