From 87016f8f49d6de59aedcf9a26f64362a4abe1d46 Mon Sep 17 00:00:00 2001 From: Andrew Lindesay Date: Sun, 24 May 2020 09:46:42 +1200 Subject: [PATCH] HaikuDepot: Single Package Crash In single package mode there was a crash owing to the status bar not being present. This may as well be added because it provides some feedback that the application is actually doing something. The behaviour of this is not ideal because the feedback could be better, but it will resolve the crash issue this ticket is raising. Resolves #15964 Change-Id: I603a7b163139859f0c46a35ead0809e5d82e0f8d Reviewed-on: https://review.haiku-os.org/c/haiku/+/2791 Reviewed-by: waddlesplash --- src/apps/haikudepot/ui/MainWindow.cpp | 11 +++++------ src/apps/haikudepot/ui/PackageInfoView.cpp | 4 +--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/apps/haikudepot/ui/MainWindow.cpp b/src/apps/haikudepot/ui/MainWindow.cpp index 28764a14df..c247616679 100644 --- a/src/apps/haikudepot/ui/MainWindow.cpp +++ b/src/apps/haikudepot/ui/MainWindow.cpp @@ -236,11 +236,12 @@ MainWindow::MainWindow(const BMessage& settings, const PackageInfoRef& package) debugger("unable to create the process coordinator semaphore"); fFilterView = new FilterView(); - fPackageListView = new PackageListView(fModel.Lock()); fPackageInfoView = new PackageInfoView(fModel.Lock(), this); + fWorkStatusView = new WorkStatusView("work status"); BLayoutBuilder::Group<>(this, B_VERTICAL) .Add(fPackageInfoView) + .Add(fWorkStatusView) .SetInsets(0, B_USE_WINDOW_INSETS, 0, 0) ; @@ -494,7 +495,7 @@ MainWindow::MessageReceived(BMessage* message) fModel.SetPackageState(ref, ref->State()); } _AddRemovePackageFromLists(ref); - if (!fSinglePackageMode && (changes & PKG_CHANGED_STATE) != 0 + if ((changes & PKG_CHANGED_STATE) != 0 && fCoordinator == NULL) { fWorkStatusView->PackageStatusChanged(ref); } @@ -516,14 +517,12 @@ MainWindow::MessageReceived(BMessage* message) status_t status = message->FindString("reason", &reason); if (status != B_OK) break; - if (!fSinglePackageMode) - fWorkStatusView->SetBusy(reason); + fWorkStatusView->SetBusy(reason); break; } case MSG_PACKAGE_WORKER_IDLE: - if (!fSinglePackageMode) - fWorkStatusView->SetIdle(); + fWorkStatusView->SetIdle(); break; case MSG_USER_USAGE_CONDITIONS_NOT_LATEST: diff --git a/src/apps/haikudepot/ui/PackageInfoView.cpp b/src/apps/haikudepot/ui/PackageInfoView.cpp index 1d8f604ef9..bcf22bd077 100644 --- a/src/apps/haikudepot/ui/PackageInfoView.cpp +++ b/src/apps/haikudepot/ui/PackageInfoView.cpp @@ -500,7 +500,6 @@ public: } else { AdoptActions(package); } - } void AdoptActions(const PackageInfo& package) @@ -1365,9 +1364,8 @@ PackageInfoView::MessageReceived(BMessage* message) fTitleView->SetPackage(*package.Get()); } - if ((changes & PKG_CHANGED_STATE) != 0) { + if ((changes & PKG_CHANGED_STATE) != 0) fPackageActionView->SetPackage(*package.Get()); - } break; }