Hello community, here is the log from the commit of package applet-window-buttons for openSUSE:Factory checked in at 2019-09-02 13:26:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/applet-window-buttons (Old) and /work/SRC/openSUSE:Factory/.applet-window-buttons.new.7948 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "applet-window-buttons" Mon Sep 2 13:26:54 2019 rev:4 rq:727630 version:0.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/applet-window-buttons/applet-window-buttons.changes 2019-07-13 14:01:03.758885801 +0200 +++ /work/SRC/openSUSE:Factory/.applet-window-buttons.new.7948/applet-window-buttons.changes 2019-09-02 13:26:55.325294671 +0200 @@ -1,0 +2,20 @@ +Sun Sep 1 19:13:09 UTC 2019 - Cor Blom <cornelis@solcon.nl> + +- Update source URL + +------------------------------------------------------------------- +Sun Sep 1 18:39:52 UTC 2019 - Cor Blom <cornelis@solcon.nl> + +- Update to version 0.6.1: + * new visibility mode: At least one window is shown + * option to draw buttons in inactive state (for both c++ and + aurorae decorations) + * fix the current buttons decoration discovery, the user can now + change between different decorations and the buttons style is + updated runtime + * hide when the last maximized window is closed and the visibility + mode is ActiveMaximized + * fix multi-screens behavior for Latte panels + * fix typo that broke builds at some systems + +------------------------------------------------------------------- Old: ---- applet-window-buttons-0.5.0.tar.gz New: ---- applet-window-buttons-0.6.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ applet-window-buttons.spec ++++++ --- /var/tmp/diff_new_pack.oM4smd/_old 2019-09-02 13:26:55.881294566 +0200 +++ /var/tmp/diff_new_pack.oM4smd/_new 2019-09-02 13:26:55.889294565 +0200 @@ -20,13 +20,13 @@ %define qt5_version 5.9 Name: applet-window-buttons -Version: 0.5.0 +Version: 0.6.0 Release: 0 Summary: Plasma 5 applet to show window buttons in panels License: GPL-2.0-or-later Group: System/GUI/KDE URL: https://github.com/psifidotos/applet-window-buttons -Source: https://github.com/psifidotos/applet-window-buttons/archive/v%{version}/%{name}-%{version}.tar.gz +Source: https://github.com/psifidotos/applet-window-buttons/archive/%{version}/%{name}-%{version}.tar.gz BuildRequires: extra-cmake-modules BuildRequires: fdupes BuildRequires: kconfig-devel >= %{kf5_version} ++++++ applet-window-buttons-0.5.0.tar.gz -> applet-window-buttons-0.6.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/CHANGELOG.md new/applet-window-buttons-0.6.0/CHANGELOG.md --- old/applet-window-buttons-0.5.0/CHANGELOG.md 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/CHANGELOG.md 2019-08-28 14:05:02.000000000 +0200 @@ -1,5 +1,14 @@ ### CHANGELOG +#### Version 0.6.0 + +* new visibility mode: At least one window is shown +* option to draw buttons in inactive state (for both c++ and aurorae decorations) +* fix the current buttons decoration discovery, the user can now change between different decorations and the buttons style is updated runtime +* hide when the last maximized window is closed and the visibility mode is ActiveMaximized +* fix multi-screens behavior for Latte panels +* fix typo that broke builds at some systems + #### Version 0.5.0 * provide a relevant background for window buttons in configuration window to fix contrast issues diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/CMakeLists.txt new/applet-window-buttons-0.6.0/CMakeLists.txt --- old/applet-window-buttons-0.5.0/CMakeLists.txt 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/CMakeLists.txt 2019-08-28 14:05:02.000000000 +0200 @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.0 FATAL_ERROR) set(CMAKE_CXX_STANDARD 14) -set(VERSION 0.5.0) +set(VERSION 0.6.0) set(AUTHOR "Michail Vourlakos") set(EMAIL "mvourlakos@gmail.com") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/README.md new/applet-window-buttons-0.6.0/README.md --- old/applet-window-buttons-0.5.0/README.md 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/README.md 2019-08-28 14:05:02.000000000 +0200 @@ -18,7 +18,7 @@ </p> <p align="center"> -<img src="https://i.imgur.com/6DXMGvW.png" width="580"><br/> +<img src="https://i.imgur.com/yleReE7.png" width="580"><br/> <i>Settings window</i> </p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/libappletdecoration/appletdecorationplugin.cpp new/applet-window-buttons-0.6.0/libappletdecoration/appletdecorationplugin.cpp --- old/applet-window-buttons-0.5.0/libappletdecoration/appletdecorationplugin.cpp 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/libappletdecoration/appletdecorationplugin.cpp 2019-08-28 14:05:02.000000000 +0200 @@ -42,7 +42,7 @@ void AppletDecorationPlugin::registerTypes(const char *uri) { - Q_ASSERT(uri == QLatin1String("org.kde.appletsdecoration")); + Q_ASSERT(uri == QLatin1String("org.kde.appletdecoration")); qmlRegisterUncreatableTypeDecoration::Applet::Types(uri, 0, 1, "Types", "Applet decoration types"); qmlRegisterTypeDecoration::Applet::AuroraeTheme(uri, 0, 1, "AuroraeTheme"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/libappletdecoration/decorationsmodel.cpp new/applet-window-buttons-0.6.0/libappletdecoration/decorationsmodel.cpp --- old/applet-window-buttons-0.5.0/libappletdecoration/decorationsmodel.cpp 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/libappletdecoration/decorationsmodel.cpp 2019-08-28 14:05:02.000000000 +0200 @@ -278,7 +278,13 @@ const QString plugin = config.readEntry("library", s_defaultPlugin); const QString theme = config.readEntry("theme", s_defaultTheme); - bool exists{decorationExists(plugin, theme)}; + bool exists{false}; + bool isAur{isAurorae(plugin,theme)}; + + if ((!isAur && pluginExists(plugin)) + || (isAur && decorationExists(plugin, theme))) { + exists = true; + } setCurrentPlugin(exists ? plugin : s_defaultPlugin); setCurrentTheme(exists ? theme : s_defaultTheme); @@ -315,6 +321,20 @@ }); if (it == m_plugins.cend()) { + return false; + } + + return true; +} + +bool DecorationsModel::pluginExists(const QString &plugin) +{ + auto it = std::find_if(m_plugins.cbegin(), m_plugins.cend(), + [plugin](const Data & d) { + return d.pluginName == plugin; + }); + + if (it == m_plugins.cend()) { return false; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/libappletdecoration/decorationsmodel.h new/applet-window-buttons-0.6.0/libappletdecoration/decorationsmodel.h --- old/applet-window-buttons-0.5.0/libappletdecoration/decorationsmodel.h 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/libappletdecoration/decorationsmodel.h 2019-08-28 14:05:02.000000000 +0200 @@ -72,6 +72,7 @@ private: bool decorationExists(const QString &plugin, const QString &theme); + bool pluginExists(const QString &plugin); private: struct Data diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/libappletdecoration/qml/AuroraeButton.qml new/applet-window-buttons-0.6.0/libappletdecoration/qml/AuroraeButton.qml --- old/applet-window-buttons-0.5.0/libappletdecoration/qml/AuroraeButton.qml 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/libappletdecoration/qml/AuroraeButton.qml 2019-08-28 14:05:02.000000000 +0200 @@ -62,7 +62,7 @@ } property string svgNormalElementId:{ - return "active-center"; + return isActive ? "active-center" : "inactive-center"; } property string svgHoveredElementId:{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/libappletdecoration/types.h new/applet-window-buttons-0.6.0/libappletdecoration/types.h --- old/applet-window-buttons-0.5.0/libappletdecoration/types.h 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/libappletdecoration/types.h 2019-08-28 14:05:02.000000000 +0200 @@ -77,7 +77,8 @@ { AlwaysVisible = 0, ActiveWindow, - ActiveMaximizedWindow + ActiveMaximizedWindow, + ShownWindowExists }; Q_ENUM(Visibility) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/package/contents/config/main.xml new/applet-window-buttons-0.6.0/package/contents/config/main.xml --- old/applet-window-buttons-0.5.0/package/contents/config/main.xml 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/package/contents/config/main.xml 2019-08-28 14:05:02.000000000 +0200 @@ -42,6 +42,10 @@ <default>false</default> <label>slide out/in when is shown or becomes hidden</label> </entry> + <entry name="inactiveStateEnabled" type="Bool"> + <default>false</default> + <label>draw buttons in inactive state when is needed</label> + </entry> <entry name="useDecorationMetrics" type="Bool"> <default>true</default> <label>use the discovered decoration metrics in case there are any in order to look consistent with window titlebars</label> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/package/contents/ui/LatteWindowsTracker.qml new/applet-window-buttons-0.6.0/package/contents/ui/LatteWindowsTracker.qml --- old/applet-window-buttons-0.5.0/package/contents/ui/LatteWindowsTracker.qml 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/package/contents/ui/LatteWindowsTracker.qml 2019-08-28 14:05:02.000000000 +0200 @@ -21,11 +21,12 @@ Item { id: latteWindowsTracker - readonly property bool existsWindowActive: selectedTracker.lastActiveWindow.isValid && !activeTaskItem.isMinimized + readonly property bool existsWindowActive: selectedTracker.lastActiveWindow.isValid && !lastActiveTaskItem.isMinimized && lastActiveTaskItem.isActive + readonly property bool existsWindowShown: selectedTracker.lastActiveWindow.isValid && !lastActiveTaskItem.isMinimized readonly property QtObject selectedTracker: plasmoid.configuration.filterByScreen ? latteBridge.windowsTracker.currentScreen : latteBridge.windowsTracker.allScreens - readonly property Item activeTaskItem: Item { + readonly property Item lastActiveTaskItem: Item { readonly property string title: selectedTracker.lastActiveWindow.display readonly property bool isMinimized: selectedTracker.lastActiveWindow.isMinimized readonly property bool isMaximized: selectedTracker.lastActiveWindow.isMaximized diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/package/contents/ui/PlasmaTasksModel.qml new/applet-window-buttons-0.6.0/package/contents/ui/PlasmaTasksModel.qml --- old/applet-window-buttons-0.5.0/package/contents/ui/PlasmaTasksModel.qml 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/package/contents/ui/PlasmaTasksModel.qml 2019-08-28 14:05:02.000000000 +0200 @@ -27,8 +27,10 @@ Item { id: plasmaTasksItem - readonly property bool existsWindowActive: root.activeTaskItem && tasksRepeater.count > 0 && activeTaskItem.isActive - property Item activeTaskItem: null + readonly property bool existsWindowActive: lastActiveTaskItem && tasksRepeater.count > 0 && lastActiveTaskItem.isActive + readonly property bool existsWindowShown: lastActiveTaskItem && tasksRepeater.count > 0 && !lastActiveTaskItem.isMinimized + + property Item lastActiveTaskItem: null // To get current activity name TaskManager.ActivityInfo { @@ -68,34 +70,74 @@ onIsActiveChanged: { if (isActive) { - plasmaTasksItem.activeTaskItem = task; + plasmaTasksItem.lastActiveTaskItem = task; + } + } + + Component.onDestruction: { + if (plasmaTasksItem.lastActiveTaskItem === task) { + plasmaTasksItem.lastActiveTaskItem = null; } } + + function modelIndex(){ + return tasksModel.makeModelIndex(index); + } + + function toggleMaximized() { + tasksModel.requestToggleMaximized(modelIndex()); + } + + function toggleMinimized() { + tasksModel.requestToggleMinimized(modelIndex()); + } + + function toggleClose() { + tasksModel.requestClose(modelIndex()); + } + + function togglePinToAllDesktops() { + if (root.plasma515) { + tasksModel.requestVirtualDesktops(modelIndex(), 0); + } else { + tasksModel.requestVirtualDesktop(modelIndex(), 0); + } + } + + function toggleKeepAbove(){ + tasksModel.requestToggleKeepAbove(modelIndex()); + } } } } function toggleMaximized() { - tasksModel.requestToggleMaximized(tasksModel.activeTask); + if (lastActiveTaskItem) { + lastActiveTaskItem.toggleMaximized(); + } } function toggleMinimized() { - tasksModel.requestToggleMinimized(tasksModel.activeTask); + if (lastActiveTaskItem) { + lastActiveTaskItem.toggleMinimized(); + } } function toggleClose() { - tasksModel.requestClose(tasksModel.activeTask); + if (lastActiveTaskItem) { + lastActiveTaskItem.toggleClose(); + } } function togglePinToAllDesktops() { - if (root.plasma515) { - tasksModel.requestVirtualDesktops(tasksModel.activeTask, 0); - } else { - tasksModel.requestVirtualDesktop(tasksModel.activeTask, 0); + if (lastActiveTaskItem) { + lastActiveTaskItem.togglePinToAllDesktops(); } } function toggleKeepAbove(){ - tasksModel.requestToggleKeepAbove(tasksModel.activeTask); + if (lastActiveTaskItem) { + lastActiveTaskItem.toggleKeepAbove(); + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/package/contents/ui/config/ConfigGeneral.qml new/applet-window-buttons-0.6.0/package/contents/ui/config/ConfigGeneral.qml --- old/applet-window-buttons-0.5.0/package/contents/ui/config/ConfigGeneral.qml 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/package/contents/ui/config/ConfigGeneral.qml 2019-08-28 14:05:02.000000000 +0200 @@ -36,6 +36,7 @@ property alias cfg_buttons: root.currentButtons property alias cfg_visibility: root.visibility property alias cfg_filterByScreen: byScreenChk.checked + property alias cfg_inactiveStateEnabled: inactiveChk.checked property alias cfg_slideAnimation: slideChk.checked property alias cfg_disabledMaximizedBorders: root.disabledBorders property alias cfg_useDecorationMetrics: decorationMetricsChk.checked @@ -169,12 +170,12 @@ GridLayout{ columns: 2 - rows: 3 + rows: 4 flow: GridLayout.TopToBottom Label{ Layout.minimumWidth: Math.max(centerFactor * root.width, minimumWidth) - Layout.rowSpan: 3 + Layout.rowSpan: 4 Layout.alignment: Qt.AlignTop | Qt.AlignRight text: i18n("Show:") horizontalAlignment: Text.AlignRight @@ -215,6 +216,17 @@ } } } + RadioButton{ + id: shownWindowBtn + text: i18n("At least one window is shown") + checked: root.visibility === AppletDecoration.Types.ShownWindowExists + exclusiveGroup: visibilityGroup + onCheckedChanged: { + if (checked) { + root.visibility = AppletDecoration.Types.ShownWindowExists; + } + } + } } GridLayout{ @@ -231,13 +243,25 @@ } GridLayout{ + columns: 2 + rows: 2 + flow: GridLayout.TopToBottom + Label{ Layout.minimumWidth: Math.max(centerFactor * root.width, minimumWidth) - text: i18n("Animations:") + Layout.alignment: Qt.AlignTop | Qt.AlignRight + Layout.rowSpan: 2 + + text: i18n("Appearance:") horizontalAlignment: Text.AlignRight } CheckBox{ + id: inactiveChk + text: i18n("Draw buttons inactive state when needed") + } + + CheckBox{ id: slideChk text: i18n("Slide animation in order to show or hide") } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/package/contents/ui/main.qml new/applet-window-buttons-0.6.0/package/contents/ui/main.qml --- old/applet-window-buttons-0.5.0/package/contents/ui/main.qml 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/package/contents/ui/main.qml 2019-08-28 14:05:02.000000000 +0200 @@ -53,7 +53,10 @@ if (visibility === AppletDecoration.Types.ActiveWindow && !existsWindowActive) { return true; } - if (visibility === AppletDecoration.Types.ActiveMaximizedWindow && !isActiveWindowMaximized) { + if (visibility === AppletDecoration.Types.ActiveMaximizedWindow && (!isLastActiveWindowMaximized || !existsWindowActive)) { + return true; + } + if (visibility === AppletDecoration.Types.ShownWindowExists && !existsWindowShown) { return true; } @@ -98,6 +101,8 @@ // START visual properties + property bool inactiveStateEnabled: root.latteInEditMode || plasmoid.userConfiguring ? false : plasmoid.configuration.inactiveStateEnabled + property int thickPadding: { if (auroraeThemeEngine.isEnabled && plasmoid.configuration.useDecorationMetrics) { return plasmoid.formFactor === PlasmaCore.Types.Horizontal ? @@ -129,15 +134,18 @@ //! make sure that on startup it will always be shown readonly property bool existsWindowActive: (windowInfoLoader.item && windowInfoLoader.item.existsWindowActive) || containmentIdentifierTimer.running - readonly property bool isActiveWindowPinned: activeTaskItem && existsWindowActive && activeTaskItem.isOnAllDesktops - readonly property bool isActiveWindowMaximized: activeTaskItem && existsWindowActive && activeTaskItem.isMaximized - readonly property bool isActiveWindowKeepAbove: activeTaskItem && existsWindowActive && activeTaskItem.isKeepAbove + readonly property bool existsWindowShown: (windowInfoLoader.item && windowInfoLoader.item.existsWindowShown) + || containmentIdentifierTimer.running + + readonly property bool isLastActiveWindowPinned: lastActiveTaskItem && lastActiveTaskItem.isOnAllDesktops + readonly property bool isLastActiveWindowMaximized: lastActiveTaskItem && lastActiveTaskItem.isMaximized + readonly property bool isLastActiveWindowKeepAbove: lastActiveTaskItem && lastActiveTaskItem.isKeepAbove property bool hasDesktopsButton: false property bool hasMaximizedButton: false property bool hasKeepAboveButton: false - readonly property Item activeTaskItem: windowInfoLoader.item.activeTaskItem + readonly property Item lastActiveTaskItem: windowInfoLoader.item.lastActiveTaskItem // END Window properties // START decoration properties @@ -166,6 +174,7 @@ //! even when Latte informs the applets that need to use the default plasma theme. readonly property bool enforceLattePalette: latteBridge && latteBridge.palette readonly property bool latteInEditMode: latteBridge && latteBridge.inEditMode + //END Latte based properties //START Behaviors @@ -368,17 +377,17 @@ scheme: root.currentScheme type: buttonType isActive: { - //! FIXME: Disabled because it shows an error from c++ theme when its value is changed + //! FIXME-TEST PERIOD: Disabled because it shows an error from c++ theme when its value is changed //! and breaks in some cases the buttons coloring through the schemeFile - //if (root.visibility === AppletDecoration.Types.AlwaysVisible && !root.existsWindowActive){ - // return false; - //} + if (root.inactiveStateEnabled && !root.existsWindowActive){ + return false; + } return true; } - isOnAllDesktops: root.isActiveWindowPinned - isMaximized: root.isActiveWindowMaximized - isKeepAbove: root.isActiveWindowKeepAbove + isOnAllDesktops: root.isLastActiveWindowPinned + isMaximized: root.isLastActiveWindowMaximized + isKeepAbove: root.isLastActiveWindowKeepAbove readonly property int firstPadding: { if (index === 0) { @@ -464,10 +473,18 @@ topPadding: plasmoid.formFactor === PlasmaCore.Types.Horizontal ? thickPadding : firstPadding bottomPadding: plasmoid.formFactor === PlasmaCore.Types.Horizontal ? thickPadding : lastPadding - isActive: true - isOnAllDesktops: root.isActiveWindowPinned - isMaximized: root.isActiveWindowMaximized - isKeepAbove: root.isActiveWindowKeepAbove + isActive: { + //! FIXME-TEST PERIOD: Disabled because it shows an error from c++ theme when its value is changed + //! and breaks in some cases the buttons coloring through the schemeFile + if (root.inactiveStateEnabled && !root.existsWindowActive){ + return false; + } + + return true; + } + isOnAllDesktops: root.isLastActiveWindowPinned + isMaximized: root.isLastActiveWindowMaximized + isKeepAbove: root.isLastActiveWindowKeepAbove buttonType: model.buttonType auroraeTheme: auroraeThemeEngine diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/applet-window-buttons-0.5.0/package/metadata.desktop new/applet-window-buttons-0.6.0/package/metadata.desktop --- old/applet-window-buttons-0.5.0/package/metadata.desktop 2019-07-12 21:51:03.000000000 +0200 +++ new/applet-window-buttons-0.6.0/package/metadata.desktop 2019-08-28 14:05:02.000000000 +0200 @@ -15,7 +15,7 @@ X-KDE-PluginInfo-Email=mvourlakos@gmail.com X-KDE-PluginInfo-License=GPLv2 X-KDE-PluginInfo-Name=org.kde.windowbuttons -X-KDE-PluginInfo-Version=0.5.0 +X-KDE-PluginInfo-Version=0.6.0 X-KDE-PluginInfo-Website=https://github.com/psifidotos/applet-window-buttons X-KDE-ServiceTypes=Plasma/Applet