FormulaCursor::FormulaCursor (const FormulaCursor& other ) { m_currentElement=other.currentElement(); m_position=other.position(); m_mark=other.mark(); m_selecting=other.isSelecting(); }
void FormulaCursor::moveTo ( const FormulaCursor& pos ) { m_currentElement=pos.currentElement(); m_position=pos.position(); m_selecting=pos.isSelecting(); m_mark=pos.mark(); }
bool TableRowElement::setCursorTo(FormulaCursor& cursor, QPointF point) { if (cursor.isSelecting()) { if (m_data.isEmpty() || point.x()<0.0) { cursor.setCurrentElement(this); cursor.setPosition(0); return true; } //check if the point is behind all child elements if (point.x() >= width()) { cursor.setCurrentElement(this); cursor.setPosition(endPosition()); return true; } } int i=0; qreal x=0.0; TableElement* parentTable = static_cast<TableElement*>( parentElement() ); for (; i<m_data.count()-1; ++i) { //Find the child element the point is in x+=parentTable->columnWidth( i ); if (x>=point.x()) { break; } } if (cursor.isSelecting()) { //we don't need to change current element because we are already in this element if (cursor.mark()<=i) { cursor.setPosition(i+1); } else { cursor.setPosition(i); } return true; } else { point-=m_data[i]->origin(); return m_data[i]->setCursorTo(cursor,point); } }