From a4329e21b97db7e821f54599abca0edfbeaecac0 Mon Sep 17 00:00:00 2001 From: Ankush Dutt Date: Thu, 3 Aug 2023 13:22:26 +0530 Subject: [PATCH] GUI: Disable download button when no item is selected in DLC browsing dialog --- gui/dlcsdialog.cpp | 19 ++++++++++++++++++- gui/dlcsdialog.h | 2 ++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/gui/dlcsdialog.cpp b/gui/dlcsdialog.cpp index fc3ebe33810..c9394bf1294 100644 --- a/gui/dlcsdialog.cpp +++ b/gui/dlcsdialog.cpp @@ -54,7 +54,7 @@ DLCsDialog::DLCsDialog() : Dialog("DownloadGames") { new ButtonWidget(this, "DownloadGames.Back", _("Back"), Common::U32String(), kCloseCmd); new ButtonWidget(this, "DownloadGames.AllDownloads", _("All Downloads"), Common::U32String(), kAllDownloadsCmd); - new ButtonWidget(this, "DownloadGames.Download", _("Download"), Common::U32String(), kDownloadSelectedCmd); + _downloadButton = new ButtonWidget(this, "DownloadGames.Download", _("Download"), Common::U32String(), kDownloadSelectedCmd); } DLCsDialog::~DLCsDialog() { @@ -83,6 +83,23 @@ void DLCsDialog::refreshDLCList() { g_gui.scheduleTopDialogRedraw(); } +void DLCsDialog::handleTickle() { + // enable download button only when a list item is selected + if (_gamesList->getSelected() == -1) { + if (_downloadButton->isEnabled()) { + _downloadButton->setEnabled(false); + g_gui.scheduleTopDialogRedraw(); + } + } else { + if (!_downloadButton->isEnabled()) { + _downloadButton->setEnabled(true); + g_gui.scheduleTopDialogRedraw(); + } + } + + Dialog::handleTickle(); +} + void DLCsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) { switch (cmd) { case kAllDownloadsCmd: { diff --git a/gui/dlcsdialog.h b/gui/dlcsdialog.h index 961477a43e3..04ef3f60499 100644 --- a/gui/dlcsdialog.h +++ b/gui/dlcsdialog.h @@ -39,12 +39,14 @@ public: DLCsDialog(); ~DLCsDialog() override; + void handleTickle() override; void handleCommand(CommandSender *sender, uint32 cmd, uint32 data) override; void refreshDLCList(); private: ListWidget *_gamesList; + ButtonWidget *_downloadButton; }; } // End of namespace GUI