From 0a2766d6b08898efa7f6af717f1e2ac04a5ac847 Mon Sep 17 00:00:00 2001 From: Andrew Lindesay Date: Sat, 25 Apr 2026 10:34:58 +1200 Subject: [PATCH] HaikuDepot: featured tab enable When the application updates data, the featured tab remains grayed out because it is not being invalidated. This will ensure it is redrawn as the state changes. Also the tab will be enabled as soon as a prominent packaged is seen rather than wait for the end of the bulk load process. Change-Id: I3fbc7d67e19c804b7ac065a8409469773f08f95a Reviewed-on: https://review.haiku-os.org/c/haiku/+/10844 Reviewed-by: waddlesplash Haiku-Format: Haiku-format Bot --- src/apps/haikudepot/ui/MainWindow.cpp | 7 +++++++ src/kits/interface/TabView.cpp | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/apps/haikudepot/ui/MainWindow.cpp b/src/apps/haikudepot/ui/MainWindow.cpp index a9c6fcd4f7..6970cb783a 100644 --- a/src/apps/haikudepot/ui/MainWindow.cpp +++ b/src/apps/haikudepot/ui/MainWindow.cpp @@ -837,6 +837,8 @@ MainWindow::_HandlePackagesChanged(const BMessage* message) return; } + bool isFeaturedTabEnabled = fListTabs->TabAt(TAB_PROMINENT_PACKAGES)->IsEnabled(); + HDTRACE("window processing %" B_PRIi32 " package changes", packageEvents.CountEvents()); // Transfer the package change events into package *info* change events so @@ -850,6 +852,11 @@ MainWindow::_HandlePackagesChanged(const BMessage* message) const PackageInfoRef packageInfo = fModel.PackageForName(packageEvent.PackageName()); if (packageInfo.IsSet()) { + if (!isFeaturedTabEnabled && !PackageUtils::IsProminent(packageInfo)) { + fListTabs->TabAt(TAB_PROMINENT_PACKAGES)->SetEnabled(true); + isFeaturedTabEnabled = true; + } + const PackageInfoChangeEvent packageInfoEvent(packageInfo, packageEvent.Changes()); packageInfoEvents.push_back(packageInfoEvent); } else { diff --git a/src/kits/interface/TabView.cpp b/src/kits/interface/TabView.cpp index 64fd6ce8cd..dc4fb5c0e5 100644 --- a/src/kits/interface/TabView.cpp +++ b/src/kits/interface/TabView.cpp @@ -205,7 +205,14 @@ BTab::Deselect() void BTab::SetEnabled(bool enable) { + if (fView == NULL) + return; + + if (fEnabled == enable) + return; + fEnabled = enable; + fTabView->Invalidate(); }