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); }
