From ac53da69c7e6d7a13aaf094e6722c77d13df1272 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sat, 30 Jan 2010 17:10:46 +0000 Subject: [PATCH] When initially starting filtering we need to make sure that non-matching poses fall out of the selection. The same is later done when removing them from the matching subset, so moved that to a common EnsurePoseUnselected(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35345 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/tracker/PoseView.cpp | 10 +++++++++- src/kits/tracker/PoseView.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp index 92d5a3d6dd..cb77b9fc6d 100644 --- a/src/kits/tracker/PoseView.cpp +++ b/src/kits/tracker/PoseView.cpp @@ -9607,7 +9607,7 @@ BPoseView::SetWidgetTextOutline(bool on) void -BPoseView::RemoveFilteredPose(BPose *pose, int32 index) +BPoseView::EnsurePoseUnselected(BPose *pose) { if (pose == fDropTarget) fDropTarget = NULL; @@ -9626,7 +9626,13 @@ BPoseView::RemoveFilteredPose(BPose *pose, int32 index) if (fSelectionChangedHook) ContainerWindow()->SelectionChanged(); } +} + +void +BPoseView::RemoveFilteredPose(BPose *pose, int32 index) +{ + EnsurePoseUnselected(pose); fFilteredPoseList->RemoveItemAt(index); BRect invalidRect = CalcPoseRectList(pose, index); @@ -9744,6 +9750,8 @@ BPoseView::StartFiltering() BPose *pose = fPoseList->ItemAt(i); if (FilterPose(pose)) fFilteredPoseList->AddItem(pose); + else + EnsurePoseUnselected(pose); } Invalidate(); diff --git a/src/kits/tracker/PoseView.h b/src/kits/tracker/PoseView.h index ec3c8dfdfd..085db0006f 100644 --- a/src/kits/tracker/PoseView.h +++ b/src/kits/tracker/PoseView.h @@ -613,6 +613,7 @@ class BPoseView : public BView { bool IsValidAddPosesThread(thread_id) const; // filtering + void EnsurePoseUnselected(BPose *pose); void RemoveFilteredPose(BPose *pose, int32 index); void FilterChanged(); void UpdateAfterFilterChange();