Browse Source

cleanup

pull/974/head
krepa098 11 years ago
parent
commit
bde32d2171
  1. 25
      src/chatlog/chatlog.cpp

25
src/chatlog/chatlog.cpp

@ -330,19 +330,20 @@ ChatLineContent* ChatLog::getContentFromPos(QPointF scenePos) const @@ -330,19 +330,20 @@ ChatLineContent* ChatLog::getContentFromPos(QPointF scenePos) const
if(lines.empty())
return nullptr;
QVector<ChatLine::Ptr>::const_iterator upperBound;
upperBound = std::upper_bound(lines.cbegin(), lines.cend(), scenePos.y(), [](const qreal lhs, const ChatLine::Ptr rhs)
//the first visible line
auto lowerBound = std::upper_bound(lines.cbegin(), lines.cend(), scenePos.y(), [](const qreal lhs, const ChatLine::Ptr rhs)
{
return lhs < rhs->boundingSceneRect().bottom();
});
QVector<ChatLine::Ptr>::const_iterator lowerBound;
lowerBound = std::lower_bound(lines.cbegin(), lines.cend(), scenePos.y(), [](const ChatLine::Ptr lhs, const qreal rhs)
//the last visible line
auto upperBound = std::lower_bound(lines.cbegin(), lines.cend(), scenePos.y(), [](const ChatLine::Ptr lhs, const qreal rhs)
{
return lhs->boundingSceneRect().top() < rhs;
});
for(auto itr = upperBound; itr != lowerBound; ++itr)
//find content
for(auto itr = lowerBound; itr != upperBound; ++itr)
{
if((*itr)->boundingSceneRect().contains(scenePos))
return (*itr)->getContent(scenePos);
@ -582,23 +583,21 @@ void ChatLog::checkVisibility() @@ -582,23 +583,21 @@ void ChatLog::checkVisibility()
updateSceneRect();
// find first visible row
QVector<ChatLine::Ptr>::const_iterator upperBound;
upperBound = std::upper_bound(lines.cbegin(), lines.cend(), getVisibleRect().top(), [](const qreal lhs, const ChatLine::Ptr rhs)
// find first visible line
auto lowerBound = std::upper_bound(lines.cbegin(), lines.cend(), getVisibleRect().top(), [](const qreal lhs, const ChatLine::Ptr rhs)
{
return lhs < rhs->boundingSceneRect().bottom();
});
// find last visible row
QVector<ChatLine::Ptr>::const_iterator lowerBound;
lowerBound = std::lower_bound(lines.cbegin(), lines.cend(), getVisibleRect().bottom(), [](const ChatLine::Ptr lhs, const qreal rhs)
// find last visible line
auto upperBound = std::lower_bound(lines.cbegin(), lines.cend(), getVisibleRect().bottom(), [](const ChatLine::Ptr lhs, const qreal rhs)
{
return lhs->boundingSceneRect().top() < rhs;
});
// set visibilty
QList<ChatLine::Ptr> newVisibleLines;
for(auto itr = upperBound; itr != lowerBound; ++itr)
for(auto itr = lowerBound; itr != upperBound; ++itr)
{
newVisibleLines.append(*itr);
@ -608,6 +607,7 @@ void ChatLog::checkVisibility() @@ -608,6 +607,7 @@ void ChatLog::checkVisibility()
visibleLines.removeOne(*itr);
}
// these lines are no longer visible
for(ChatLine::Ptr line : visibleLines)
line->visibilityChanged(false);
@ -627,7 +627,6 @@ void ChatLog::scrollContentsBy(int dx, int dy) @@ -627,7 +627,6 @@ void ChatLog::scrollContentsBy(int dx, int dy)
{
QGraphicsView::scrollContentsBy(dx, dy);
partialUpdate();
checkVisibility();
}
void ChatLog::resizeEvent(QResizeEvent* ev)

Loading…
Cancel
Save