Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kwindowsystem for openSUSE:Factory checked in at 2023-01-16 17:58:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwindowsystem (Old) and /work/SRC/openSUSE:Factory/.kwindowsystem.new.32243 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwindowsystem" Mon Jan 16 17:58:38 2023 rev:114 rq:1058529 version:5.102.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kwindowsystem/kwindowsystem.changes 2022-12-12 17:40:52.149534007 +0100 +++ /work/SRC/openSUSE:Factory/.kwindowsystem.new.32243/kwindowsystem.changes 2023-01-16 18:01:02.563536593 +0100 @@ -1,0 +2,16 @@ +Thu Jan 12 08:19:12 UTC 2023 - Christophe Marin <[email protected]> + +- Update to 5.102.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/5/5.102.0 +- Changes since 5.101.0: + * Merge two KWINDOWSYSTEM_HAVE_X11 sections into one + * Fix KStartupInfo::appStarted() + * Deprecate KStartupInfo::startupId() + * Deprecate KStartupInfo::silenceStartup + * Add a formatting commit to blame ignore list + * KWindowSystemPluginWrapper doesn't need a virtual dtor + * Make KX11Extras::icon behave like KWindowSytem::icon (kde#462739) + +------------------------------------------------------------------- Old: ---- kwindowsystem-5.101.0.tar.xz kwindowsystem-5.101.0.tar.xz.sig New: ---- kwindowsystem-5.102.0.tar.xz kwindowsystem-5.102.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwindowsystem.spec ++++++ --- /var/tmp/diff_new_pack.26462u/_old 2023-01-16 18:01:03.507541889 +0100 +++ /var/tmp/diff_new_pack.26462u/_new 2023-01-16 18:01:03.531542025 +0100 @@ -17,14 +17,14 @@ %define lname libKF5WindowSystem5 -%define _tar_path 5.101 +%define _tar_path 5.102 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} %bcond_without released Name: kwindowsystem -Version: 5.101.0 +Version: 5.102.0 Release: 0 Summary: KDE Access to window manager License: LGPL-2.1-or-later ++++++ kwindowsystem-5.101.0.tar.xz -> kwindowsystem-5.102.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/.git-blame-ignore-revs new/kwindowsystem-5.102.0/.git-blame-ignore-revs --- old/kwindowsystem-5.101.0/.git-blame-ignore-revs 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/.git-blame-ignore-revs 2023-01-07 01:33:39.000000000 +0100 @@ -1,2 +1,5 @@ #clang-tidy 5e0a6105963d8fe2721aec9b6a43a565f338c978 + +# astyle +12e52f6208c18516b1dbe3c0c15ef5b1967ed40f diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/CMakeLists.txt new/kwindowsystem-5.102.0/CMakeLists.txt --- old/kwindowsystem-5.101.0/CMakeLists.txt 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/CMakeLists.txt 2023-01-07 01:33:39.000000000 +0100 @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "5.101.0") # handled by release scripts +set(KF_VERSION "5.102.0") # handled by release scripts project(KWindowSystem VERSION ${KF_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.101.0 NO_MODULE) +find_package(ECM 5.102.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/autotests/kstartupinfo_unittest.cpp new/kwindowsystem-5.102.0/autotests/kstartupinfo_unittest.cpp --- old/kwindowsystem-5.101.0/autotests/kstartupinfo_unittest.cpp 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/autotests/kstartupinfo_unittest.cpp 2023-01-07 01:33:39.000000000 +0100 @@ -328,12 +328,14 @@ void KStartupInfo_UnitTest::setNewStartupIdTest() { +#if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 102) { QWindow window; const QByteArray str = "somefancyidwhichisrandom_kstartupinfo_unittest_2"; KStartupInfo::setNewStartupId(&window, str); QCOMPARE(KStartupInfo::startupId(), str); } +#endif #if KWINDOWSYSTEM_ENABLE_DEPRECATED_SINCE(5, 62) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/poqm/be/kwindowsystem5_qt.po new/kwindowsystem-5.102.0/poqm/be/kwindowsystem5_qt.po --- old/kwindowsystem-5.101.0/poqm/be/kwindowsystem5_qt.po 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/poqm/be/kwindowsystem5_qt.po 2023-01-07 01:33:39.000000000 +0100 @@ -1,6 +1,3 @@ -# translation of kdelibs4.po to Belarusian -# translation of kdelibs4.po to -# # Eugene Zelenko <[email protected]>, 2002-2004. # Ihar Hrachyshka <[email protected]>, 2006. # Darafei Praliaskouski <[email protected]>, 2007. @@ -12,12 +9,12 @@ # kom <[email protected]>, 2008. msgid "" msgstr "" -"Project-Id-Version: kdelibs4\n" +"Project-Id-Version: 86ff119b1606fcaa910d6b44fc14b611\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2014-03-23 01:50+0000\n" -"PO-Revision-Date: 2009-09-06 15:21+0300\n" +"PO-Revision-Date: 2023-01-05 07:46\n" "Last-Translator: Darafei Praliaskouski <[email protected]>\n" -"Language-Team: Belarusian <[email protected]>\n" +"Language-Team: Belarusian\n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,11 +24,15 @@ "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || n%10>=5 && n%10<=9 || n" "%100>=11 && n%100<=14 ? 2 : 3);\n" "X-Qt-Contexts: true\n" +"X-Crowdin-Project: 86ff119b1606fcaa910d6b44fc14b611\n" +"X-Crowdin-Project-ID: 127\n" +"X-Crowdin-Language: be\n" +"X-Crowdin-File: /main/be/kwindowsystem/kwindowsystem5_qt.po\n" +"X-Crowdin-File-ID: 8371\n" #: platforms/osx/kwindowsystem.cpp:575 platforms/windows/kwindowsystem.cpp:650 #: platforms/xcb/kwindowsystem.cpp:1072 -#, fuzzy, qt-format -#| msgid "Desktop %1" +#, qt-format msgctxt "KWindowSystem|" msgid "Desktop %1" msgstr "ÐÑаÑоÑÐ½Ñ ÑÑол %1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/poqm/zh_CN/kwindowsystem5_qt.po new/kwindowsystem-5.102.0/poqm/zh_CN/kwindowsystem5_qt.po --- old/kwindowsystem-5.101.0/poqm/zh_CN/kwindowsystem5_qt.po 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/poqm/zh_CN/kwindowsystem5_qt.po 2023-01-07 01:33:39.000000000 +0100 @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: kdeorg\n" -"PO-Revision-Date: 2022-12-01 06:53\n" +"PO-Revision-Date: 2023-01-02 07:11\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/src/CMakeLists.txt new/kwindowsystem-5.102.0/src/CMakeLists.txt --- old/kwindowsystem-5.101.0/src/CMakeLists.txt 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/src/CMakeLists.txt 2023-01-07 01:33:39.000000000 +0100 @@ -37,16 +37,6 @@ ) if (KWINDOWSYSTEM_HAVE_X11) - target_sources(KF5WindowSystem PRIVATE - platforms/xcb/kselectionowner.cpp - platforms/xcb/kselectionwatcher.cpp - platforms/xcb/kxerrorhandler.cpp - platforms/xcb/kxutils.cpp - kx11extras.cpp - ) -endif() - -if (KWINDOWSYSTEM_HAVE_X11) if(NOT X11_Xfixes_LIB) message(FATAL_ERROR "The XFixes library could not be found. Please install the development package for it.") endif() @@ -75,8 +65,13 @@ target_sources(KF5WindowSystem PRIVATE platforms/xcb/kkeyserver.cpp + platforms/xcb/kselectionowner.cpp + platforms/xcb/kselectionwatcher.cpp + platforms/xcb/kxerrorhandler.cpp platforms/xcb/kxmessages.cpp + platforms/xcb/kxutils.cpp platforms/xcb/netwm.cpp + kx11extras.cpp ) # we install kkeyserver_x11.h which needs the X11 headers available @@ -123,7 +118,7 @@ GROUP_BASE_NAME KF VERSION ${KF_VERSION} DEPRECATED_BASE_VERSION 0 - DEPRECATION_VERSIONS 5.0 5.18 5.38 5.62 5.67 5.69 5.80 5.81 5.82 5.101 + DEPRECATION_VERSIONS 5.0 5.18 5.38 5.62 5.67 5.69 5.80 5.81 5.82 5.101 5.102 EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/src/kstartupinfo.cpp new/kwindowsystem-5.102.0/src/kstartupinfo.cpp --- old/kwindowsystem-5.101.0/src/kstartupinfo.cpp 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/src/kstartupinfo.cpp 2023-01-07 01:33:39.000000000 +0100 @@ -686,7 +686,15 @@ void KStartupInfo::appStarted() { - appStarted(startupId()); + QByteArray startupId = s_startup_id; + +#if KWINDOWSYSTEM_HAVE_X11 + if (startupId.isEmpty()) { + startupId = QX11Info::nextStartupId(); + } +#endif + + appStarted(startupId); setStartupId("0"); // reset the id, no longer valid (must use clearStartupId() to avoid infinite loop) } @@ -704,6 +712,7 @@ #endif } +#if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 102) void KStartupInfo::silenceStartup(bool silence) { KStartupInfoId id; @@ -715,7 +724,9 @@ data.setSilent(silence ? KStartupInfoData::Yes : KStartupInfoData::No); sendChange(id, data); } +#endif +#if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 102) QByteArray KStartupInfo::startupId() { if (s_startup_id.isEmpty()) { @@ -726,10 +737,11 @@ return s_startup_id; } +#endif void KStartupInfo::setStartupId(const QByteArray &startup_id) { - if (startup_id == startupId()) { + if (startup_id == s_startup_id) { return; } if (startup_id.isEmpty()) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/src/kstartupinfo.h new/kwindowsystem-5.102.0/src/kstartupinfo.h --- old/kwindowsystem-5.101.0/src/kstartupinfo.h 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/src/kstartupinfo.h 2023-01-07 01:33:39.000000000 +0100 @@ -67,12 +67,19 @@ */ static void appStarted(const QByteArray &startup_id); +#if KWINDOWSYSTEM_ENABLE_DEPRECATED_SINCE(5, 102) /** - * Returns the app startup notification identifier for this running - * application. + * Returns the startup ID set by setStartupId(). * @return the startup notification identifier + * + * @warning This does not give access to the startup ID the app was launched with. + * Use QX11Info::nextStartupId() to get that. + * + * @deprecated since 5.102, use QX11Info::nextStartupId(). */ + KWINDOWSYSTEM_DEPRECATED_VERSION(5, 102, "Use QX11Info::nextStartupId()") static QByteArray startupId(); +#endif /** * Sets a new value for the application startup notification window property for newly @@ -108,6 +115,7 @@ static void setNewStartupId(QWidget *window, const QByteArray &startup_id); #endif +#if KWINDOWSYSTEM_ENABLE_DEPRECATED_SINCE(5, 102) /** * If your application shows temporarily some window during its startup, * for example a dialog, and only after closing it shows the main window, @@ -115,8 +123,12 @@ * To temporarily suspend and resume the notification, use this function. * Note that this is cumulative, i.e. after suspending twice, you have to * resume twice. + * + * @deprecated since 5.102, no known users. */ + KWINDOWSYSTEM_DEPRECATED_VERSION(5, 102, "No known users") static void silenceStartup(bool silence); +#endif /** * Creates and returns new startup id. The id includes properly setup diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/src/kx11extras.cpp new/kwindowsystem-5.102.0/src/kx11extras.cpp --- old/kwindowsystem-5.101.0/src/kx11extras.cpp 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/src/kx11extras.cpp 2023-01-07 01:33:39.000000000 +0100 @@ -11,9 +11,18 @@ #include "kwindowsystem.h" #include "kwindowsystem_p.h" +#include "kxutils_p.h" +#include "netwm.h" + #include <QGuiApplication> #include <QRect> +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include <private/qtx11extras_p.h> +#else +#include <QX11Info> +#endif + // QPoint and QSize all have handy / operators which are useful for scaling, positions and sizes for high DPI support // QRect does not, so we create one for internal purposes within this class inline QRect operator/(const QRect &rectangle, qreal factor) @@ -102,15 +111,101 @@ return KWindowSystem::d_func()->icon(win, width, height, scale, flags); } +QPixmap iconFromNetWinInfo(int width, int height, bool scale, int flags, NETWinInfo *info) +{ + QPixmap result; + if (!info) { + return result; + } + if (flags & KX11Extras::NETWM) { + NETIcon ni = info->icon(width, height); + if (ni.data && ni.size.width > 0 && ni.size.height > 0) { + QImage img((uchar *)ni.data, (int)ni.size.width, (int)ni.size.height, QImage::Format_ARGB32); + if (scale && width > 0 && height > 0 && img.size() != QSize(width, height) && !img.isNull()) { + img = img.scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + if (!img.isNull()) { + result = QPixmap::fromImage(img); + } + return result; + } + } + + if (flags & KX11Extras::WMHints) { + xcb_pixmap_t p = info->icccmIconPixmap(); + xcb_pixmap_t p_mask = info->icccmIconPixmapMask(); + + if (p != XCB_PIXMAP_NONE) { + QPixmap pm = KXUtils::createPixmapFromHandle(info->xcbConnection(), p, p_mask); + if (scale && width > 0 && height > 0 && !pm.isNull() // + && (pm.width() != width || pm.height() != height)) { + result = QPixmap::fromImage(pm.toImage().scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + } else { + result = pm; + } + } + } + + // Since width can be any arbitrary size, but the icons cannot, + // take the nearest value for best results (ignoring 22 pixel + // icons as they don't exist for apps): + int iconWidth; + if (width < 24) { + iconWidth = 16; + } else if (width < 40) { + iconWidth = 32; + } else if (width < 56) { + iconWidth = 48; + } else if (width < 96) { + iconWidth = 64; + } else if (width < 192) { + iconWidth = 128; + } else { + iconWidth = 256; + } + + if (flags & KX11Extras::ClassHint) { + // Try to load the icon from the classhint if the app didn't specify + // its own: + if (result.isNull()) { + const QIcon icon = QIcon::fromTheme(QString::fromUtf8(info->windowClassClass()).toLower()); + const QPixmap pm = icon.isNull() ? QPixmap() : icon.pixmap(iconWidth, iconWidth); + if (scale && !pm.isNull()) { + result = QPixmap::fromImage(pm.toImage().scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + } else { + result = pm; + } + } + } + + if (flags & KX11Extras::XApp) { + // If the icon is still a null pixmap, load the icon for X applications + // as a last resort: + if (result.isNull()) { + const QIcon icon = QIcon::fromTheme(QStringLiteral("xorg")); + const QPixmap pm = icon.isNull() ? QPixmap() : icon.pixmap(iconWidth, iconWidth); + if (scale && !pm.isNull()) { + result = QPixmap::fromImage(pm.toImage().scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + } else { + result = pm; + } + } + } + return result; +} + QPixmap KX11Extras::icon(WId win, int width, int height, bool scale, int flags, NETWinInfo *info) { width *= qGuiApp->devicePixelRatio(); height *= qGuiApp->devicePixelRatio(); + if (info) { - return KWindowSystem::d_func()->iconFromNetWinInfo(width, height, scale, flags, info); + return iconFromNetWinInfo(width, height, scale, flags, info); } - return KWindowSystem::d_func()->icon(win, width, height, scale, flags); + NETWinInfo newInfo(QX11Info::connection(), win, QX11Info::appRootWindow(), NET::WMIcon, NET::WM2WindowClass | NET::WM2IconPixmap); + + return iconFromNetWinInfo(width, height, scale, flags, &newInfo); } void KX11Extras::minimizeWindow(WId win) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.101.0/src/pluginwrapper_p.h new/kwindowsystem-5.102.0/src/pluginwrapper_p.h --- old/kwindowsystem-5.101.0/src/pluginwrapper_p.h 2022-12-03 10:52:28.000000000 +0100 +++ new/kwindowsystem-5.102.0/src/pluginwrapper_p.h 2023-01-07 01:33:39.000000000 +0100 @@ -22,7 +22,7 @@ { public: KWindowSystemPluginWrapper(); - virtual ~KWindowSystemPluginWrapper(); + ~KWindowSystemPluginWrapper(); static const KWindowSystemPluginWrapper &self(); KWindowEffectsPrivate *effects() const;
