/** * Handles moving into the minimap. * Stops the mouse-scrolling mode, if its left on. * @param action Pointer to an action. * @param state State that the action handlers belong to. */ void MiniMapView::mouseIn(Action *action, State *state) { InteractiveSurface::mouseIn(action, state); _isMouseScrolling = false; setButtonPressed(SDL_BUTTON_RIGHT, false); }
void StrangeButton::initialiseWidgetSkin(MyGUI::ResourceSkin* _info) { // парсим свойства const MyGUI::MapString& properties = _info->getProperties(); if (!properties.empty()) { MyGUI::MapString::const_iterator iter = properties.find("ButtonPressed"); if (iter != properties.end()) setButtonPressed(MyGUI::utility::parseBool(iter->second)); iter = properties.find("StateCheck"); if (iter != properties.end()) setStateCheck(MyGUI::utility::parseBool(iter->second)); } }
void Button::initialiseWidgetSkin(WidgetSkinInfoPtr _info) { // парсим свойства const MapString & properties = _info->getProperties(); if (!properties.empty()) { MapString::const_iterator iter = properties.find("ButtonPressed"); if (iter != properties.end()) setButtonPressed(utility::parseBool(iter->second)); iter = properties.find("StateCheck"); if (iter != properties.end()) setStateCheck(utility::parseBool(iter->second)); } for (VectorWidgetPtr::iterator iter=mWidgetChildSkin.begin(); iter!=mWidgetChildSkin.end(); ++iter) { if (*(*iter)->_getInternalData<std::string>() == "Image") { MYGUI_DEBUG_ASSERT( ! mImage, "widget already assigned"); mImage = (*iter)->castType<StaticImage>(); } } }
/** * Called whenever an action occurs, and processes it to * check if it's relevant to the surface and convert it * into a meaningful interaction like a "click", calling * the respective handlers. * @param action Pointer to an action. * @param state State that the action handlers belong to. */ void InteractiveSurface::handle(Action *action, State *state) { if (!_visible || _hidden) return; action->setSender(this); if (action->getDetails()->type == SDL_MOUSEBUTTONUP || action->getDetails()->type == SDL_MOUSEBUTTONDOWN) { action->setMouseAction(action->getDetails()->button.x, action->getDetails()->button.y, getX(), getY()); } else if (action->getDetails()->type == SDL_MOUSEMOTION) { action->setMouseAction(action->getDetails()->motion.x, action->getDetails()->motion.y, getX(), getY()); } if (action->isMouseAction()) { if ((action->getAbsoluteXMouse() >= getX() && action->getAbsoluteXMouse() < getX() + getWidth()) && (action->getAbsoluteYMouse() >= getY() && action->getAbsoluteYMouse() < getY() + getHeight())) { if (!_isHovered) { _isHovered = true; mouseIn(action, state); } if (_listButton && action->getDetails()->type == SDL_MOUSEMOTION) { _buttonsPressed = SDL_GetMouseState(0, 0); for (Uint8 i = 1; i <= NUM_BUTTONS; ++i) { if (isButtonPressed(i)) { action->getDetails()->button.button = i; mousePress(action, state); } } } mouseOver(action, state); } else { if (_isHovered) { _isHovered = false; mouseOut(action, state); if (_listButton && action->getDetails()->type == SDL_MOUSEMOTION) { for (Uint8 i = 1; i <= NUM_BUTTONS; ++i) { if (isButtonPressed(i)) { setButtonPressed(i, false); } action->getDetails()->button.button = i; mouseRelease(action, state); } } } } } if (action->getDetails()->type == SDL_MOUSEBUTTONDOWN) { if (_isHovered && !isButtonPressed(action->getDetails()->button.button)) { setButtonPressed(action->getDetails()->button.button, true); mousePress(action, state); } } else if (action->getDetails()->type == SDL_MOUSEBUTTONUP) { if (isButtonPressed(action->getDetails()->button.button)) { setButtonPressed(action->getDetails()->button.button, false); mouseRelease(action, state); if (_isHovered) { mouseClick(action, state); } } } if (_isFocused) { if (action->getDetails()->type == SDL_KEYDOWN) { keyboardPress(action, state); } else if (action->getDetails()->type == SDL_KEYUP) { keyboardRelease(action, state); } } }