void CountrySelectInner::updateSel() { if (!_mouseSel) return; QPoint p(mapFromGlobal(_lastMousePos)); bool in = parentWidget()->rect().contains(parentWidget()->mapFromGlobal(_lastMousePos)); int32 newSel = (in && p.y() >= st::countriesSkip && p.y() < st::countriesSkip + countriesNow->size() * _rowHeight) ? ((p.y() - st::countriesSkip) / _rowHeight) : -1; if (newSel != _sel) { updateSelectedRow(); _sel = newSel; updateSelectedRow(); } }
void CountrySelectInner::leaveEvent(QEvent *e) { _mouseSel = false; setMouseTracking(false); if (_sel >= 0) { updateSelectedRow(); _sel = -1; } }
void MembersBox::Inner::updateSelection() { if (!_mouseSelection) return; QPoint p(mapFromGlobal(_lastMousePos)); p.setY(p.y() - st::membersMarginTop); bool in = parentWidget()->rect().contains(parentWidget()->mapFromGlobal(_lastMousePos)); auto selected = (in && p.y() >= 0 && p.y() < _rows.size() * _rowHeight) ? (p.y() / _rowHeight) : -1; auto kickSelected = selected; if (selected >= 0 && (!data(selected)->canKick || !QRect(width() - _kickWidth - st::contactsPadding.right() - st::contactsCheckPosition.x(), selected * _rowHeight + st::contactsPadding.top() + (st::contactsPhotoSize - st::normalFont->height) / 2, _kickWidth, st::normalFont->height).contains(p))) { kickSelected = -1; } if (_selected != selected || _kickSelected != kickSelected) { updateSelectedRow(); _selected = selected; _kickSelected = kickSelected; updateSelectedRow(); setCursor(_kickSelected >= 0 ? style::cur_pointer : style::cur_default); } }
void MembersBox::Inner::clearSel() { updateSelectedRow(); _selected = _kickSelected = -1; _lastMousePos = QCursor::pos(); updateSelection(); }