From 2758922fbefd88de1b2cd71799349e70d658bd1d Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Sep 27 2019 11:46:15 +0000 Subject: Add support for double-click to maximize windows --- diff --git a/qgnomeplatform-double-click-to-maximize.patch b/qgnomeplatform-double-click-to-maximize.patch new file mode 100644 index 0000000..52aef0b --- /dev/null +++ b/qgnomeplatform-double-click-to-maximize.patch @@ -0,0 +1,68 @@ +diff --git a/decoration/qgnomeplatformdecoration.cpp b/decoration/qgnomeplatformdecoration.cpp +index 107d2c3..3da478f 100644 +--- a/decoration/qgnomeplatformdecoration.cpp ++++ b/decoration/qgnomeplatformdecoration.cpp +@@ -102,6 +102,8 @@ QGnomePlatformDecoration::QGnomePlatformDecoration() + initializeButtonPixmaps(); + initializeColors(); + ++ m_lastButtonClick = QDateTime::currentDateTime(); ++ + QTextOption option(Qt::AlignHCenter | Qt::AlignVCenter); + option.setWrapMode(QTextOption::NoWrap); + m_windowTitle.setTextOption(option); +@@ -411,6 +413,8 @@ void QGnomePlatformDecoration::processMouseTop(QWaylandInputDevice *inputDevice, + { + Q_UNUSED(mods); + ++ QDateTime currentDateTime = QDateTime::currentDateTime(); ++ + if (!closeButtonRect().contains(local) && !maximizeButtonRect().contains(local) && !minimizeButtonRect().contains(local)) { + updateButtonHoverState(Button::None); + } +@@ -452,10 +456,20 @@ void QGnomePlatformDecoration::processMouseTop(QWaylandInputDevice *inputDevice, + if (clickButton(b, Minimize)) + window()->setWindowState(Qt::WindowMinimized); + } 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 600e082..cb5904b 100644 +--- a/decoration/qgnomeplatformdecoration.h ++++ b/decoration/qgnomeplatformdecoration.h +@@ -22,6 +22,8 @@ + + #include + ++#include ++ + class GnomeHintsSettings; + class QPixmap; + +@@ -77,6 +79,9 @@ private: + bool m_maximizeButtonHovered; + bool m_minimizeButtonHovered; + ++ // For double-click support ++ QDateTime m_lastButtonClick; ++ QPointF m_lastButtonClickPosition; + + QStaticText m_windowTitle; + Button m_clicking = None; diff --git a/qgnomeplatform.spec b/qgnomeplatform.spec index 6fa089b..a397bee 100644 --- a/qgnomeplatform.spec +++ b/qgnomeplatform.spec @@ -1,7 +1,7 @@ Name: qgnomeplatform Version: 0.5 -Release: 14%{?dist} +Release: 15%{?dist} Summary: Qt Platform Theme aimed to accommodate Gnome settings License: LGPLv2+ @@ -11,6 +11,7 @@ Source0: https://github.com/MartinBriza/QGnomePlatform/archive/%{version} # Upstream patches Patch0: qgnomeplatform-gnome-decorations.patch Patch1: qgnomeplatform-fix-cursor-size.patch +Patch2: qgnomeplatform-double-click-to-maximize.patch BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(udev) @@ -59,6 +60,9 @@ make install INSTALL_ROOT=%{buildroot} -C %{_target_platform} %{_qt5_libdir}/qt5/plugins/wayland-decoration-client/libqgnomeplatformdecoration.so %changelog +* Fri Sep 27 2019 Jan Grulich - 0.5-15 +- Add support for double-click to maximize windows + * Wed Sep 25 2019 Jan Grulich - 0.5-14 - rebuild (qt5)