hrev44496 adds 1 changeset to branch 'master' old head: 5489384d4538de742017aa912222e4921b4673bb new head: 0bc1be3252ac6e87e2b046fb06f8d36425c23b51 ---------------------------------------------------------------------------- 0bc1be3: PoseView: Fix crash in FilePanel Again, a regression fix. Under some circumstance, fFiltering was wrongly set. Also, the node wasn't open before checking the BRefFilter and some filters expected that to be. [ Philippe Saint-Pierre <stpere@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev44496 Commit: 0bc1be3252ac6e87e2b046fb06f8d36425c23b51 URL: http://cgit.haiku-os.org/haiku/commit/?id=0bc1be3 Author: Philippe Saint-Pierre <stpere@xxxxxxxxx> Date: Wed Aug 8 18:59:29 2012 UTC ---------------------------------------------------------------------------- 2 files changed, 5 insertions(+), 6 deletions(-) src/kits/tracker/PoseView.cpp | 8 +++----- src/kits/tracker/PoseView.h | 3 ++- ---------------------------------------------------------------------------- diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp index 9e6987f..40db53e 100644 --- a/src/kits/tracker/PoseView.cpp +++ b/src/kits/tracker/PoseView.cpp @@ -8030,8 +8030,6 @@ BPoseView::ClearPoses() // clear all pose lists fPoseList->MakeEmpty(); - if (fFiltering) - fFilteredPoseList->MakeEmpty(); fMimeTypeListIsDirty = true; fVSPoseList->MakeEmpty(); fZombieList->MakeEmpty(); @@ -8184,8 +8182,7 @@ BPoseView::Refresh() AddPoses(TargetModel()); TargetModel()->CloseNode(); - // fRefFilter must be set for this to happen - if (fFiltering) { + if (fRefFilter != NULL) { fFiltering = false; StartFiltering(); } @@ -10018,6 +10015,7 @@ BPoseView::FilterPose(BPose* pose) if (fRefFilter != NULL) { PoseInfo poseInfo; ReadPoseInfo(pose->TargetModel(), &poseInfo); + pose->TargetModel()->OpenNode(); if (!ShouldShowPose(pose->TargetModel(), &poseInfo)) return false; } @@ -10093,7 +10091,7 @@ BPoseView::StopFiltering() void BPoseView::ClearFilter() { - if (!fFiltering || fRefFilter != NULL) + if (!fFiltering) return; fCountView->CancelFilter(); diff --git a/src/kits/tracker/PoseView.h b/src/kits/tracker/PoseView.h index 621f10a..88b30a0 100644 --- a/src/kits/tracker/PoseView.h +++ b/src/kits/tracker/PoseView.h @@ -1152,7 +1152,8 @@ inline void BPoseView::SetRefFilter(BRefFilter* filter) { fRefFilter = filter; - FilterChanged(); + if (filter != NULL) + FilterChanged(); }