@@ -94,8 +94,9 @@ void ImageWidget::setObjectFit(ObjectFit fit) {
9494 update ();
9595}
9696
97- void ImageWidget::setUrl (const ImageURL & url) {
97+ void ImageWidget::setUrl (ImageURL url) {
9898 if (url == m_source) { return ; }
99+ m_isFallback = false ;
99100 m_source = url;
100101 setUrlImpl (url);
101102}
@@ -115,7 +116,7 @@ const ImageURL &ImageWidget::url() const { return m_source; }
115116
116117void ImageWidget::refreshTheme (const ThemeFile &theme) { setUrlImpl (m_source); }
117118
118- void ImageWidget::setUrlImpl (const ImageURL & url) {
119+ void ImageWidget::setUrlImpl (ImageURL url) {
119120 auto &theme = ThemeService::instance ().theme ();
120121 auto type = url.type ();
121122
@@ -174,7 +175,7 @@ void ImageWidget::setUrlImpl(const ImageURL &url) {
174175 m_loader.reset (new EmojiImageLoader (url.name ()));
175176 }
176177
177- if (!m_loader) { return handleLoadingError (" No loader" ); }
178+ if (!m_loader) { handleLoadingError (" No loader" ); }
178179
179180 if (m_loader) {
180181 connect (m_loader.get (), &AbstractImageLoader::dataUpdated, this ,
@@ -192,8 +193,15 @@ QSize ImageWidget::sizeHint() const {
192193}
193194
194195void ImageWidget::handleLoadingError (const QString &reason) {
195- if (auto fallback = m_source.fallback ()) { return setUrlImpl (*fallback); }
196- return setUrlImpl (ImageURL::builtin (" question-mark-circle" ));
196+ if (!m_isFallback) {
197+ if (auto fallback = m_source.fallback ()) {
198+ m_isFallback = true ;
199+ setUrlImpl (*fallback);
200+ return ;
201+ }
202+ }
203+
204+ setUrlImpl (ImageURL::builtin (" question-mark-circle" ));
197205}
198206
199207void ImageWidget::resizeEvent (QResizeEvent *event) {
0 commit comments