mirror of
https://github.com/transmission/transmission
synced 2025-02-20 13:16:53 +00:00
feat: remember tab selection in Details dialog (#2506)
This commit is contained in:
parent
064ad6a436
commit
4c4b2714f1
3 changed files with 20 additions and 0 deletions
|
@ -156,8 +156,13 @@ private:
|
|||
Glib::Quark const TORRENT_ID_KEY = Glib::Quark("tr-torrent-id-key");
|
||||
Glib::Quark const TEXT_BUFFER_KEY = Glib::Quark("tr-text-buffer-key");
|
||||
Glib::Quark const URL_ENTRY_KEY = Glib::Quark("tr-url-entry-key");
|
||||
|
||||
static guint last_page_;
|
||||
sigc::connection last_page_tag_;
|
||||
};
|
||||
|
||||
guint DetailsDialog::Impl::last_page_ = 0;
|
||||
|
||||
std::vector<tr_torrent*> DetailsDialog::Impl::getTorrents() const
|
||||
{
|
||||
std::vector<tr_torrent*> torrents;
|
||||
|
@ -2572,6 +2577,7 @@ void DetailsDialog::Impl::on_details_window_size_allocated(Gtk::Allocation& /*al
|
|||
DetailsDialog::Impl::~Impl()
|
||||
{
|
||||
periodic_refresh_tag_.disconnect();
|
||||
last_page_tag_.disconnect();
|
||||
}
|
||||
|
||||
std::unique_ptr<DetailsDialog> DetailsDialog::create(Gtk::Window& parent, Glib::RefPtr<Session> const& core)
|
||||
|
@ -2623,6 +2629,9 @@ DetailsDialog::Impl::Impl(DetailsDialog& dialog, Glib::RefPtr<Session> const& co
|
|||
periodic_refresh_tag_ = Glib::signal_timeout().connect_seconds(
|
||||
[this]() { return refresh(), true; },
|
||||
SECONDARY_WINDOW_REFRESH_INTERVAL_SECONDS);
|
||||
|
||||
n->set_current_page(last_page_);
|
||||
last_page_tag_ = n->signal_switch_page().connect([](Widget*, guint page) { DetailsDialog::Impl::last_page_ = page; });
|
||||
}
|
||||
|
||||
void DetailsDialog::set_torrents(std::vector<int> const& ids)
|
||||
|
|
|
@ -196,6 +196,8 @@ private:
|
|||
****
|
||||
***/
|
||||
|
||||
int DetailsDialog::prev_tab_index_ = 0;
|
||||
|
||||
DetailsDialog::DetailsDialog(Session& session, Prefs& prefs, TorrentModel const& model, QWidget* parent)
|
||||
: BaseDialog(parent)
|
||||
, session_(session)
|
||||
|
@ -212,6 +214,7 @@ DetailsDialog::DetailsDialog(Session& session, Prefs& prefs, TorrentModel const&
|
|||
|
||||
adjustSize();
|
||||
ui_.commentBrowser->setMaximumHeight(QWIDGETSIZE_MAX);
|
||||
ui_.tabs->setCurrentIndex(prev_tab_index_);
|
||||
|
||||
static std::array<int, 2> constexpr InitKeys = {
|
||||
Prefs::SHOW_TRACKER_SCRAPES,
|
||||
|
@ -238,6 +241,11 @@ DetailsDialog::DetailsDialog(Session& session, Prefs& prefs, TorrentModel const&
|
|||
ui_debounce_timer_.setSingleShot(true);
|
||||
}
|
||||
|
||||
DetailsDialog::~DetailsDialog()
|
||||
{
|
||||
prev_tab_index_ = ui_.tabs->currentIndex();
|
||||
}
|
||||
|
||||
void DetailsDialog::setIds(torrent_ids_t const& ids)
|
||||
{
|
||||
if (ids != ids_)
|
||||
|
|
|
@ -37,6 +37,7 @@ class DetailsDialog : public BaseDialog
|
|||
|
||||
public:
|
||||
DetailsDialog(Session&, Prefs&, TorrentModel const&, QWidget* parent = nullptr);
|
||||
~DetailsDialog() override;
|
||||
|
||||
void setIds(torrent_ids_t const& ids);
|
||||
|
||||
|
@ -136,4 +137,6 @@ private:
|
|||
|
||||
QIcon const icon_encrypted_ = QIcon(QStringLiteral(":/icons/encrypted.png"));
|
||||
QIcon const icon_unencrypted_ = {};
|
||||
|
||||
static int prev_tab_index_;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue