fixed mouse tracking to not initiate a drag after mouse up
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16512 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -161,10 +161,10 @@ void
|
||||
BListView::Draw(BRect updateRect)
|
||||
{
|
||||
for (int i = 0; i < CountItems(); i++) {
|
||||
BRect item_frame = ItemFrame(i);
|
||||
BRect itemFrame = ItemFrame(i);
|
||||
|
||||
if (item_frame.Intersects(updateRect))
|
||||
DrawItem(((BListItem*)ItemAt(i)), item_frame);
|
||||
if (itemFrame.Intersects(updateRect))
|
||||
DrawItem(((BListItem*)ItemAt(i)), itemFrame);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -326,6 +326,33 @@ BListView::MouseDown(BPoint point)
|
||||
}
|
||||
}
|
||||
|
||||
// MouseUp
|
||||
void
|
||||
BListView::MouseUp(BPoint pt)
|
||||
{
|
||||
if (fWidth == 0)
|
||||
return;
|
||||
|
||||
DoMouseMoved(pt);
|
||||
DoMouseUp(pt);
|
||||
|
||||
fTrack->item_index = -1;
|
||||
fTrack->try_drag = false;
|
||||
}
|
||||
|
||||
// MouseMoved
|
||||
void
|
||||
BListView::MouseMoved(BPoint pt, uint32 code, const BMessage *msg)
|
||||
{
|
||||
if (fTrack->item_index == -1)
|
||||
return;
|
||||
|
||||
if (_TryInitiateDrag(pt))
|
||||
return;
|
||||
|
||||
DoMouseMoved(pt);
|
||||
}
|
||||
|
||||
// KeyDown
|
||||
void
|
||||
BListView::KeyDown(const char *bytes, int32 numBytes)
|
||||
@@ -986,11 +1013,12 @@ BListView::ItemFrame(int32 index)
|
||||
if (index < 0 || index >= CountItems())
|
||||
return frame;
|
||||
|
||||
// TODO: this is very expensive, the (last) offsets could be cached
|
||||
for (int32 i = 0; i <= index; i++) {
|
||||
frame.top = frame.bottom + 1;
|
||||
frame.bottom += (float)ceil(ItemAt(i)->Height());
|
||||
}
|
||||
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
@@ -1040,30 +1068,6 @@ BListView::WindowActivated(bool state)
|
||||
}
|
||||
}
|
||||
|
||||
// MouseUp
|
||||
void
|
||||
BListView::MouseUp(BPoint pt)
|
||||
{
|
||||
if (fWidth == 0)
|
||||
return;
|
||||
|
||||
DoMouseMoved(pt);
|
||||
DoMouseUp(pt);
|
||||
}
|
||||
|
||||
// MouseMoved
|
||||
void
|
||||
BListView::MouseMoved(BPoint pt, uint32 code, const BMessage *msg)
|
||||
{
|
||||
if (fTrack == NULL)
|
||||
return;
|
||||
|
||||
if (_TryInitiateDrag(pt))
|
||||
return;
|
||||
|
||||
DoMouseMoved(pt);
|
||||
}
|
||||
|
||||
// DetachedFromWindow
|
||||
void
|
||||
BListView::DetachedFromWindow()
|
||||
@@ -1158,6 +1162,7 @@ BListView::_InitObject(list_view_type type)
|
||||
fScrollView = NULL;
|
||||
fTrack = new track_data;
|
||||
fTrack->try_drag = false;
|
||||
fTrack->item_index = -1;
|
||||
}
|
||||
|
||||
// _FixupScrollBar
|
||||
|
||||
Reference in New Issue
Block a user