Exemplo n.º 1
0
/*****************************************************
**
**   SheetWidget   ---   HandleMouseWheelEvent
**
******************************************************/
void SheetWidget::HandleMouseWheelEvent( wxMouseEvent &event )
{
	const bool modpressed = event.m_controlDown;
	const bool shiftpressed = event.m_shiftDown;
	//printf( "SheetWidget::HandleMouseWheelEvent rotation is %d modpressed %d shiftpressed %d\n", event.GetWheelRotation(), modpressed, shiftpressed );

  if ( modpressed || shiftpressed )
	{
		event.ResumePropagation( wxEVENT_PROPAGATE_MAX );
		event.Skip();
	}
	else
	{
		int x, y, x0, y0, xs, ys;
		const int offset = 60;

		GetViewStart( &x, &y );      // scroll position
		GetSize( &xs, &ys );         // size of visible widget only
		GetVirtualSize( &x0, &y0 );  // complete size of widget

		//printf( "SheetWidget::HandleMouseWheelEvent x %d y %d xs %d ys %d x0 %d y0 %d\n", x, y, xs, ys, x0, y0 );

		// Wheel scolls in vertical direction, but horizontal if nothing left to scroll
    if ( event.GetWheelRotation() < 0 )
    {
      if ( y + ys >= y0 ) x = Min( x0, x + offset );
      else
			{
				y += offset;
				mousePosition.y += offset;
			}
    }
    else
    {
      if ( y > 0 )
			{
				y = Max ( 0, y - offset );
				if ( mousePosition.y > offset ) mousePosition.y -= offset;
				else mousePosition.y = 0;
			}
      else x -= offset;
    }

		Scroll( x, y );

		// marked cols (if any) must move, too
		mouseHasMoved( false );
	}
}
int ImageSelectionToolCustom::processMouseEvent( ViewportMouseEvent& event )
{
    //SelectionManager* sel_manager = context_->getSelectionManager();
    Q_EMIT mouseHasMoved(event.x, event.y);
    int flags = 0;

    moving_ = false;

    if( event.leftDown() )
    {
        selecting_ = true;

        sel_start_x_ = event.x;
        sel_start_y_ = event.y;
    }

    if( selecting_ )
    {
        /**std::cout<<"tool selected x1 " <<sel_start_x_<<std::endl;
        std::cout<<"tool selected y1 " <<sel_start_y_<<std::endl;
        std::cout<<"tool selected x2 " <<event.x<<std::endl;
        std::cout<<"selected y2 " <<event.y<<std::endl;**/
        theX1 = sel_start_x_;
        theX2 = event.x;
        theY1 = sel_start_y_;
        theY2 = event.y;
        port = event.viewport;
        highlight( event.viewport, sel_start_x_, sel_start_y_, event.x, event.y );


        if( event.leftUp() )
        {
            SelectionManager::SelectType type = SelectionManager::Replace;

            M_Picked selection;

            /*if( event.shift() )
            {
            type = SelectionManager::Add;
            }
            else if( event.control() )
            {
            type = SelectionManager::Remove;
            }*/

            //sel_manager->select( event.viewport, sel_start_x_, sel_start_y_, event.x, event.y, type );
            removeHighlight();

            Q_EMIT select( sel_start_x_, sel_start_y_, event.x, event.y );

            selecting_ = false;
        }

        flags |= Render;
    }
    else
    {
        highlight( event.viewport, theX1, theY1, theX2, theY2 );
    }

    return flags;
}