//-------------------------------------------------------------- // constructor mgSimpleDesktop::mgSimpleDesktop( mgControl* parent, const char* cntlName) : mgDesktopControl(parent, cntlName) { addMouseListener(this); addTimeListener(this); }
//-------------------------------------------------------------- // 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(); }