Skip to content

Commit

Permalink
Wait for an explicit "Close" by the user instead of closing the Downl…
Browse files Browse the repository at this point in the history
…oadDialog automatically

Downloads are most of the time rather fast, having the window just pop
up and go away feels a bit irritating.
  • Loading branch information
Grumbel committed Aug 26, 2014
1 parent e9df7ac commit c9ac532
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 2 deletions.
7 changes: 7 additions & 0 deletions src/gui/dialog.cpp
Expand Up @@ -48,6 +48,13 @@ Dialog::set_text(const std::string& text)

}

void
Dialog::clear_buttons()
{
m_buttons.clear();
m_selected_button = 0;
}

void
Dialog::add_button(const std::string& text, const std::function<void ()>& callback, bool focus)
{
Expand Down
1 change: 1 addition & 0 deletions src/gui/dialog.hpp
Expand Up @@ -47,6 +47,7 @@ class Dialog
virtual ~Dialog();

void set_text(const std::string& text);
void clear_buttons();
void add_button(const std::string& text, const std::function<void ()>& callback = {},
bool focus = false);

Expand Down
2 changes: 0 additions & 2 deletions src/supertux/menu/addon_menu.cpp
Expand Up @@ -186,7 +186,6 @@ AddonMenu::menu_action(MenuItem* item)
{
TransferStatusPtr status = m_addon_manager.request_check_online();
status->then([this]{
MenuManager::instance().set_dialog({});
refresh();
});
std::unique_ptr<DownloadDialog> dialog(new DownloadDialog(status));
Expand Down Expand Up @@ -236,7 +235,6 @@ AddonMenu::menu_action(MenuItem* item)
{
log_warning << "Enabling addon failed: " << err.what() << std::endl;
}
MenuManager::instance().set_dialog({});
refresh();
});

Expand Down
13 changes: 13 additions & 0 deletions src/supertux/menu/download_dialog.cpp
Expand Up @@ -30,6 +30,10 @@ DownloadDialog::DownloadDialog(TransferStatusPtr status) :
});

update_text();

status->then([this]{
on_download_complete();
});
}

void
Expand Down Expand Up @@ -70,4 +74,13 @@ DownloadDialog::on_abort()
AddonManager::current()->abort_install();
}

void
DownloadDialog::on_download_complete()
{
clear_buttons();
add_button(_("Close"), [this]{
MenuManager::instance().set_dialog({});
});
}

/* EOF */
1 change: 1 addition & 0 deletions src/supertux/menu/download_dialog.hpp
Expand Up @@ -38,6 +38,7 @@ class DownloadDialog : public Dialog

private:
void on_abort();
void on_download_complete();

void update_text();

Expand Down

0 comments on commit c9ac532

Please sign in to comment.