mirror of
https://github.com/transmission/transmission.git
synced 2025-12-20 02:18:42 +00:00
Fix issues reported by clang-tidy bugprone checks (GTK client) (#4183)
* Fix `bugprone-unchecked-optional-access` clang-tidy issues * Fix `bugprone-easily-swappable-parameters` clang-tidy issues * Extend clang-tidy configuration
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
---
|
---
|
||||||
Checks: >
|
Checks: >
|
||||||
-*,
|
-*,
|
||||||
|
bugprone-*,
|
||||||
|
-bugprone-narrowing-conversions,
|
||||||
cert-*,
|
cert-*,
|
||||||
cppcoreguidelines-*,
|
cppcoreguidelines-*,
|
||||||
-cppcoreguidelines-avoid-magic-numbers,
|
-cppcoreguidelines-avoid-magic-numbers,
|
||||||
|
|||||||
@@ -141,6 +141,13 @@ void gtr_get_favicon_from_url(
|
|||||||
Glib::ustring const& url,
|
Glib::ustring const& url,
|
||||||
std::function<void(Glib::RefPtr<Gdk::Pixbuf> const&)> const& pixbuf_ready_func)
|
std::function<void(Glib::RefPtr<Gdk::Pixbuf> const&)> const& pixbuf_ready_func)
|
||||||
{
|
{
|
||||||
auto const host = std::string{ tr_urlParse(url.c_str())->host };
|
if (auto const parsed_url = tr_urlParse(url.c_str()); parsed_url.has_value())
|
||||||
gtr_get_favicon(session, host, pixbuf_ready_func);
|
{
|
||||||
|
auto const host = std::string{ parsed_url->host };
|
||||||
|
gtr_get_favicon(session, host, pixbuf_ready_func);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pixbuf_ready_func({});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,15 +43,20 @@ public:
|
|||||||
MakeProgressDialog(
|
MakeProgressDialog(
|
||||||
BaseObjectType* cast_item,
|
BaseObjectType* cast_item,
|
||||||
Glib::RefPtr<Gtk::Builder> const& builder,
|
Glib::RefPtr<Gtk::Builder> const& builder,
|
||||||
Gtk::Window& parent,
|
|
||||||
tr_metainfo_builder& metainfo_builder,
|
tr_metainfo_builder& metainfo_builder,
|
||||||
std::future<tr_error*> future,
|
std::future<tr_error*> future,
|
||||||
std::string_view const& target,
|
std::string_view target,
|
||||||
Glib::RefPtr<Session> const& core);
|
Glib::RefPtr<Session> const& core);
|
||||||
~MakeProgressDialog() override;
|
~MakeProgressDialog() override;
|
||||||
|
|
||||||
TR_DISABLE_COPY_MOVE(MakeProgressDialog)
|
TR_DISABLE_COPY_MOVE(MakeProgressDialog)
|
||||||
|
|
||||||
|
static std::unique_ptr<MakeProgressDialog> create(
|
||||||
|
std::string_view target,
|
||||||
|
tr_metainfo_builder& metainfo_builder,
|
||||||
|
std::future<tr_error*> future,
|
||||||
|
Glib::RefPtr<Session> const& core);
|
||||||
|
|
||||||
[[nodiscard]] bool success() const
|
[[nodiscard]] bool success() const
|
||||||
{
|
{
|
||||||
return success_;
|
return success_;
|
||||||
@@ -108,8 +113,7 @@ private:
|
|||||||
|
|
||||||
void setFilename(std::string_view filename);
|
void setFilename(std::string_view filename);
|
||||||
|
|
||||||
void makeProgressDialog(std::string_view target, std::future<tr_error*> future);
|
void configurePieceSizeScale(uint32_t piece_size);
|
||||||
void configurePieceSizeScale();
|
|
||||||
void onPieceSizeUpdated();
|
void onPieceSizeUpdated();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -251,10 +255,9 @@ void MakeProgressDialog::onProgressDialogResponse(int response)
|
|||||||
MakeProgressDialog::MakeProgressDialog(
|
MakeProgressDialog::MakeProgressDialog(
|
||||||
BaseObjectType* cast_item,
|
BaseObjectType* cast_item,
|
||||||
Glib::RefPtr<Gtk::Builder> const& builder,
|
Glib::RefPtr<Gtk::Builder> const& builder,
|
||||||
Gtk::Window& parent,
|
|
||||||
tr_metainfo_builder& metainfo_builder,
|
tr_metainfo_builder& metainfo_builder,
|
||||||
std::future<tr_error*> future,
|
std::future<tr_error*> future,
|
||||||
std::string_view const& target,
|
std::string_view target,
|
||||||
Glib::RefPtr<Session> const& core)
|
Glib::RefPtr<Session> const& core)
|
||||||
: Gtk::Dialog(cast_item)
|
: Gtk::Dialog(cast_item)
|
||||||
, builder_(metainfo_builder)
|
, builder_(metainfo_builder)
|
||||||
@@ -264,7 +267,6 @@ MakeProgressDialog::MakeProgressDialog(
|
|||||||
, progress_label_(gtr_get_widget<Gtk::Label>(builder, "progress_label"))
|
, progress_label_(gtr_get_widget<Gtk::Label>(builder, "progress_label"))
|
||||||
, progress_bar_(gtr_get_widget<Gtk::ProgressBar>(builder, "progress_bar"))
|
, progress_bar_(gtr_get_widget<Gtk::ProgressBar>(builder, "progress_bar"))
|
||||||
{
|
{
|
||||||
set_transient_for(parent);
|
|
||||||
signal_response().connect(sigc::mem_fun(*this, &MakeProgressDialog::onProgressDialogResponse));
|
signal_response().connect(sigc::mem_fun(*this, &MakeProgressDialog::onProgressDialogResponse));
|
||||||
|
|
||||||
progress_tag_ = Glib::signal_timeout().connect_seconds(
|
progress_tag_ = Glib::signal_timeout().connect_seconds(
|
||||||
@@ -273,17 +275,62 @@ MakeProgressDialog::MakeProgressDialog(
|
|||||||
onProgressDialogRefresh();
|
onProgressDialogRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MakeDialog::Impl::makeProgressDialog(std::string_view target, std::future<tr_error*> future)
|
std::unique_ptr<MakeProgressDialog> MakeProgressDialog::create(
|
||||||
|
std::string_view target,
|
||||||
|
tr_metainfo_builder& metainfo_builder,
|
||||||
|
std::future<tr_error*> future,
|
||||||
|
Glib::RefPtr<Session> const& core)
|
||||||
{
|
{
|
||||||
auto const builder = Gtk::Builder::create_from_resource(gtr_get_full_resource_path("MakeProgressDialog.ui"));
|
auto const builder = Gtk::Builder::create_from_resource(gtr_get_full_resource_path("MakeProgressDialog.ui"));
|
||||||
progress_dialog_ = std::unique_ptr<MakeProgressDialog>(gtr_get_widget_derived<MakeProgressDialog>(
|
return std::unique_ptr<MakeProgressDialog>(gtr_get_widget_derived<MakeProgressDialog>(
|
||||||
builder,
|
builder,
|
||||||
"MakeProgressDialog",
|
"MakeProgressDialog",
|
||||||
dialog_,
|
metainfo_builder,
|
||||||
*builder_,
|
|
||||||
std::move(future),
|
std::move(future),
|
||||||
target,
|
target,
|
||||||
core_));
|
core));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MakeDialog::Impl::onResponse(int response)
|
||||||
|
{
|
||||||
|
if (response == TR_GTK_RESPONSE_TYPE(CLOSE))
|
||||||
|
{
|
||||||
|
dialog_.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (response != TR_GTK_RESPONSE_TYPE(ACCEPT) || !builder_.has_value())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// destination file
|
||||||
|
auto const dir = destination_chooser_->get_filename();
|
||||||
|
auto const base = Glib::path_get_basename(builder_->top());
|
||||||
|
auto const target = fmt::format("{:s}/{:s}.torrent", dir, base);
|
||||||
|
|
||||||
|
// build the announce list
|
||||||
|
auto trackers = tr_announce_list{};
|
||||||
|
trackers.parse(announce_text_buffer_->get_text(false).raw());
|
||||||
|
builder_->setAnnounceList(std::move(trackers));
|
||||||
|
|
||||||
|
// comment
|
||||||
|
if (comment_check_->get_active())
|
||||||
|
{
|
||||||
|
builder_->setComment(comment_entry_->get_text().raw());
|
||||||
|
}
|
||||||
|
|
||||||
|
// source
|
||||||
|
if (source_check_->get_active())
|
||||||
|
{
|
||||||
|
builder_->setSource(source_entry_->get_text().raw());
|
||||||
|
}
|
||||||
|
|
||||||
|
builder_->setPrivate(private_check_->get_active());
|
||||||
|
|
||||||
|
// build the .torrent
|
||||||
|
progress_dialog_ = MakeProgressDialog::create(target, *builder_, builder_->makeChecksums(), core_);
|
||||||
|
progress_dialog_->set_transient_for(dialog_);
|
||||||
gtr_window_on_close(
|
gtr_window_on_close(
|
||||||
*progress_dialog_,
|
*progress_dialog_,
|
||||||
[this]()
|
[this]()
|
||||||
@@ -298,57 +345,15 @@ void MakeDialog::Impl::makeProgressDialog(std::string_view target, std::future<t
|
|||||||
progress_dialog_->show();
|
progress_dialog_->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MakeDialog::Impl::onResponse(int response)
|
|
||||||
{
|
|
||||||
if (response == TR_GTK_RESPONSE_TYPE(ACCEPT))
|
|
||||||
{
|
|
||||||
if (builder_)
|
|
||||||
{
|
|
||||||
// destination file
|
|
||||||
auto const dir = destination_chooser_->get_filename();
|
|
||||||
auto const base = Glib::path_get_basename(builder_->top());
|
|
||||||
auto const target = fmt::format("{:s}/{:s}.torrent", dir, base);
|
|
||||||
|
|
||||||
// build the announce list
|
|
||||||
auto trackers = tr_announce_list{};
|
|
||||||
trackers.parse(announce_text_buffer_->get_text(false).raw());
|
|
||||||
builder_->setAnnounceList(std::move(trackers));
|
|
||||||
|
|
||||||
// comment
|
|
||||||
if (comment_check_->get_active())
|
|
||||||
{
|
|
||||||
builder_->setComment(comment_entry_->get_text().raw());
|
|
||||||
}
|
|
||||||
|
|
||||||
// source
|
|
||||||
if (source_check_->get_active())
|
|
||||||
{
|
|
||||||
builder_->setSource(source_entry_->get_text().raw());
|
|
||||||
}
|
|
||||||
|
|
||||||
builder_->setPrivate(private_check_->get_active());
|
|
||||||
|
|
||||||
// build the .torrent
|
|
||||||
makeProgressDialog(target, builder_->makeChecksums());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (response == TR_GTK_RESPONSE_TYPE(CLOSE))
|
|
||||||
{
|
|
||||||
dialog_.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
****
|
****
|
||||||
***/
|
***/
|
||||||
|
|
||||||
void MakeDialog::Impl::updatePiecesLabel()
|
void MakeDialog::Impl::updatePiecesLabel()
|
||||||
{
|
{
|
||||||
auto const filename = builder_ ? builder_->top() : ""sv;
|
|
||||||
|
|
||||||
auto gstr = Glib::ustring();
|
auto gstr = Glib::ustring();
|
||||||
|
|
||||||
if (std::empty(filename))
|
if (!builder_.has_value() || std::empty(builder_->top()))
|
||||||
{
|
{
|
||||||
gstr += _("No source selected");
|
gstr += _("No source selected");
|
||||||
piece_size_scale_->set_visible(false);
|
piece_size_scale_->set_visible(false);
|
||||||
@@ -372,10 +377,10 @@ void MakeDialog::Impl::updatePiecesLabel()
|
|||||||
pieces_lb_->set_text(gstr);
|
pieces_lb_->set_text(gstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MakeDialog::Impl::configurePieceSizeScale()
|
void MakeDialog::Impl::configurePieceSizeScale(uint32_t piece_size)
|
||||||
{
|
{
|
||||||
// the below lower & upper bounds would allow piece size selection between approx 1KiB - 64MiB
|
// the below lower & upper bounds would allow piece size selection between approx 1KiB - 64MiB
|
||||||
auto adjustment = Gtk::Adjustment::create(log2(builder_->pieceSize()), 10, 26, 1.0, 1.0);
|
auto adjustment = Gtk::Adjustment::create(log2(piece_size), 10, 26, 1.0, 1.0);
|
||||||
piece_size_scale_->set_adjustment(adjustment);
|
piece_size_scale_->set_adjustment(adjustment);
|
||||||
piece_size_scale_->set_visible(true);
|
piece_size_scale_->set_visible(true);
|
||||||
}
|
}
|
||||||
@@ -387,7 +392,7 @@ void MakeDialog::Impl::setFilename(std::string_view filename)
|
|||||||
if (!filename.empty())
|
if (!filename.empty())
|
||||||
{
|
{
|
||||||
builder_.emplace(filename);
|
builder_.emplace(filename);
|
||||||
configurePieceSizeScale();
|
configurePieceSizeScale(builder_->pieceSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePiecesLabel();
|
updatePiecesLabel();
|
||||||
|
|||||||
@@ -725,6 +725,7 @@ void RemotePage::refreshWhitelist()
|
|||||||
core_->set_pref(TR_KEY_rpc_whitelist, str);
|
core_->set_pref(TR_KEY_rpc_whitelist, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
void RemotePage::onAddressEdited(Glib::ustring const& path, Glib::ustring const& address)
|
void RemotePage::onAddressEdited(Glib::ustring const& path, Glib::ustring const& address)
|
||||||
{
|
{
|
||||||
if (auto const iter = store_->get_iter(path); iter)
|
if (auto const iter = store_->get_iter(path); iter)
|
||||||
@@ -836,7 +837,7 @@ RemotePage::RemotePage(BaseObjectType* cast_item, Glib::RefPtr<Gtk::Builder> con
|
|||||||
|
|
||||||
/* ip address column */
|
/* ip address column */
|
||||||
auto* r = Gtk::make_managed<Gtk::CellRendererText>();
|
auto* r = Gtk::make_managed<Gtk::CellRendererText>();
|
||||||
r->signal_edited().connect([this](auto const& path, auto const& new_text) { onAddressEdited(path, new_text); });
|
r->signal_edited().connect(sigc::mem_fun(*this, &RemotePage::onAddressEdited));
|
||||||
r->property_editable() = true;
|
r->property_editable() = true;
|
||||||
auto* c = Gtk::make_managed<Gtk::TreeViewColumn>("", *r);
|
auto* c = Gtk::make_managed<Gtk::TreeViewColumn>("", *r);
|
||||||
c->add_attribute(r->property_text(), whitelist_cols.address);
|
c->add_attribute(r->property_text(), whitelist_cols.address);
|
||||||
|
|||||||
@@ -313,6 +313,7 @@ bool is_valid_eta(int t)
|
|||||||
return t != TR_ETA_NOT_AVAIL && t != TR_ETA_UNKNOWN;
|
return t != TR_ETA_NOT_AVAIL && t != TR_ETA_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_eta(int a, int b)
|
int compare_eta(int a, int b)
|
||||||
{
|
{
|
||||||
bool const a_valid = is_valid_eta(a);
|
bool const a_valid = is_valid_eta(a);
|
||||||
@@ -337,11 +338,13 @@ int compare_eta(int a, int b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_generic(T&& a, T&& b)
|
int compare_generic(T&& a, T&& b)
|
||||||
{
|
{
|
||||||
return a < b ? -1 : (a > b ? 1 : 0);
|
return a < b ? -1 : (a > b ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_ratio(double a, double b)
|
int compare_ratio(double a, double b)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@@ -366,11 +369,13 @@ int compare_ratio(double a, double b)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_by_name(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
int compare_by_name(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
||||||
{
|
{
|
||||||
return a->get_value(torrent_cols.name_collated).compare(b->get_value(torrent_cols.name_collated));
|
return a->get_value(torrent_cols.name_collated).compare(b->get_value(torrent_cols.name_collated));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_by_queue(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
int compare_by_queue(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
||||||
{
|
{
|
||||||
auto const* const sa = tr_torrentStatCached(static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent)));
|
auto const* const sa = tr_torrentStatCached(static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent)));
|
||||||
@@ -379,6 +384,7 @@ int compare_by_queue(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::co
|
|||||||
return sb->queuePosition - sa->queuePosition;
|
return sb->queuePosition - sa->queuePosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_by_ratio(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
int compare_by_ratio(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@@ -399,6 +405,7 @@ int compare_by_ratio(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::co
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_by_activity(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
int compare_by_activity(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@@ -427,6 +434,7 @@ int compare_by_activity(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_by_age(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
int compare_by_age(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
||||||
{
|
{
|
||||||
auto* const ta = static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent));
|
auto* const ta = static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent));
|
||||||
@@ -441,6 +449,7 @@ int compare_by_age(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::cons
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_by_size(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
int compare_by_size(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
||||||
{
|
{
|
||||||
auto const size_a = tr_torrentTotalSize(static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent)));
|
auto const size_a = tr_torrentTotalSize(static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent)));
|
||||||
@@ -455,6 +464,7 @@ int compare_by_size(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::con
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_by_progress(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
int compare_by_progress(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
||||||
{
|
{
|
||||||
auto const* const sa = tr_torrentStatCached(static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent)));
|
auto const* const sa = tr_torrentStatCached(static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent)));
|
||||||
@@ -474,6 +484,7 @@ int compare_by_progress(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_by_eta(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
int compare_by_eta(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
||||||
{
|
{
|
||||||
auto const* const sa = tr_torrentStatCached(static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent)));
|
auto const* const sa = tr_torrentStatCached(static_cast<tr_torrent*>(a->get_value(torrent_cols.torrent)));
|
||||||
@@ -488,6 +499,7 @@ int compare_by_eta(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::cons
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int compare_by_state(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
int compare_by_state(Gtk::TreeModel::const_iterator const& a, Gtk::TreeModel::const_iterator const& b)
|
||||||
{
|
{
|
||||||
auto const sa = a->get_value(torrent_cols.activity);
|
auto const sa = a->get_value(torrent_cols.activity);
|
||||||
@@ -1283,6 +1295,7 @@ void Session::clear()
|
|||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
|
||||||
int gtr_compare_double(double const a, double const b, int decimal_places)
|
int gtr_compare_double(double const a, double const b, int decimal_places)
|
||||||
{
|
{
|
||||||
auto const ia = int64_t(a * pow(10, decimal_places));
|
auto const ia = int64_t(a * pow(10, decimal_places));
|
||||||
|
|||||||
@@ -324,8 +324,8 @@ public:
|
|||||||
|
|
||||||
TR_DISABLE_COPY_MOVE(Impl)
|
TR_DISABLE_COPY_MOVE(Impl)
|
||||||
|
|
||||||
void get_size_compact(Gtk::Widget& widget, int& width, int& height) const;
|
Gtk::Requisition get_size_compact(Gtk::Widget& widget) const;
|
||||||
void get_size_full(Gtk::Widget& widget, int& width, int& height) const;
|
Gtk::Requisition get_size_full(Gtk::Widget& widget) const;
|
||||||
|
|
||||||
void render_compact(
|
void render_compact(
|
||||||
SnapshotPtr const& snapshot,
|
SnapshotPtr const& snapshot,
|
||||||
@@ -442,7 +442,7 @@ void TorrentCellRenderer::Impl::set_icon(
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentCellRenderer::Impl::get_size_compact(Gtk::Widget& widget, int& width, int& height) const
|
Gtk::Requisition TorrentCellRenderer::Impl::get_size_compact(Gtk::Widget& widget) const
|
||||||
{
|
{
|
||||||
int xpad = 0;
|
int xpad = 0;
|
||||||
int ypad = 0;
|
int ypad = 0;
|
||||||
@@ -478,11 +478,11 @@ void TorrentCellRenderer::Impl::get_size_compact(Gtk::Widget& widget, int& width
|
|||||||
*** LAYOUT
|
*** LAYOUT
|
||||||
**/
|
**/
|
||||||
|
|
||||||
width = xpad * 2 + get_width(icon_size) + GUI_PAD + CompactBarWidth + GUI_PAD + get_width(stat_size);
|
return { xpad * 2 + get_width(icon_size) + GUI_PAD + CompactBarWidth + GUI_PAD + get_width(stat_size),
|
||||||
height = ypad * 2 + std::max(get_height(name_size), property_bar_height_.get_value());
|
ypad * 2 + std::max(get_height(name_size), property_bar_height_.get_value()) };
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentCellRenderer::Impl::get_size_full(Gtk::Widget& widget, int& width, int& height) const
|
Gtk::Requisition TorrentCellRenderer::Impl::get_size_full(Gtk::Widget& widget) const
|
||||||
{
|
{
|
||||||
int xpad = 0;
|
int xpad = 0;
|
||||||
int ypad = 0;
|
int ypad = 0;
|
||||||
@@ -526,29 +526,20 @@ void TorrentCellRenderer::Impl::get_size_full(Gtk::Widget& widget, int& width, i
|
|||||||
*** LAYOUT
|
*** LAYOUT
|
||||||
**/
|
**/
|
||||||
|
|
||||||
width = xpad * 2 + get_width(icon_size) + GUI_PAD + std::max(get_width(prog_size), get_width(stat_size));
|
return { xpad * 2 + get_width(icon_size) + GUI_PAD + std::max(get_width(prog_size), get_width(stat_size)),
|
||||||
height = ypad * 2 + get_height(name_size) + get_height(prog_size) + GUI_PAD_SMALL + property_bar_height_.get_value() +
|
ypad * 2 + get_height(name_size) + get_height(prog_size) + GUI_PAD_SMALL + property_bar_height_.get_value() +
|
||||||
GUI_PAD_SMALL + get_height(stat_size);
|
GUI_PAD_SMALL + get_height(stat_size) };
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentCellRenderer::get_preferred_width_vfunc(Gtk::Widget& widget, int& minimum_width, int& natural_width) const
|
void TorrentCellRenderer::get_preferred_width_vfunc(Gtk::Widget& widget, int& minimum_width, int& natural_width) const
|
||||||
{
|
{
|
||||||
if (impl_->property_torrent().get_value() != nullptr)
|
if (impl_->property_torrent().get_value() != nullptr)
|
||||||
{
|
{
|
||||||
int w = 0;
|
auto const size = impl_->property_compact().get_value() ? impl_->get_size_compact(widget) :
|
||||||
int h = 0;
|
impl_->get_size_full(widget);
|
||||||
|
|
||||||
if (impl_->property_compact().get_value())
|
minimum_width = get_width(size);
|
||||||
{
|
natural_width = minimum_width;
|
||||||
impl_->get_size_compact(widget, w, h);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
impl_->get_size_full(widget, w, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
minimum_width = w;
|
|
||||||
natural_width = w;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,20 +547,11 @@ void TorrentCellRenderer::get_preferred_height_vfunc(Gtk::Widget& widget, int& m
|
|||||||
{
|
{
|
||||||
if (impl_->property_torrent().get_value() != nullptr)
|
if (impl_->property_torrent().get_value() != nullptr)
|
||||||
{
|
{
|
||||||
int w = 0;
|
auto const size = impl_->property_compact().get_value() ? impl_->get_size_compact(widget) :
|
||||||
int h = 0;
|
impl_->get_size_full(widget);
|
||||||
|
|
||||||
if (impl_->property_compact().get_value())
|
minimum_height = get_height(size);
|
||||||
{
|
natural_height = minimum_height;
|
||||||
impl_->get_size_compact(widget, w, h);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
impl_->get_size_full(widget, w, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
minimum_height = h;
|
|
||||||
natural_height = h;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user