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)
|
BListView::Draw(BRect updateRect)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < CountItems(); i++) {
|
for (int i = 0; i < CountItems(); i++) {
|
||||||
BRect item_frame = ItemFrame(i);
|
BRect itemFrame = ItemFrame(i);
|
||||||
|
|
||||||
if (item_frame.Intersects(updateRect))
|
if (itemFrame.Intersects(updateRect))
|
||||||
DrawItem(((BListItem*)ItemAt(i)), item_frame);
|
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
|
// KeyDown
|
||||||
void
|
void
|
||||||
BListView::KeyDown(const char *bytes, int32 numBytes)
|
BListView::KeyDown(const char *bytes, int32 numBytes)
|
||||||
@@ -986,6 +1013,7 @@ BListView::ItemFrame(int32 index)
|
|||||||
if (index < 0 || index >= CountItems())
|
if (index < 0 || index >= CountItems())
|
||||||
return frame;
|
return frame;
|
||||||
|
|
||||||
|
// TODO: this is very expensive, the (last) offsets could be cached
|
||||||
for (int32 i = 0; i <= index; i++) {
|
for (int32 i = 0; i <= index; i++) {
|
||||||
frame.top = frame.bottom + 1;
|
frame.top = frame.bottom + 1;
|
||||||
frame.bottom += (float)ceil(ItemAt(i)->Height());
|
frame.bottom += (float)ceil(ItemAt(i)->Height());
|
||||||
@@ -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
|
// DetachedFromWindow
|
||||||
void
|
void
|
||||||
BListView::DetachedFromWindow()
|
BListView::DetachedFromWindow()
|
||||||
@@ -1158,6 +1162,7 @@ BListView::_InitObject(list_view_type type)
|
|||||||
fScrollView = NULL;
|
fScrollView = NULL;
|
||||||
fTrack = new track_data;
|
fTrack = new track_data;
|
||||||
fTrack->try_drag = false;
|
fTrack->try_drag = false;
|
||||||
|
fTrack->item_index = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// _FixupScrollBar
|
// _FixupScrollBar
|
||||||
|
|||||||
Reference in New Issue
Block a user