From f7628f839d15c4bac0d6b4dfa11683c21eb448b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Mon, 16 Sep 2013 22:17:42 +0200 Subject: [PATCH] HaikuDepot: Fixed selecting the right package when the list is sorted. --- src/apps/haiku-depot/MainWindow.cpp | 17 +++++++++++++---- src/apps/haiku-depot/PackageListView.cpp | 9 ++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/apps/haiku-depot/MainWindow.cpp b/src/apps/haiku-depot/MainWindow.cpp index 89544b4c0d..662f28b9b8 100644 --- a/src/apps/haiku-depot/MainWindow.cpp +++ b/src/apps/haiku-depot/MainWindow.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -87,14 +88,22 @@ MainWindow::MessageReceived(BMessage* message) switch (message->what) { case B_SIMPLE_DATA: case B_REFS_RECEIVED: + // TODO: ? break; case MSG_PACKAGE_SELECTED: { - int32 index; - if (message->FindInt32("index", &index) == B_OK - && index >= 0 && index < fVisiblePackages.CountItems()) { - _AdoptPackage(fVisiblePackages.ItemAtFast(index)); + BString title; + if (message->FindString("title", &title) == B_OK) { + int count = fVisiblePackages.CountItems(); + for (int i = 0; i < count; i++) { + const PackageInfoRef& package + = fVisiblePackages.ItemAtFast(i); + if (package.Get() != NULL && package->Title() == title) { + _AdoptPackage(package); + break; + } + } } else { _ClearPackage(); } diff --git a/src/apps/haiku-depot/PackageListView.cpp b/src/apps/haiku-depot/PackageListView.cpp index f21f9f85b1..ba6b9c22fc 100644 --- a/src/apps/haiku-depot/PackageListView.cpp +++ b/src/apps/haiku-depot/PackageListView.cpp @@ -544,14 +544,9 @@ PackageListView::SelectionChanged() BMessage message(MSG_PACKAGE_SELECTED); - BRow* selected = CurrentSelection(); - - // TODO: Wrong index, its the visible one (i.e. sorted)! - // Solve by putting an ID for the package in the message instead. - int32 index = -1; + PackageRow* selected = dynamic_cast(CurrentSelection()); if (selected != NULL) - index = IndexOf(selected); - message.AddInt32("index", index); + message.AddString("title", selected->Package()->Title()); Window()->PostMessage(&message); }