/************************************************************************* Handler for when mouse buttons area released *************************************************************************/ void ListHeaderSegment::onMouseButtonUp(MouseEventArgs& e) { // base class processing Window::onMouseButtonUp(e); if (e.button == LeftButton) { // if we were pushed and mouse was released within our segment area if (d_segmentPushed && d_segmentHover) { WindowEventArgs args(this); onSegmentClicked(args); } else if (d_dragMoving) { MouseCursor::getSingleton().setImage(getMouseCursor()); WindowEventArgs args(this); onSegmentDragStop(args); } // release our capture on the input data releaseInput(); ++e.handled; } }
/************************************************************************* Set the appropriate mouse cursor for the given window-relative pixel point. *************************************************************************/ void FrameWindow::setCursorForPoint(const Point& pt) const { switch(getSizingBorderAtPoint(pt)) { case SizingTop: case SizingBottom: MouseCursor::getSingleton().setImage(d_nsSizingCursor); break; case SizingLeft: case SizingRight: MouseCursor::getSingleton().setImage(d_ewSizingCursor); break; case SizingTopLeft: case SizingBottomRight: MouseCursor::getSingleton().setImage(d_nwseSizingCursor); break; case SizingTopRight: case SizingBottomLeft: MouseCursor::getSingleton().setImage(d_neswSizingCursor); break; default: MouseCursor::getSingleton().setImage(getMouseCursor()); break; } }
/************************************************************************* Set the appropriate mouse cursor for the given window-relative pixel point. *************************************************************************/ void FrameWindow::setCursorForPoint(const Vector2f& pt) const { switch(getSizingBorderAtPoint(pt)) { case SizingTop: case SizingBottom: getGUIContext(). getMouseCursor().setImage(d_nsSizingCursor); break; case SizingLeft: case SizingRight: getGUIContext(). getMouseCursor().setImage(d_ewSizingCursor); break; case SizingTopLeft: case SizingBottomRight: getGUIContext(). getMouseCursor().setImage(d_nwseSizingCursor); break; case SizingTopRight: case SizingBottomLeft: getGUIContext(). getMouseCursor().setImage(d_neswSizingCursor); break; default: getGUIContext(). getMouseCursor().setImage(getMouseCursor()); break; } }
/************************************************************************* Initialise the state for hovering over main segment area *************************************************************************/ void ListHeaderSegment::initSegmentHoverState(void) { // reset sizing area hover state if needed. if (d_splitterHover) { d_splitterHover = false; MouseCursor::getSingleton().setImage(getMouseCursor()); invalidate(); } // set segment hover state if not already set. if ((!d_segmentHover) && isClickable()) { d_segmentHover = true; invalidate(); } }
void DragContainer::updateActiveMouseCursor(void) const { MouseCursor::getSingleton().setImage(d_dragging ? getDragCursorImage() : getMouseCursor()); }
/************************************************************************* Handler for when mouse position changes in widget area (or captured) *************************************************************************/ void ListHeaderSegment::onMouseMove(MouseEventArgs& e) { // base class processing Window::onMouseMove(e); // // convert mouse position to something local // Point localMousePos(CoordConverter::screenToWindow(*this, e.position)); // handle drag sizing if (d_dragSizing) { doDragSizing(localMousePos); } // handle drag moving else if (d_dragMoving) { doDragMoving(localMousePos); } // not sizing, is mouse in the widget area? else if (isHit(e.position)) { // mouse in sizing area & sizing is enabled if ((localMousePos.d_x > (d_pixelSize.d_width - d_splitterSize)) && d_sizingEnabled) { initSizingHoverState(); } // mouse not in sizing area and/or sizing not enabled else { initSegmentHoverState(); // if we are pushed but not yet drag moving if (d_segmentPushed && !d_dragMoving) { if (isDragMoveThresholdExceeded(localMousePos)) { initDragMoving(); } } } } // mouse is no longer within the widget area... else { // only change settings if change is required if (d_splitterHover) { d_splitterHover = false; MouseCursor::getSingleton().setImage(getMouseCursor()); invalidate(); } // reset segment hover state if not already done. if (d_segmentHover) { d_segmentHover = false; invalidate(); } } ++e.handled; }
void DragContainer::updateActiveMouseCursor(void) const { getGUIContext().getMouseCursor(). setImage(d_dragging ? getDragCursorImage() : getMouseCursor()); }