void    pfGUIDraggableMod::HandleMouseUp( hsPoint3 &mousePt, uint8_t modifiers )
{
    if( fDragging )
    {
        fLastMousePt = mousePt;
        fDragging = false;
        SetObjectCenter( mousePt.fX + fDragOffset.fX, mousePt.fY + fDragOffset.fY );

        DoSomething();

        if( HasFlag( kAlwaysSnapBackToStart ) )
            SetObjectCenter( fOrigCenter.fX, fOrigCenter.fY );
    }
}
void    pfGUIDragBarCtrl::HandleMouseDrag( hsPoint3 &mousePt, uint8_t modifiers )
{
    // if we are anchored <to the floor> then don't let it be moved
    if ( fAnchored )
        return;

    SetObjectCenter( mousePt.fX + fDragOffset.fX, mousePt.fY + fDragOffset.fY );
    fDialog->UpdateAllBounds();
}
void    pfGUIDraggableMod::StopDragging( hsBool cancel )
{
    if( fDragging )
    {
        fDragging = false;
        if( cancel )
            HandleExtendedEvent( kCancelled );

        if( HasFlag( kAlwaysSnapBackToStart ) )
            SetObjectCenter( fOrigCenter.fX, fOrigCenter.fY );
    }
}
void    pfGUIDraggableMod::HandleMouseDrag( hsPoint3 &mousePt, uint8_t modifiers )
{
    if( fDragging )
    {
        fLastMousePt = mousePt;

        SetObjectCenter( mousePt.fX + fDragOffset.fX, mousePt.fY + fDragOffset.fY );

        if( HasFlag( kReportDragging ) )
            HandleExtendedEvent( kDragging );
    }
}
void    pfGUIDragBarCtrl::HandleMouseDown( hsPoint3 &mousePt, uint8_t modifiers )
{
    // if we are anchored <to the floor> then don't let it be moved
    if ( fAnchored )
        return;

    fDragging = true;
    fDragOffset = fScreenCenter - mousePt;

    SetObjectCenter( mousePt.fX + fDragOffset.fX, mousePt.fY + fDragOffset.fY );

    // We know that the entire dialog is going to move, so we better make 
    // sure to update the bounds on all the controls
    fDialog->UpdateAllBounds();
}
void    pfGUIDraggableMod::HandleMouseDown( hsPoint3 &mousePt, uint8_t modifiers )
{
    if( !fDragging )
    {
        fLastMousePt = mousePt;
        fOrigCenter = fScreenCenter;

        fDragging = true;
        fDragOffset = fScreenCenter - mousePt;

        SetObjectCenter( mousePt.fX + fDragOffset.fX, mousePt.fY + fDragOffset.fY );

        HandleExtendedEvent( kStartingDrag );
    }
}