changeset 412:05aed03e0111

poster: silence warnings under newer Qt this is a better impl anyway
author Paper <paper@tflc.us>
date Sat, 25 Jul 2026 14:33:03 -0400
parents 02a670a8e1c4
children 192da585a0a8
files include/gui/widgets/poster.h src/gui/widgets/poster.cc
diffstat 2 files changed, 16 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/include/gui/widgets/poster.h	Sat Jul 25 14:22:44 2026 -0400
+++ b/include/gui/widgets/poster.h	Sat Jul 25 14:33:03 2026 -0400
@@ -45,6 +45,7 @@
 	void ImageDownloadFinished(const QImage& img);
 	void RenderToLabel();
 	void DownloadPoster();
+	void OpenServiceUrl();
 
 	QSize sizeHint() const override;
 	QSize minimumSizeHint() const override;
--- a/src/gui/widgets/poster.cc	Sat Jul 25 14:22:44 2026 -0400
+++ b/src/gui/widgets/poster.cc	Sat Jul 25 14:33:03 2026 -0400
@@ -73,6 +73,11 @@
 	get_thread_->start();
 }
 
+void Poster::OpenServiceUrl(void)
+{
+	QDesktopServices::openUrl(service_url_);
+}
+
 void Poster::SetAnime(const Anime::Anime &anime)
 {
 	label_.clear();
@@ -86,13 +91,10 @@
 	}
 
 	std::optional<std::string> url = anime.GetServiceUrl(session.config.service);
-	if (url)
-		service_url_ = Strings::ToQString(url.value());
 
-	if (clickable_) {
-		label_.disconnect();
-		connect(&label_, &ClickableLabel::clicked, this, [this] { QDesktopServices::openUrl(service_url_); });
-	}
+	service_url_ = (url) ? Strings::ToQString(url.value()) : "";
+
+	SetClickable(clickable_);
 }
 
 void Poster::showEvent(QShowEvent *event)
@@ -107,13 +109,17 @@
 {
 	clickable_ = enabled;
 
+	/* This is safe if the connection does not exist, it's a no-op.
+	 *
+	 * This will remove any connections we've already made so we always
+	 * only have one ... */
+	disconnect(&label_, &ClickableLabel::clicked, this, &Poster::OpenServiceUrl);
+
 	if (clickable_ && !service_url_.isEmpty()) {
 		setCursor(Qt::PointingHandCursor);
-		label_.disconnect();
-		connect(&label_, &ClickableLabel::clicked, this, [this] { QDesktopServices::openUrl(service_url_); });
+		connect(&label_, &ClickableLabel::clicked, this, &Poster::OpenServiceUrl);
 	} else {
 		setCursor(Qt::ArrowCursor);
-		label_.disconnect();
 	}
 }