Example #1
0
//--------------------------------------------------------------
// constructor
mgSimpleDesktop::mgSimpleDesktop(
  mgControl* parent,
  const char* cntlName)
: mgDesktopControl(parent, cntlName)
{
  addMouseListener(this);
  addTimeListener(this);  
}
Example #2
0
//--------------------------------------------------------------
// mouse pressed
void mgUglyScrollbar::mouseDown(
  void* source,
  int x,
  int y,
  int modifiers,
  int button)
{
  int oldPress = m_pressPart;

  // find area of press
  if (m_horizontal)
  {
    if (x < m_lineUpCoord)
      m_pressPart = PART_LINEUP;
    else if (x < m_pageUpCoord)
    {
      m_dragStart = x;
      m_pressPart = PART_PAGEUP;
    }
    else if (x < m_sliderCoord)
    {
      m_pressPart = PART_SLIDER;
      m_dragOffset = x - m_pageUpCoord; // start of slider
    }
    else if (x < m_pageDownCoord)
    {    
      m_pressPart = PART_PAGEDOWN;
      m_dragStart = x;
    }
    else m_pressPart = PART_LINEDOWN;
  }
  else
  {
    if (y < m_lineUpCoord)
      m_pressPart = PART_LINEUP;
    else if (y < m_pageUpCoord)
    {
      m_pressPart = PART_PAGEUP;
      m_dragStart = y;
    }      
    else if (y < m_sliderCoord)
    {
      m_pressPart = PART_SLIDER;
      m_dragOffset = y - m_pageUpCoord; // start of slider
    }
    else if (y < m_pageDownCoord)
    {
      m_pressPart = PART_PAGEDOWN;
      m_dragStart = y;
    }     
    else m_pressPart = PART_LINEDOWN;
  }

  // do first scroll event
  switch (m_pressPart)
  {
    case PART_LINEUP:
    case PART_LINEDOWN:
    case PART_PAGEUP:
    case PART_PAGEDOWN:
      sendScrollEvent(m_pressPart, 0);
      break;
    case PART_SLIDER: ;
  }

  if (m_pressPart != PART_NONE && m_pressPart != PART_SLIDER)
  {
    // start timer
    addTimeListener((mgTimeListener*) this);  
    m_pressTime = mgOSGetTime();
    m_pressInterval = FIRST_INTERVAL;
  }

  if (m_pressPart != oldPress)
    damage();
}