Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package leechcraft for openSUSE:Factory 
checked in at 2025-10-07 18:28:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/leechcraft (Old)
 and      /work/SRC/openSUSE:Factory/.leechcraft.new.11973 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "leechcraft"

Tue Oct  7 18:28:33 2025 rev:73 rq:1309479 version:0.6.70+git.17769.g4e68d7fcba

Changes:
--------
--- /work/SRC/openSUSE:Factory/leechcraft/leechcraft.changes    2025-08-04 
15:26:40.698670267 +0200
+++ /work/SRC/openSUSE:Factory/.leechcraft.new.11973/leechcraft.changes 
2025-10-07 18:30:22.058527366 +0200
@@ -1,0 +2,6 @@
+Tue Oct  7 06:02:00 UTC 2025 - Dmitriy Perlow <[email protected]>
+
+- Updated to 0.6.70-0.6.70-17769-g4e68d7fcba snapshot.
+- Added leechcraft-0.6.70+git-boost_system.diff.patch.
+
+-------------------------------------------------------------------

Old:
----
  leechcraft-0.6.70-17739-g0d7a960ef4.tar.xz

New:
----
  leechcraft-0.6.70+git-boost_system.diff.patch
  leechcraft-0.6.70-17769-g4e68d7fcba.tar.xz

----------(New B)----------
  New:- Updated to 0.6.70-0.6.70-17769-g4e68d7fcba snapshot.
- Added leechcraft-0.6.70+git-boost_system.diff.patch.
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ leechcraft-doc.spec ++++++
--- /var/tmp/diff_new_pack.B7ghei/_old  2025-10-07 18:30:22.818559507 +0200
+++ /var/tmp/diff_new_pack.B7ghei/_new  2025-10-07 18:30:22.822559676 +0200
@@ -16,10 +16,10 @@
 #
 
 
-%define LEECHCRAFT_VERSION 0.6.70-17739-g0d7a960ef4
+%define LEECHCRAFT_VERSION 0.6.70-17769-g4e68d7fcba
 
 Name:           leechcraft-doc
-Version:        0.6.70+git.17739.g0d7a960ef4
+Version:        0.6.70+git.17769.g4e68d7fcba
 Release:        0
 Summary:        Modular Internet Client Documentation
 License:        BSL-1.0

++++++ leechcraft.spec ++++++
--- /var/tmp/diff_new_pack.B7ghei/_old  2025-10-07 18:30:22.870561707 +0200
+++ /var/tmp/diff_new_pack.B7ghei/_new  2025-10-07 18:30:22.874561875 +0200
@@ -28,7 +28,7 @@
 %define qml_dir %{_datadir}/leechcraft/qml6
 
 %define so_ver -qt6-0_6_75
-%define LEECHCRAFT_VERSION 0.6.70-17739-g0d7a960ef4
+%define LEECHCRAFT_VERSION 0.6.70-17769-g4e68d7fcba
 
 %define db_postfix %{so_ver}
 %define gui_postfix %{so_ver}
@@ -49,7 +49,7 @@
 %define xsd_postfix %{so_ver}
 
 Name:           leechcraft
-Version:        0.6.70+git.17739.g0d7a960ef4
+Version:        0.6.70+git.17769.g4e68d7fcba
 Release:        0
 Summary:        Modular Internet Client
 License:        BSL-1.0
@@ -58,6 +58,8 @@
 Source0:        
https://dist.leechcraft.org/LeechCraft/0.6.75/leechcraft-%{LEECHCRAFT_VERSION}.tar.xz
 Source4:        %{name}-rpmlintrc
 Source8:        leechcraft-session.1
+# PATCH-FIX-UPSTREAM not to require deprecated boost_system.
+Patch0:         leechcraft-0.6.70+git-boost_system.diff.patch
 
 BuildRequires:  cmake >= 3.8
 BuildRequires:  fdupes
@@ -75,7 +77,6 @@
 BuildRequires:  libboost_filesystem-devel
 BuildRequires:  libboost_locale-devel
 BuildRequires:  libboost_program_options-devel
-BuildRequires:  libboost_system-devel
 BuildRequires:  libboost_thread-devel
 BuildRequires:  libjpeg-devel
 %if 0%{?suse_version} > 1600
@@ -2070,7 +2071,7 @@
 XmlSettingsDialog LeechCraft subsystem.
 
 %prep
-%setup -q -n leechcraft-%{LEECHCRAFT_VERSION}
+%autosetup -p1 -n leechcraft-%{LEECHCRAFT_VERSION}
 
 #removing non-free icons
 rm -r src/plugins/azoth/share/azoth/iconsets/clients/default

++++++ _service ++++++
--- /var/tmp/diff_new_pack.B7ghei/_old  2025-10-07 18:30:22.946564920 +0200
+++ /var/tmp/diff_new_pack.B7ghei/_new  2025-10-07 18:30:22.958565428 +0200
@@ -1,8 +1,8 @@
 <services>
   <service name="verify_file" mode="buildtime">
-    <param name="file">leechcraft-0.6.70-17739-g0d7a960ef4.tar.xz</param>
+    <param name="file">leechcraft-0.6.70-17769-g4e68d7fcba.tar.xz</param>
     <param name="verifier">sha1</param>
-    <param name="checksum">65a3aa20cf58a309c7aea4ef1d7ac6c777de77ed</param>
+    <param name="checksum">1411f4db75d23f4d803f8980e5dc634299cf50aa</param>
   </service>
 </services>
 

++++++ leechcraft-0.6.70+git-boost_system.diff.patch ++++++
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7d94bdab4a..14c252b538 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -79,7 +81,7 @@ else ()
        set (LC_SHARE_DEST "leechcraft.app/Contents/Resources/share")
 endif ()
 
-find_package (Boost REQUIRED COMPONENTS date_time filesystem program_options 
system thread)
+find_package (Boost REQUIRED COMPONENTS date_time filesystem program_options 
thread)
 
 include (CommonLCSetup.cmake)
 

++++++ leechcraft-0.6.70-17739-g0d7a960ef4.tar.xz -> 
leechcraft-0.6.70-17769-g4e68d7fcba.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/aggregator/components/importexport/importopmldialog.cpp
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/aggregator/components/importexport/importopmldialog.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/aggregator/components/importexport/importopmldialog.cpp
 2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/aggregator/components/importexport/importopmldialog.cpp
 2025-08-17 18:32:19.000000000 +0200
@@ -51,11 +51,11 @@
 
                Fields_ =
                {
-                       { "title"_ql, Ui_.Title_ },
-                       { "dateCreated"_ql, Ui_.Created_ },
-                       { "dateModified"_ql, Ui_.Edited_ },
-                       { "ownerName"_ql, Ui_.Owner_ },
-                       { "ownerEmail"_ql, Ui_.OwnerEmail_ },
+                       { u"title"_qsv, Ui_.Title_ },
+                       { u"dateCreated"_qsv, Ui_.Created_ },
+                       { u"dateModified"_qsv, Ui_.Edited_ },
+                       { u"ownerName"_qsv, Ui_.Owner_ },
+                       { u"ownerEmail"_qsv, Ui_.OwnerEmail_ },
                };
 
                connect (Ui_.Browse_,
@@ -137,11 +137,7 @@
                                {
                                        for (const auto& [name, value] : 
result.Info_.asKeyValueRange ())
                                        {
-#ifndef Q_PROCESSOR_ARM
                                                if (const auto field = 
Fields_.value (name))
-#else
-                                               if (const auto field = 
Fields_.value (QLatin1String { name.toLatin1 () }))
-#endif
                                                        field->setText (value);
                                                else
                                                {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/aggregator/components/importexport/importopmldialog.h
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/aggregator/components/importexport/importopmldialog.h
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/aggregator/components/importexport/importopmldialog.h
   2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/aggregator/components/importexport/importopmldialog.h
   2025-08-17 18:32:19.000000000 +0200
@@ -35,7 +35,7 @@
                using ItemsModel_t = Util::ItemsModel<Item, 
Util::ItemsCheckable<&Item::IsChecked_>, Util::ItemsEditable>;
                ItemsModel_t Model_;
 
-               QHash<QLatin1String, QLabel*> Fields_;
+               QHash<QStringView, QLabel*> Fields_;
        public:
                explicit ImportOPMLDialog (const QString& = {}, QWidget* = 
nullptr);
                ~ImportOPMLDialog () override;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/lmp/engine/sourceobject.cpp 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/lmp/engine/sourceobject.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/lmp/engine/sourceobject.cpp 
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/lmp/engine/sourceobject.cpp 
    2025-08-17 18:32:19.000000000 +0200
@@ -356,20 +356,17 @@
                auto path = source.ToUrl ().toEncoded ();
                g_object_set (G_OBJECT (Dec_.get ()), "uri", path.constData (), 
nullptr);
 
+               const Util::MutexLocker locker { NextSrcMutex_ };
                NextSource_.Clear ();
        }
 
        void SourceObject::PrepareNextSource (const AudioSource& source)
        {
-               NextSrcMutex_.lock ();
-
                qDebug () << Q_FUNC_INFO << source.ToUrl ();
-               NextSource_ = source;
 
+               const Util::MutexLocker locker { NextSrcMutex_ };
+               NextSource_ = source;
                NextSrcWC_.wakeAll ();
-               NextSrcMutex_.unlock ();
-
-               Metadata_.clear ();
        }
 
        void SourceObject::Play ()
@@ -378,10 +375,15 @@
                {
                        qDebug () << Q_FUNC_INFO
                                        << "current source is invalid, setting 
next one";
-                       if (NextSource_.IsEmpty ())
+                       auto next = [&]
+                       {
+                               const Util::MutexLocker locker { NextSrcMutex_ 
};
+                               return NextSource_;
+                       } ();
+                       if (next.IsEmpty ())
                                return;
 
-                       SetCurrentSource (NextSource_);
+                       SetCurrentSource (next);
                }
 
                if (CurrentSource_.ToUrl ().scheme ().startsWith ("http"))
@@ -413,6 +415,7 @@
 
        void SourceObject::ClearQueue ()
        {
+               const Util::MutexLocker locker { NextSrcMutex_ };
                NextSource_.Clear ();
        }
 
@@ -421,19 +424,20 @@
                qDebug () << Q_FUNC_INFO;
                auto timeoutIndicator = std::make_shared<std::atomic_bool> 
(false);
 
-               NextSrcMutex_.lock ();
-               if (NextSource_.IsEmpty ())
+               const auto& next = [&, this]
                {
-                       emit aboutToFinish (timeoutIndicator);
-                       NextSrcWC_.wait (&NextSrcMutex_, 500);
-               }
-               qDebug () << "wait finished; next source:" << NextSource_.ToUrl 
()
-                               << "; current source:" << CurrentSource_.ToUrl 
();
-
-               std::shared_ptr<void> mutexGuard (nullptr,
-                               [this] (void*) { NextSrcMutex_.unlock (); });
+                       const Util::MutexLocker locker { NextSrcMutex_ };
+                       if (NextSource_.IsEmpty ())
+                       {
+                               emit aboutToFinish (timeoutIndicator);
+                               NextSrcWC_.wait (&NextSrcMutex_.GetMutex (), 
500);
+                               qDebug () << "wait finished; next source:" << 
NextSource_.ToUrl ()
+                                               << "; current source:" << 
CurrentSource_.ToUrl ();
+                       }
+                       return NextSource_;
+               } ();
 
-               if (NextSource_.IsEmpty ())
+               if (next.IsEmpty ())
                {
                        *timeoutIndicator = true;
                        qDebug () << Q_FUNC_INFO
@@ -441,7 +445,7 @@
                        return;
                }
 
-               SetCurrentSource (NextSource_);
+               SetCurrentSource (next);
        }
 
        void SourceObject::SetupSource ()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/lmp/engine/sourceobject.h 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/lmp/engine/sourceobject.h
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/lmp/engine/sourceobject.h   
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/lmp/engine/sourceobject.h   
    2025-08-17 18:32:19.000000000 +0200
@@ -17,6 +17,7 @@
 #include <QMutex>
 #include <QWaitCondition>
 #include <util/sll/util.h>
+#include <util/threads/mutex.h>
 #include "interfaces/lmp/isourceobject.h"
 #include "interfaces/lmp/ipath.h"
 #include "util/lmp/gstutil.h"
@@ -101,12 +102,12 @@
                Path *Path_ = nullptr;
 
                AudioSource CurrentSource_;
-               AudioSource NextSource_;
 
-               AudioSource ActualSource_;
-
-               QMutex NextSrcMutex_;
+               Util::Mutex NextSrcMutex_;
                QWaitCondition NextSrcWC_;
+               AudioSource NextSource_ GUARDED_BY (NextSrcMutex_);
+
+               AudioSource ActualSource_;
 
                bool IsSeeking_ = false;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/CMakeLists.txt 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/CMakeLists.txt
--- old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/CMakeLists.txt  
2025-07-12 17:52:56.000000000 +0200
+++ new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/CMakeLists.txt  
2025-08-17 18:32:19.000000000 +0200
@@ -34,7 +34,6 @@
                xbelparser.cpp
                xbelgenerator.cpp
                pluginmanager.cpp
-               historyfiltermodel.cpp
                proxyobject.cpp
                passwordremember.cpp
                pageformsdata.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/browserwidget.cpp 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/browserwidget.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/browserwidget.cpp   
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/browserwidget.cpp   
    2025-08-17 18:32:19.000000000 +0200
@@ -1447,11 +1447,7 @@
        {
                ChangeEncoding_->clear ();
 
-#if QT_VERSION_MAJOR >= 6
                auto codecs = QStringConverter::availableCodecs ();
-#else
-               QStringList codecs;
-#endif
                codecs.sort ();
 
                const auto& curEncoding = WebView_->GetDefaultTextEncoding ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/cookieseditmodel.cpp
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/cookieseditmodel.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/cookieseditmodel.cpp
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/cookieseditmodel.cpp
    2025-08-17 18:32:19.000000000 +0200
@@ -119,8 +119,8 @@
        void CookiesEditModel::AddCookie (const QNetworkCookie& cookie)
        {
                int i = 0;
-               if (Cookies_.size ())
-                       i = (Cookies_.end () - 1).key () + 1;
+               if (!Cookies_.isEmpty ())
+                       i = Cookies_.lastKey () + 1;
                Cookies_ [i] = cookie;
 
                QString domain = cookie.domain ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/core.cpp 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/core.cpp
--- old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/core.cpp        
2025-07-12 17:52:56.000000000 +0200
+++ new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/core.cpp        
2025-08-17 18:32:19.000000000 +0200
@@ -59,11 +59,6 @@
                qRegisterMetaType<BrowserWidgetSettings> 
("LC::Poshuku::BrowserWidgetSettings");
                qRegisterMetaType<ElementData> ("LC::Poshuku::ElementData");
                qRegisterMetaType<ElementsData_t> 
("LC::Poshuku::ElementsData_t");
-#if QT_VERSION_MAJOR == 5
-               qRegisterMetaTypeStreamOperators<BrowserWidgetSettings> 
("LC::Poshuku::BrowserWidgetSettings");
-               qRegisterMetaTypeStreamOperators<ElementData> 
("LC::Poshuku::ElementData");
-               qRegisterMetaTypeStreamOperators<ElementsData_t> 
("LC::Poshuku::ElementsData_t");
-#endif
 
                Util::Introspectable::Instance ().Register<ElementData> 
(&ToVariantMap);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/favoriteschecker.cpp
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/favoriteschecker.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/favoriteschecker.cpp
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/favoriteschecker.cpp
    2025-08-17 18:32:19.000000000 +0200
@@ -80,9 +80,9 @@
                        else if (list.size () < num)
                        {
                                QString merged;
+                               QFontMetricsF fm { QApplication::font () };
                                for (const auto& url : list)
-                                       merged.append (QString ("<li>%1</li>")
-                                                       .arg 
(QApplication::fontMetrics ().elidedText (url, Qt::ElideMiddle, 400)));
+                                       merged.append (QString 
("<li>%1</li>").arg (fm.elidedText (url, Qt::ElideMiddle, 400)));
                                result = FavoritesChecker::tr ("%1 favorites 
are %2:<br /><ul>%3</ul>")
                                        .arg (list.size ())
                                        .arg (property)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historyfiltermodel.cpp
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historyfiltermodel.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historyfiltermodel.cpp
  2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historyfiltermodel.cpp
  1970-01-01 01:00:00.000000000 +0100
@@ -1,39 +0,0 @@
-/**********************************************************************
- * LeechCraft - modular cross-platform feature rich internet client.
- * Copyright (C) 2006-2014  Georg Rudoy
- *
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE or copy at 
https://www.boost.org/LICENSE_1_0.txt)
- **********************************************************************/
-
-#include "historyfiltermodel.h"
-#include "historymodel.h"
-
-namespace LC
-{
-namespace Poshuku
-{
-       HistoryFilterModel::HistoryFilterModel (QObject *parent)
-       : QSortFilterProxyModel (parent)
-       {
-       }
-       
-       bool HistoryFilterModel::filterAcceptsRow (int row, const QModelIndex& 
parent) const
-       {
-               if (sourceModel ()->rowCount (sourceModel ()->index (row, 0, 
parent)))
-                       return true;
-               
-               const auto& filter = filterRegularExpression ().pattern ();
-               if (filter.isEmpty ())
-                       return true;
-               
-               auto source = sourceModel ();
-               auto contains = [&filter, source, row, parent] 
(HistoryModel::Columns col)
-               {
-                       return source->index (row, col, parent).data ()
-                                       .toString ().contains (filter, 
Qt::CaseInsensitive);
-               };
-               return contains (HistoryModel::ColumnTitle) || contains 
(HistoryModel::ColumnURL);
-       }
-}
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historyfiltermodel.h
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historyfiltermodel.h
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historyfiltermodel.h
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historyfiltermodel.h
    1970-01-01 01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
-/**********************************************************************
- * LeechCraft - modular cross-platform feature rich internet client.
- * Copyright (C) 2006-2014  Georg Rudoy
- *
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE or copy at 
https://www.boost.org/LICENSE_1_0.txt)
- **********************************************************************/
-
-#ifndef PLUGINS_POSHUKU_HISTORYFILTERMODEL_H
-#define PLUGINS_POSHUKU_HISTORYFILTERMODEL_H
-#include <QSortFilterProxyModel>
-
-namespace LC
-{
-namespace Poshuku
-{
-       class HistoryFilterModel : public QSortFilterProxyModel
-       {
-               Q_OBJECT
-       public:
-               HistoryFilterModel (QObject* = 0);
-       protected:
-               virtual bool filterAcceptsRow (int, const QModelIndex&) const;
-       };
-}
-}
-
-#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historymodel.cpp 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historymodel.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historymodel.cpp    
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historymodel.cpp    
    2025-08-17 18:32:19.000000000 +0200
@@ -47,11 +47,11 @@
                        QDate orig = current.date ();
                        if (date.daysTo (current) == 0)
                                return 0;
-                       else if (date.daysTo (current) == 1)
+                       if (date.daysTo (current) == 1)
                                return 1;
-                       else if (date.daysTo (current) == 2)
+                       if (date.daysTo (current) == 2)
                                return 2;
-                       else if (date.daysTo (current) <= 7)
+                       if (date.daysTo (current) <= 7)
                                return 3;
 
                        int i = 0;
@@ -178,7 +178,10 @@
                        new QStandardItem { QLocale {}.toString 
(histItem.DateTime_, QLocale::ShortFormat) }
                };
                for (const auto item : items)
+               {
                        item->setEditable (false);
+                       item->setData (histItem.URL_, URL);
+               }
                item (section)->appendRow (items);
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historymodel.h 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historymodel.h
--- old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historymodel.h  
2025-07-12 17:52:56.000000000 +0200
+++ new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historymodel.h  
2025-08-17 18:32:19.000000000 +0200
@@ -36,6 +36,11 @@
                        , ColumnDate
                };
 
+               enum Roles
+               {
+                       URL = Qt::UserRole + 1
+               };
+
                HistoryModel (QObject* = nullptr);
 
                void HandleStorageReady ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historywidget.cpp 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historywidget.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historywidget.cpp   
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historywidget.cpp   
    2025-08-17 18:32:19.000000000 +0200
@@ -8,36 +8,43 @@
 
 #include "historywidget.h"
 #include <QDateTime>
+#include <util/models/fixedstringfilterproxymodel.h>
 #include "core.h"
 #include "historymodel.h"
-#include "historyfiltermodel.h"
 
-namespace LC
-{
-namespace Poshuku
+namespace LC::Poshuku
 {
        HistoryWidget::HistoryWidget (QWidget *parent)
        : QWidget { parent }
-       , HistoryFilterModel_ { new HistoryFilterModel { this } }
+       , HistoryFilterModel_ { new Util::FixedStringFilterProxyModel { this } }
        {
                Ui_.setupUi (this);
 
+               connect (Ui_.HistoryView_,
+                               &QTreeView::activated,
+                               this,
+                               [] (const QModelIndex& index)
+                               {
+                                       const auto& url = index.data 
(HistoryModel::Roles::URL).toString ();
+                                       if (!url.isEmpty ())
+                                               Core::Instance ().NewURL (url);
+                               });
+
                HistoryFilterModel_->setSourceModel (Core::Instance 
().GetHistoryModel ());
-               HistoryFilterModel_->setDynamicSortFilter (true);
                Ui_.HistoryView_->setModel (HistoryFilterModel_);
 
                connect (Ui_.HistoryFilterLine_,
-                               SIGNAL (textChanged (QString)),
-                               this,
-                               SLOT (updateHistoryFilter ()));
-               connect (Ui_.HistoryFilterType_,
-                               SIGNAL (currentIndexChanged (int)),
-                               this,
-                               SLOT (updateHistoryFilter ()));
+                               &QLineEdit::textChanged,
+                               HistoryFilterModel_,
+                               
&Util::FixedStringFilterProxyModel::SetFilterString);
                connect (Ui_.HistoryFilterCaseSensitivity_,
-                               SIGNAL (stateChanged (int)),
+                               &QCheckBox::checkStateChanged,
                                this,
-                               SLOT (updateHistoryFilter ()));
+                               [this] (Qt::CheckState state)
+                               {
+                                       const auto cs = state == Qt::Checked ? 
Qt::CaseSensitive : Qt::CaseInsensitive;
+                                       
HistoryFilterModel_->setFilterCaseSensitivity (cs);
+                               });
 
                const auto itemsHeader = Ui_.HistoryView_->header ();
                const auto& fm = fontMetrics ();
@@ -49,38 +56,4 @@
                itemsHeader->resizeSection (2,
                                fm.horizontalAdvance ("Average URL could be 
very very long, but we don't account this."));
        }
-
-       void HistoryWidget::on_HistoryView__activated (const QModelIndex& index)
-       {
-               if (!index.parent ().isValid ())
-                       return;
-
-               const auto& url = index.sibling (index.row (), 
HistoryModel::ColumnURL).data ().toString ();
-               Core::Instance ().NewURL (url);
-       }
-
-       void HistoryWidget::updateHistoryFilter ()
-       {
-               const int section = Ui_.HistoryFilterType_->currentIndex ();
-               const auto& text = Ui_.HistoryFilterLine_->text ();
-
-               switch (section)
-               {
-               case 1:
-                       HistoryFilterModel_->setFilterWildcard (text);
-                       break;
-               case 2:
-                       HistoryFilterModel_->setFilterRegularExpression (text);
-                       break;
-               default:
-                       HistoryFilterModel_->setFilterFixedString (text);
-                       break;
-               }
-
-               const auto cs = Ui_.HistoryFilterCaseSensitivity_->checkState 
() == Qt::Checked ?
-                               Qt::CaseSensitive :
-                               Qt::CaseInsensitive;
-               HistoryFilterModel_->setFilterCaseSensitivity (cs);
-       }
-}
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historywidget.h 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historywidget.h
--- old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historywidget.h 
2025-07-12 17:52:56.000000000 +0200
+++ new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historywidget.h 
2025-08-17 18:32:19.000000000 +0200
@@ -8,27 +8,24 @@
 
 #pragma once
 
-#include <QWidget>
-#include <util/tags/tagscompleter.h>
 #include "ui_historywidget.h"
 
-namespace LC
+namespace LC::Util
 {
-namespace Poshuku
+       class FixedStringFilterProxyModel;
+}
+
+namespace LC::Poshuku
 {
        class HistoryFilterModel;
 
        class HistoryWidget : public QWidget
        {
-               Q_OBJECT
+               Q_DECLARE_TR_FUNCTIONS (Poshuku::HistoryWidget)
 
                Ui::HistoryWidget Ui_;
-               HistoryFilterModel * const HistoryFilterModel_;
+               Util::FixedStringFilterProxyModel * const HistoryFilterModel_;
        public:
-               HistoryWidget (QWidget* = 0);
-       private slots:
-               void on_HistoryView__activated (const QModelIndex&);
-               void updateHistoryFilter ();
+               explicit HistoryWidget (QWidget* = nullptr);
        };
 }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historywidget.ui 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historywidget.ui
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/historywidget.ui    
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/historywidget.ui    
    2025-08-17 18:32:19.000000000 +0200
@@ -14,7 +14,7 @@
    <string/>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
-   <property name="margin">
+   <property name="margin" stdset="0">
     <number>0</number>
    </property>
    <item>
@@ -25,25 +25,6 @@
      <item>
       <layout class="QHBoxLayout" name="horizontalLayout">
        <item>
-        <widget class="QComboBox" name="HistoryFilterType_">
-         <item>
-          <property name="text">
-           <string>Fixed string</string>
-          </property>
-         </item>
-         <item>
-          <property name="text">
-           <string>Wildcard</string>
-          </property>
-         </item>
-         <item>
-          <property name="text">
-           <string>Regexp</string>
-          </property>
-         </item>
-        </widget>
-       </item>
-       <item>
         <widget class="QCheckBox" name="HistoryFilterCaseSensitivity_">
          <property name="text">
           <string>Case sensitive</string>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/plugins/cleanweb/userfiltersmodel.cpp
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/plugins/cleanweb/userfiltersmodel.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/plugins/cleanweb/userfiltersmodel.cpp
   2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/plugins/cleanweb/userfiltersmodel.cpp
   2025-08-17 18:32:19.000000000 +0200
@@ -51,10 +51,6 @@
        {
                qRegisterMetaType<FilterItem> 
("LC::Poshuku::CleanWeb::FilterItem");
                qRegisterMetaType<QList<FilterItem>> 
("QList<LC::Poshuku::CleanWeb::FilterItem>");
-#if QT_VERSION_MAJOR == 5
-               qRegisterMetaTypeStreamOperators<FilterItem> 
("LC::Poshuku::CleanWeb::FilterItem");
-               qRegisterMetaTypeStreamOperators<QList<FilterItem>> 
("QList<LC::Poshuku::CleanWeb::FilterItem>");
-#endif
 
                ReadSettings ();
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/plugins/speeddial/speeddial.cpp
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/plugins/speeddial/speeddial.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/plugins/speeddial/speeddial.cpp
 2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/plugins/speeddial/speeddial.cpp
 2025-08-17 18:32:19.000000000 +0200
@@ -23,9 +23,6 @@
        {
                qRegisterMetaType<AddrList_t> 
("LC::Poshuku::SpeedDial::AddrList_t");
                qRegisterMetaType<AddrList_t> 
("LeechCraft::Poshuku::SpeedDial::AddrList_t");
-#if QT_VERSION_MAJOR == 5
-               qRegisterMetaTypeStreamOperators<AddrList_t> ();
-#endif
 
                XSD_ = std::make_shared<Util::XmlSettingsDialog> ();
                XSD_->RegisterObject (&XmlSettingsManager::Instance (), 
"poshukuspeeddialsettings.xml");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/plugins/webengineview/customwebview.cpp
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/plugins/webengineview/customwebview.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/plugins/webengineview/customwebview.cpp
 2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/plugins/webengineview/customwebview.cpp
 2025-08-17 18:32:19.000000000 +0200
@@ -11,11 +11,7 @@
 #include <QFile>
 #include <QWebEngineSettings>
 #include <QWebEngineHistory>
-#if QT_VERSION_MAJOR >= 6
 #include <QWebEngineContextMenuRequest>
-#else
-#include <QWebEngineContextMenuData>
-#endif
 #include <QWebChannel>
 #include <QPrinter>
 #include <QPrintDialog>
@@ -302,11 +298,7 @@
 
        QMenu* CustomWebView::CreateStandardContextMenu ()
        {
-#if QT_VERSION_MAJOR >= 6
                return createStandardContextMenu ();
-#else
-               return page ()->createStandardContextMenu ();
-#endif
        }
 
        namespace
@@ -487,11 +479,7 @@
 
        void CustomWebView::contextMenuEvent (QContextMenuEvent *event)
        {
-#if QT_VERSION_MAJOR >= 6
                const auto& data = *lastContextMenuRequest ();
-#else
-               const auto& data = page ()->contextMenuData ();
-#endif
                emit contextMenuRequested (event->globalPos (),
                                {
                                        data.isContentEditable (),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/plugins/webengineview/downloaditemhandler.cpp
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/plugins/webengineview/downloaditemhandler.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/plugins/poshuku/plugins/webengineview/downloaditemhandler.cpp
   2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/plugins/poshuku/plugins/webengineview/downloaditemhandler.cpp
   2025-08-17 18:32:19.000000000 +0200
@@ -8,11 +8,7 @@
 
 #include "downloaditemhandler.h"
 #include <QWebEngineProfile>
-#if QT_VERSION_MAJOR >= 6
 #include <QWebEngineDownloadRequest>
-#else
-#include <QWebEngineDownloadItem>
-#endif
 #include <util/xpc/util.h>
 #include <interfaces/core/icoreproxy.h>
 #include <interfaces/core/ientitymanager.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/util/models/fixedstringfilterproxymodel.cpp
 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/util/models/fixedstringfilterproxymodel.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/util/models/fixedstringfilterproxymodel.cpp
     2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/util/models/fixedstringfilterproxymodel.cpp
     2025-08-17 18:32:19.000000000 +0200
@@ -25,6 +25,9 @@
 
        void FixedStringFilterProxyModel::SetCaseSensitivity 
(Qt::CaseSensitivity cs)
        {
+               if (cs == Filter_.caseSensitivity ())
+                       return;
+
                Filter_.setCaseSensitivity (cs);
                invalidateFilter ();
        }
@@ -36,6 +39,9 @@
 
        void FixedStringFilterProxyModel::SetFilterRoles (const QList<int>& 
roles)
        {
+               if (roles == Roles_)
+                       return;
+
                Roles_ = roles;
                invalidateFilter ();
        }
@@ -47,6 +53,9 @@
 
        void FixedStringFilterProxyModel::SetFilterColumns (const QList<int>& 
columns)
        {
+               if (columns == Columns_)
+                       return;
+
                Columns_ = columns;
                invalidateFilter ();
        }
@@ -58,6 +67,9 @@
 
        void FixedStringFilterProxyModel::SetFilterString (const QString& 
filter)
        {
+               if (Filter_.pattern () == filter)
+                       return;
+
                Filter_.setPattern (filter);
                invalidateFilter ();
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/util/threads/attributes.h 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/util/threads/attributes.h
--- old/leechcraft-0.6.70-17739-g0d7a960ef4/src/util/threads/attributes.h       
1970-01-01 01:00:00.000000000 +0100
+++ new/leechcraft-0.6.70-17769-g4e68d7fcba/src/util/threads/attributes.h       
2025-08-17 18:32:19.000000000 +0200
@@ -0,0 +1,21 @@
+/**********************************************************************
+ * LeechCraft - modular cross-platform feature rich internet client.
+ * Copyright (C) 2006-2014  Georg Rudoy
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE or copy at 
https://www.boost.org/LICENSE_1_0.txt)
+ **********************************************************************/
+
+#pragma once
+
+#ifdef __clang__
+#define LC_THREAD_ANNOTATION(x) __attribute__((x))
+#else
+#define LC_THREAD_ANNOTATION(x)
+#endif
+
+#define GUARDED_BY(m) LC_THREAD_ANNOTATION(guarded_by(m))
+#define CAPABILITY(s) LC_THREAD_ANNOTATION(capability(s))
+#define SCOPED_LOCKABLE LC_THREAD_ANNOTATION(scoped_lockable)
+#define ACQUIRE(...) LC_THREAD_ANNOTATION(acquire_capability(__VA_ARGS__))
+#define RELEASE(...) LC_THREAD_ANNOTATION(release_capability(__VA_ARGS__))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/util/threads/mutex.h 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/util/threads/mutex.h
--- old/leechcraft-0.6.70-17739-g0d7a960ef4/src/util/threads/mutex.h    
1970-01-01 01:00:00.000000000 +0100
+++ new/leechcraft-0.6.70-17769-g4e68d7fcba/src/util/threads/mutex.h    
2025-08-17 18:32:19.000000000 +0200
@@ -0,0 +1,53 @@
+/**********************************************************************
+ * LeechCraft - modular cross-platform feature rich internet client.
+ * Copyright (C) 2006-2014  Georg Rudoy
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE or copy at 
https://www.boost.org/LICENSE_1_0.txt)
+ **********************************************************************/
+
+#pragma once
+
+#include <QMutex>
+#include "attributes.h"
+
+namespace LC::Util
+{
+       class CAPABILITY("mutex") Mutex
+       {
+               QMutex M_;
+       public:
+               explicit Mutex () = default;
+
+               void lock () ACQUIRE ()
+               {
+                       M_.lock ();
+               }
+
+               void unlock () RELEASE ()
+               {
+                       M_.unlock ();
+               }
+
+               QMutex& GetMutex ()
+               {
+                       return M_;
+               }
+       };
+
+       class SCOPED_LOCKABLE MutexLocker final
+       {
+               Mutex& M_;
+       public:
+               explicit MutexLocker (Mutex& m) ACQUIRE (m)
+               : M_ { m }
+               {
+                       M_.lock ();
+               }
+
+               ~MutexLocker () RELEASE ()
+               {
+                       M_.unlock ();
+               }
+       };
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/util/threads/tests/corotasktest.cpp 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/util/threads/tests/corotasktest.cpp
--- 
old/leechcraft-0.6.70-17739-g0d7a960ef4/src/util/threads/tests/corotasktest.cpp 
    2025-07-12 17:52:56.000000000 +0200
+++ 
new/leechcraft-0.6.70-17769-g4e68d7fcba/src/util/threads/tests/corotasktest.cpp 
    2025-08-17 18:32:19.000000000 +0200
@@ -252,7 +252,8 @@
                QCOMPARE (result, expected);
                QCOMPARE_LT (creationElapsed, 1);
 
-               QCOMPARE_GE (executionElapsed, max);
+               constexpr auto tolerance = 0.05;
+               QCOMPARE_GE (executionElapsed, max * (1 - tolerance));
                const auto linearizedExecTime = max * (max + 1) / 2;
                QCOMPARE_LT (executionElapsed, linearizedExecTime / 2);
        }

Reply via email to