Accepting request 622055 from KDE:Qt5
- Remove patch as it causes a regression with resizing windows: * 0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch OBS-URL: https://build.opensuse.org/request/show/622055 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtwayland?expand=0&rev=22
This commit is contained in:
parent
a062392f21
commit
e84724d89a
@ -1,145 +0,0 @@
|
||||
From da43d51dcbafc5fa1db245efd6737aa54c245afb Mon Sep 17 00:00:00 2001
|
||||
From: Giulio Camuffo <giulio.camuffo@kdab.com>
|
||||
Date: Sat, 1 Jul 2017 09:53:07 +0200
|
||||
Subject: [PATCH] Handle maximize/minimize/fullscreen in xdg_shell_v6
|
||||
|
||||
Change-Id: I385eb3279d91f1c38d2f5d46bc63b324f0456ca4
|
||||
---
|
||||
src/client/qwaylandwindow.cpp | 6 +++-
|
||||
src/client/qwaylandxdgshellv6.cpp | 61 ++++++++++++++++++++++++++++++++++++---
|
||||
src/client/qwaylandxdgshellv6_p.h | 8 ++++-
|
||||
3 files changed, 69 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandwindow.cpp
|
||||
===================================================================
|
||||
--- qtwayland-everywhere-src-5.11.0-beta2.orig/src/client/qwaylandwindow.cpp
|
||||
+++ qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandwindow.cpp
|
||||
@@ -980,7 +980,11 @@ bool QWaylandWindow::setWindowStateInter
|
||||
// As of february 2013 QWindow::setWindowState sets the new state value after
|
||||
// QPlatformWindow::setWindowState returns, so we cannot rely on QWindow::windowState
|
||||
// here. We use then this mState variable.
|
||||
- mState = state;
|
||||
+ // NOTE: The compositor does not tell us when the window is not minimized anymore,
|
||||
+ // so we store the state except for the WindowMinimized value, to make sure that
|
||||
+ // the equality check above does not return true when setWindowState(Qt::WindowMinimized)
|
||||
+ // is called, even though the window is actually not minimized anymore.
|
||||
+ mState = state & ~Qt::WindowMinimized;
|
||||
|
||||
if (mShellSurface) {
|
||||
createDecoration();
|
||||
Index: qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandxdgshellv6.cpp
|
||||
===================================================================
|
||||
--- qtwayland-everywhere-src-5.11.0-beta2.orig/src/client/qwaylandxdgshellv6.cpp
|
||||
+++ qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandxdgshellv6.cpp
|
||||
@@ -56,6 +56,8 @@ QWaylandXdgSurfaceV6::Toplevel::Toplevel
|
||||
: QtWayland::zxdg_toplevel_v6(xdgSurface->get_toplevel())
|
||||
, m_xdgSurface(xdgSurface)
|
||||
{
|
||||
+ m_configureState.fullscreen = false;
|
||||
+ m_configureState.maximized = false;
|
||||
}
|
||||
|
||||
QWaylandXdgSurfaceV6::Toplevel::~Toplevel()
|
||||
@@ -75,13 +77,35 @@ void QWaylandXdgSurfaceV6::Toplevel::zxd
|
||||
m_configureState.width = width;
|
||||
m_configureState.height = height;
|
||||
|
||||
+ bool wasMaximized = m_configureState.maximized;
|
||||
+ bool wasFullscreen = m_configureState.fullscreen;
|
||||
+
|
||||
uint32_t *state = reinterpret_cast<uint32_t *>(states->data);
|
||||
size_t numStates = states->size / sizeof(uint32_t);
|
||||
- m_configureState.states.reserve(numStates);
|
||||
- m_configureState.states.clear();
|
||||
|
||||
- for (size_t i = 0; i < numStates; i++)
|
||||
- m_configureState.states << state[i];
|
||||
+ m_configureState.fullscreen = false;
|
||||
+ m_configureState.maximized = false;
|
||||
+
|
||||
+ for (size_t i = 0; i < numStates; i++) {
|
||||
+ switch (state[i]) {
|
||||
+ case ZXDG_TOPLEVEL_V6_STATE_MAXIMIZED:
|
||||
+ m_configureState.maximized = true;
|
||||
+ break;
|
||||
+ case ZXDG_TOPLEVEL_V6_STATE_FULLSCREEN:
|
||||
+ m_configureState.fullscreen = true;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if ((!wasMaximized && m_configureState.maximized) || (!wasFullscreen && m_configureState.fullscreen))
|
||||
+ m_normalSize = m_xdgSurface->m_window->window()->frameGeometry().size();
|
||||
+
|
||||
+ if ((width == 0 || height == 0) && !m_normalSize.isEmpty()) {
|
||||
+ m_configureState.width = m_normalSize.width();
|
||||
+ m_configureState.height = m_normalSize.height();
|
||||
+ }
|
||||
}
|
||||
|
||||
void QWaylandXdgSurfaceV6::Toplevel::zxdg_toplevel_v6_close()
|
||||
@@ -232,6 +256,35 @@ void QWaylandXdgSurfaceV6::zxdg_surface_
|
||||
ack_configure(serial);
|
||||
}
|
||||
|
||||
+void QWaylandXdgSurfaceV6::setMaximized()
|
||||
+{
|
||||
+ if (m_toplevel)
|
||||
+ m_toplevel->set_maximized();
|
||||
+}
|
||||
+
|
||||
+void QWaylandXdgSurfaceV6::setFullscreen()
|
||||
+{
|
||||
+ if (m_toplevel)
|
||||
+ m_toplevel->set_fullscreen(nullptr);
|
||||
+}
|
||||
+
|
||||
+void QWaylandXdgSurfaceV6::setNormal()
|
||||
+{
|
||||
+ if (!m_toplevel)
|
||||
+ return;
|
||||
+
|
||||
+ if (m_toplevel->m_configureState.maximized)
|
||||
+ m_toplevel->unset_maximized();
|
||||
+ if (m_toplevel->m_configureState.fullscreen)
|
||||
+ m_toplevel->unset_fullscreen();
|
||||
+}
|
||||
+
|
||||
+void QWaylandXdgSurfaceV6::setMinimized()
|
||||
+{
|
||||
+ if (m_toplevel)
|
||||
+ m_toplevel->set_minimized();
|
||||
+}
|
||||
+
|
||||
|
||||
|
||||
QWaylandXdgShellV6::QWaylandXdgShellV6(struct ::wl_registry *registry, uint32_t id, uint32_t availableVersion)
|
||||
Index: qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandxdgshellv6_p.h
|
||||
===================================================================
|
||||
--- qtwayland-everywhere-src-5.11.0-beta2.orig/src/client/qwaylandxdgshellv6_p.h
|
||||
+++ qtwayland-everywhere-src-5.11.0-beta2/src/client/qwaylandxdgshellv6_p.h
|
||||
@@ -88,6 +88,10 @@ public:
|
||||
|
||||
protected:
|
||||
void zxdg_surface_v6_configure(uint32_t serial) override;
|
||||
+ void setMaximized() override;
|
||||
+ void setFullscreen() override;
|
||||
+ void setNormal() override;
|
||||
+ void setMinimized() override;
|
||||
|
||||
private:
|
||||
class Toplevel: public QtWayland::zxdg_toplevel_v6
|
||||
@@ -103,8 +107,10 @@ private:
|
||||
|
||||
struct {
|
||||
int32_t width, height;
|
||||
- QVarLengthArray<uint32_t> states;
|
||||
+ bool maximized;
|
||||
+ bool fullscreen;
|
||||
} m_configureState;
|
||||
+ QSize m_normalSize;
|
||||
|
||||
QWaylandXdgSurfaceV6 *m_xdgSurface = nullptr;
|
||||
};
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Sat Jul 7 12:30:44 UTC 2018 - fabian@ritter-vogt.de
|
||||
|
||||
- Remove patch as it causes a regression with resizing windows:
|
||||
* 0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jun 19 10:51:25 CEST 2018 - fabian@ritter-vogt.de
|
||||
|
||||
|
@ -33,8 +33,6 @@ Source: https://download.qt.io/official_releases/qt/5.11/%{real_version}
|
||||
Source1: baselibs.conf
|
||||
# PATCH-FIX-OPENSUSE
|
||||
Patch1: workaround-null-object.patch
|
||||
# Pending for upstream 5.9 (https://codereview.qt-project.org/#/c/199123/)
|
||||
Patch1501: 0001-Handle-maximize-minimize-fullscreen-xdgshellv6.patch
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: libqt5-qtbase-private-headers-devel >= %{version}
|
||||
BuildRequires: libqt5-qtdeclarative-private-headers-devel >= %{version}
|
||||
|
Loading…
Reference in New Issue
Block a user