diff --git a/.gitignore b/.gitignore index 1533ca9..a8ce311 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ /QGnomePlatform-0.6.90.tar.gz /QGnomePlatform-0.7.0.tar.gz /QGnomePlatform-0.7.1.tar.gz +/QGnomePlatform-0.8.0.tar.gz diff --git a/qgnomeplatform-double-click-improvements.patch b/qgnomeplatform-double-click-improvements.patch deleted file mode 100644 index f712ede..0000000 --- a/qgnomeplatform-double-click-improvements.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 0a9e409563e8fa8caee04b60922de5283c0e08a1 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Mon, 22 Feb 2021 11:48:02 +0100 -Subject: Improve double-click to maximize reliability - - -diff --git a/decoration/qgnomeplatformdecoration.cpp b/decoration/qgnomeplatformdecoration.cpp -index c8b381c..a979ab7 100644 ---- a/decoration/qgnomeplatformdecoration.cpp -+++ b/decoration/qgnomeplatformdecoration.cpp -@@ -360,6 +360,24 @@ bool QGnomePlatformDecoration::clickButton(Qt::MouseButtons b, Button btn) - return false; - } - -+bool QGnomePlatformDecoration::doubleClickButton(Qt::MouseButtons b, const QPointF &local, const QDateTime ¤tTime) -+{ -+ if (b & Qt::LeftButton) { -+ const qint64 clickInterval = m_lastButtonClick.msecsTo(currentTime); -+ m_lastButtonClick = currentTime; -+ const int doubleClickDistance = m_hints->hint(QPlatformTheme::MouseDoubleClickDistance).toInt(); -+ const QPointF posDiff = m_lastButtonClickPosition - local; -+ if ((clickInterval <= m_hints->hint(QPlatformTheme::MouseDoubleClickInterval).toInt()) && -+ ((posDiff.x() <= doubleClickDistance && posDiff.x() >= -doubleClickDistance) && ((posDiff.y() <= doubleClickDistance && posDiff.y() >= -doubleClickDistance)))) { -+ return true; -+ } -+ -+ m_lastButtonClickPosition = local; -+ } -+ -+ return false; -+} -+ - bool QGnomePlatformDecoration::handleMouse(QWaylandInputDevice *inputDevice, const QPointF &local, const QPointF &global, Qt::MouseButtons b, Qt::KeyboardModifiers mods) - { - Q_UNUSED(global); -@@ -459,31 +477,26 @@ void QGnomePlatformDecoration::processMouseTop(QWaylandInputDevice *inputDevice, - processMouseRight(inputDevice, local, b, mods); - } else if (closeButtonRect().contains(local)) { - updateButtonHoverState(Button::Close); -- if (clickButton(b, Close)) -+ if (clickButton(b, Close)) { - QWindowSystemInterface::handleCloseEvent(window()); -+ } - } else if (m_hints->titlebarButtons().testFlag(GnomeHintsSettings::MaximizeButton) && maximizeButtonRect().contains(local)) { - updateButtonHoverState(Button::Maximize); -- if (clickButton(b, Maximize)) -+ if (clickButton(b, Maximize)) { - window()->setWindowStates(window()->windowStates() ^ Qt::WindowMaximized); -+ } - } else if (m_hints->titlebarButtons().testFlag(GnomeHintsSettings::MinimizeButton) && minimizeButtonRect().contains(local)) { - updateButtonHoverState(Button::Minimize); -- if (clickButton(b, Minimize)) -+ if (clickButton(b, Minimize)) { - window()->setWindowState(Qt::WindowMinimized); -+ } -+ } else if (doubleClickButton(b, local, currentDateTime)) { -+ window()->setWindowStates(window()->windowStates() ^ Qt::WindowMaximized); - } else { -- if (clickButton(b, Maximize)) { -- const int doubleClickDistance = m_hints->hint(QPlatformTheme::MouseDoubleClickDistance).toInt(); -- QPointF posDiff = m_lastButtonClickPosition - local; -- if ((m_lastButtonClick.msecsTo(currentDateTime) <= m_hints->hint(QPlatformTheme::MouseDoubleClickInterval).toInt()) && -- ((posDiff.x() <= doubleClickDistance && posDiff.x() >= -doubleClickDistance) && ((posDiff.y() <= doubleClickDistance && posDiff.y() >= -doubleClickDistance)))) -- window()->setWindowStates(window()->windowStates() ^ Qt::WindowMaximized); -- m_lastButtonClick = currentDateTime; -- m_lastButtonClickPosition = local; -- } else { - #if QT_CONFIG(cursor) -- waylandWindow()->restoreMouseCursor(inputDevice); -+ waylandWindow()->restoreMouseCursor(inputDevice); - #endif -- startMove(inputDevice,b); -- } -+ startMove(inputDevice,b); - } - } - -diff --git a/decoration/qgnomeplatformdecoration.h b/decoration/qgnomeplatformdecoration.h -index c656b55..c8c793e 100644 ---- a/decoration/qgnomeplatformdecoration.h -+++ b/decoration/qgnomeplatformdecoration.h -@@ -60,6 +60,7 @@ private: - void processMouseLeft(QWaylandInputDevice *inputDevice, const QPointF &local, Qt::MouseButtons b,Qt::KeyboardModifiers mods); - void processMouseRight(QWaylandInputDevice *inputDevice, const QPointF &local, Qt::MouseButtons b,Qt::KeyboardModifiers mods); - bool clickButton(Qt::MouseButtons b, Button btn); -+ bool doubleClickButton(Qt::MouseButtons b, const QPointF &local, const QDateTime ¤tTime); - bool updateButtonHoverState(Button hoveredButton); - - QRectF closeButtonRect() const; -@@ -84,6 +85,7 @@ private: - // For double-click support - QDateTime m_lastButtonClick; - QPointF m_lastButtonClickPosition; -+ Button m_doubleClicking = None; - - QStaticText m_windowTitle; - Button m_clicking = None; diff --git a/qgnomeplatform-use-more-updated-window-states-value.patch b/qgnomeplatform-use-more-updated-window-states-value.patch new file mode 100644 index 0000000..d0870bb --- /dev/null +++ b/qgnomeplatform-use-more-updated-window-states-value.patch @@ -0,0 +1,49 @@ +diff --git a/src/decoration/qgnomeplatformdecoration.cpp b/src/decoration/qgnomeplatformdecoration.cpp +index 1129b4f..be4ac21 100644 +--- a/src/decoration/qgnomeplatformdecoration.cpp ++++ b/src/decoration/qgnomeplatformdecoration.cpp +@@ -178,7 +178,7 @@ QMargins QGnomePlatformDecoration::margins(MarginsType marginsType) const + #else + QMargins QGnomePlatformDecoration::margins() const + { +- if ((window()->windowStates() & Qt::WindowMaximized)) { ++ if ((waylandWindow()->windowStates() & Qt::WindowMaximized)) { + return QMargins(0, TITLEBAR_HEIGHT, 0, 0); + } + +@@ -371,7 +371,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + // * * + // ******************************** + QPainterPath borderRect; +- if (!(window()->windowStates() & Qt::WindowMaximized)) { ++ if (!(waylandWindow()->windowStates() & Qt::WindowMaximized)) { + borderRect.addRoundedRect(0, 0, surfaceRect.width(), margins().top() + 8, 10, 10); + p.fillPath(borderRect.simplified(), borderColor); + } +@@ -389,7 +389,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + // * * + // ******************************** + QPainterPath roundedRect; +- if ((window()->windowStates() & Qt::WindowMaximized)) { ++ if ((waylandWindow()->windowStates() & Qt::WindowMaximized)) { + roundedRect.addRect(0, 0, surfaceRect.width(), margins().top() + 8); + } else { + roundedRect.addRoundedRect(WINDOW_BORDER_WIDTH, WINDOW_BORDER_WIDTH, surfaceRect.width() - margins().left() - margins().right(), margins().top() + 8, 8, 8); +@@ -412,7 +412,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + // *| |* + // *------------------------------* + // ******************************** +- if (!(window()->windowStates() & Qt::WindowMaximized)) { ++ if (!(waylandWindow()->windowStates() & Qt::WindowMaximized)) { + QPainterPath borderPath; + // Left + borderPath.addRect(0, margins().top(), margins().left(), surfaceRect.height() - margins().top() - WINDOW_BORDER_WIDTH); +@@ -522,7 +522,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + Adwaita::Renderer::renderFlatRoundedButtonFrame(styleOptions); + } + decorationButtonStyle.setRect(QRect(static_cast(rect.x()) + (BUTTON_WIDTH / 4), static_cast(rect.y()) + (BUTTON_WIDTH / 4), BUTTON_WIDTH / 2, BUTTON_WIDTH / 2)); +- const Adwaita::ButtonType buttonType = (window()->windowStates() & Qt::WindowMaximized) ? Adwaita::ButtonType::ButtonRestore : Adwaita::ButtonType::ButtonMaximize; ++ const Adwaita::ButtonType buttonType = (waylandWindow()->windowStates() & Qt::WindowMaximized) ? Adwaita::ButtonType::ButtonRestore : Adwaita::ButtonType::ButtonMaximize; + Adwaita::Renderer::renderDecorationButton(decorationButtonStyle, buttonType); + } + diff --git a/qgnomeplatform.spec b/qgnomeplatform.spec index 27388b8..59f8e4f 100644 --- a/qgnomeplatform.spec +++ b/qgnomeplatform.spec @@ -1,7 +1,7 @@ Name: qgnomeplatform -Version: 0.7.1 -Release: 2%{?dist} +Version: 0.8.0 +Release: 1%{?dist} Summary: Qt Platform Theme aimed to accommodate Gnome settings License: LGPLv2+ @@ -9,7 +9,7 @@ URL: https://github.com/MartinBriza/QGnomePlatform Source0: https://github.com/MartinBriza/QGnomePlatform/archive/%{version}/QGnomePlatform-%{version}.tar.gz # Upstream patches -Patch0: qgnomeplatform-double-click-improvements.patch +Patch0: qgnomeplatform-use-more-updated-window-states-value.patch BuildRequires: make BuildRequires: pkgconfig(gio-2.0) @@ -22,7 +22,7 @@ BuildRequires: qt5-qtbase-devel >= 5.12.0 BuildRequires: qt5-qtbase-static >= 5.12.0 BuildRequires: qt5-qtwayland-devel >= 5.12.0 -BuildRequires: libadwaita-qt5-devel >= 1.1.90 +BuildRequires: libadwaita-qt5-devel >= 1.3.1 Requires: adwaita-qt5%{?_isa} BuildRequires: qt5-qtbase-private-devel @@ -37,26 +37,26 @@ modifying them - making them fit into the environment as well as possible. %prep %autosetup -p1 -n QGnomePlatform-%{version} - %build -mkdir %{_target_platform} -pushd %{_target_platform} -%{qmake_qt5} .. -popd - -%make_build -C %{_target_platform} +%cmake +%cmake_build %install -make install INSTALL_ROOT=%{buildroot} -C %{_target_platform} +%cmake_install + %files %doc README.md %license LICENSE -%{_qt5_libdir}/qt5/plugins/platformthemes/libqgnomeplatform.so +%{_qt5_libdir}/libqgnomeplatform.so +%{_qt5_libdir}/qt5/plugins/platformthemes/libqgnomeplatformtheme.so %{_qt5_libdir}/qt5/plugins/wayland-decoration-client/libqgnomeplatformdecoration.so %changelog +* Wed Jun 02 2021 Jan Grulich - 0.8.0-1 +- 0.8.0 + * Mon Apr 12 2021 Jan Grulich - 0.7.1-2 - Improve double-click on titlebar to maximize/unmaximize reliability diff --git a/sources b/sources index 1ca7eaa..a1f8b77 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (QGnomePlatform-0.7.1.tar.gz) = 7e3ba774ee1387604f4c66bd75f9fb4c5305f4553886132e8e3991a3e42564844a7eafb1361e0e8c64743746e315c07b22c11c133be95c1c53afb62c062bfc6e +SHA512 (QGnomePlatform-0.8.0.tar.gz) = e862b84024ad77976b52cbacf1f920acaa60d2bfcb8f261f1215f2e5fb2dbe6d99e10aa425be70fa2dd324ac4d8c5b85958d68fae4fb7f9728caf097aa1bd102