diff --git a/src/apps/haikudepot/ui/PackageListView.cpp b/src/apps/haikudepot/ui/PackageListView.cpp index 9fe2496695..fe22dee5ae 100644 --- a/src/apps/haikudepot/ui/PackageListView.cpp +++ b/src/apps/haikudepot/ui/PackageListView.cpp @@ -857,7 +857,8 @@ PackageListView::PackageListView(Model* model) fModel(model), fPackageListener(new(std::nothrow) PackageListener(this)), fRowByNameTable(new RowByNameTable()), - fWorkStatusView(NULL) + fWorkStatusView(NULL), + fIgnoreSelectionChanged(false) { float scale = be_plain_font->Size() / 12.f; float spacing = be_control_look->DefaultItemSpacing() * 2; @@ -981,6 +982,9 @@ PackageListView::SelectionChanged() { BColumnListView::SelectionChanged(); + if (fIgnoreSelectionChanged) + return; + BMessage message(MSG_PACKAGE_SELECTED); PackageRow* selected = dynamic_cast(CurrentSelection()); @@ -1046,6 +1050,8 @@ PackageListView::RemovePackage(const PackageInfoRef& package) void PackageListView::SelectPackage(const PackageInfoRef& package) { + fIgnoreSelectionChanged = true; + PackageRow* row = _FindRow(package); BRow* selected = CurrentSelection(); if (row != selected) @@ -1055,6 +1061,8 @@ PackageListView::SelectPackage(const PackageInfoRef& package) SetFocusRow(row, false); ScrollTo(row); } + + fIgnoreSelectionChanged = false; } diff --git a/src/apps/haikudepot/ui/PackageListView.h b/src/apps/haikudepot/ui/PackageListView.h index 866721f9a6..2ffdffd7f1 100644 --- a/src/apps/haikudepot/ui/PackageListView.h +++ b/src/apps/haikudepot/ui/PackageListView.h @@ -57,6 +57,8 @@ private: RowByNameTable* fRowByNameTable; WorkStatusView* fWorkStatusView; + + bool fIgnoreSelectionChanged; }; #endif // PACKAGE_LIST_VIEW_H