コード例 #1
0
ファイル: nuiContainer.cpp プロジェクト: hamedmohammadi/nui3
bool nuiContainer::DispatchMouseUnclick(const nglMouseInfo& rInfo)
{
  CheckValid();
  nuiAutoRef;
  if (!mMouseEventEnabled || mTrashed)
    return false;

  bool hasgrab = HasGrab(rInfo.TouchId);
  if (IsDisabled() && !hasgrab)
    return false;

  nglMouseInfo info(rInfo);
  GlobalToLocal(info.X, info.Y);
  // Get a chance to preempt the mouse event before the children get it:
  if (PreMouseUnclicked(info))
  {
    Ungrab();
    return true;
  }
  
  if (IsInsideFromRoot(rInfo.X, rInfo.Y) || hasgrab)
  {
    if (!hasgrab)
    {
      IteratorPtr pIt;
      for (pIt = GetLastChild(false); pIt && pIt->IsValid(); GetPreviousChild(pIt))
      {
        nuiWidgetPtr pItem = pIt->GetWidget();
        if (pItem)
        {
          if (IsEnabled())
          {
            if ((pItem)->DispatchMouseUnclick(rInfo))
            {
              delete pIt;
              return true;
            }
          }
        }
      }
      delete pIt;
    }

    bool res = PreUnclicked(info);
    if (!res)
    {
      res = MouseUnclicked(info);
      res |= Unclicked(info);
    }

    res = res | (!mClickThru);
    if (res)
      Ungrab();
    return res;
  }
  return false;
}
コード例 #2
0
ファイル: nuiToggleButton.cpp プロジェクト: jpastuszek/nui3
bool nuiToggleButton::MouseUnclicked  (nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
  if ( (Button & nglMouseInfo::ButtonLeft) && mClicked)
  {
    mClicked = false;
    Ungrab();

    if (IsInsideFromSelf(X,Y, GetActivationOffset()))
    {
      SetPressed(!mWasPressed);
      if (IsPressed())
				Activated();
			else
				Deactivated();
    }
    else
    {
      SetPressed(mWasPressed);
    }

    Invalidate();
    return true;
  }
  return false;
}
コード例 #3
0
ファイル: nuiZoomBar.cpp プロジェクト: JamesLinus/nui3
bool nuiZoomBar::MouseUnclicked(nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
  if (Button & nglMouseInfo::ButtonLeft)
  {
    mClicked = false;
    
    if (mPageUpClicked || mPageDownClicked)
    {      
      mTimer.Stop();
    }
    else
    {
      ThumbDepressed();
    }
    
    mThumbClicked = false;
    mPageUpClicked = false;
    mPageDownClicked = false;
    mRightSideClicked = false;
    mLeftSideClicked = false;
    Ungrab();
    
    Invalidate();
    return true;
  }
  return false;
  
}
コード例 #4
0
// virtual 
bool nuiPadGestureRecognizer::MouseUnclicked(nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
  bool res = nuiGestureRecognizer::MouseUnclicked(X, Y, Button);
  
  mClicked = false;
  SetState(eGestureRecognizerStatePossible);
  
  mLastX = 0;
  mLastY = 0;

  Ungrab();
  return false;
}
コード例 #5
0
// virtual 
bool nuiSwipeGestureRecognizer::MouseUnclicked(nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
  bool res = nuiGestureRecognizer::MouseUnclicked(X, Y, Button);
  
  mClicked = false;
  SetState(eGestureRecognizerStatePossible);

  mTime = nglTime();
  mInitiatedTime = 0;
  mStartX = 0;
  mStartY = 0;
  Ungrab();
  
  return false;
}
コード例 #6
0
ファイル: nuiHyperLink.cpp プロジェクト: JamesLinus/nui3
bool nuiHyperLink::MouseUnclicked(nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
  if (mClicked && (Button & nglMouseInfo::ButtonLeft))
  {
    mClicked--;
    Ungrab();
    if (!Activated())
    {
      // Open url in default browser
      nuiURL url(mURL);
      url.OpenBrowser();
      SetUnderline(false);
    }
    return true;
  }
  return false;
}
コード例 #7
0
ファイル: nuiKnob.cpp プロジェクト: YetToCome/nui3
bool nuiKnob::MouseUnclicked(nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
  if (mInteractiveValueChanged)
    ValueChanged();
  mInteractiveValueChanged = false;
  
  if (Button & nglMouseInfo::ButtonLeft)
  {
    mClicked = false;

    Ungrab();
    
    Invalidate();
    return true;
  }
  return false;
}
コード例 #8
0
ファイル: nuiSlider.cpp プロジェクト: YetToCome/nui3
bool nuiSlider::MouseUnclicked  (nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
  if ((Button == nglMouseInfo::ButtonLeft) && mClicked)
  {
    mInteractiveValueChanged = false;
    ValueChanged();
    
    mClicked = false;
    
    mThumbClicked = false;
    Ungrab();
    
    Invalidate();
    return true;
  }
  return false;
}
コード例 #9
0
ファイル: nuiMatrixView.cpp プロジェクト: YetToCome/nui3
bool nuiMatrixView::MouseUnclicked(nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
  if (!mClicked)
    return false;

  mClicked = false;
  mCanChange = false;
  mClickedItem = NULL;
  Ungrab();
  
  // send event if a changed occured
  if (mChanged)
  {
    ValueChanged();
    mChanged=false;
  }

  return true;
}
コード例 #10
0
ファイル: nuiWindow.cpp プロジェクト: JamesLinus/nui3
bool nuiWindow::MouseUnclicked (nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
//  OUT("MouseUnclicked %d - %d\n",X,Y);

  if (Button == nglMouseInfo::ButtonLeft && mMoving != eNoMove)
  {
    LocalToLocal(GetParent(), X, Y);

    mClickX = X;
    mClickY = Y;
    mMoving = eNoMove;

    Invalidate();

    SetAlpha(1.0f);
    mMoving = eNoMove;
    Ungrab();
    return true;
  }

  return true;
}
コード例 #11
0
bool nuiScrollView::MouseUnclicked(nuiSize X, nuiSize Y, nglMouseInfo::Flags Button)
{
  if (!mLeftClick)
    return false;

  Dragged(X, Y);
  mLeftClick = false;

  Ungrab();
  
  nglTime now;
  double elapsed = now.GetValue() - mLastTime.GetValue();
  if (elapsed > 0.05)
  {
    mSpeedX = 0;
    mSpeedY = 0;
  }
  
  if (mHideScrollBars)
  {
    HideScrollBars();
  }
  return true;
}