diff options
Diffstat (limited to 'src/client')
-rw-r--r-- | src/client/hardwareintegration/qwaylandhardwareintegration_p.h | 4 | ||||
-rw-r--r-- | src/client/qwaylandabstractdecoration.cpp | 5 | ||||
-rw-r--r-- | src/client/qwaylandcursor_p.h | 8 | ||||
-rw-r--r-- | src/client/qwaylanddatadevice.cpp | 34 | ||||
-rw-r--r-- | src/client/qwaylanddisplay.cpp | 11 | ||||
-rw-r--r-- | src/client/qwaylanddisplay_p.h | 4 | ||||
-rw-r--r-- | src/client/qwaylandinputdevice.cpp | 1 | ||||
-rw-r--r-- | src/client/qwaylandinputdevice_p.h | 2 | ||||
-rw-r--r-- | src/client/qwaylandintegration_p.h | 32 | ||||
-rw-r--r-- | src/client/qwaylandnativeinterface_p.h | 16 | ||||
-rw-r--r-- | src/client/qwaylandscreen_p.h | 16 | ||||
-rw-r--r-- | src/client/qwaylandshmbackingstore_p.h | 10 | ||||
-rw-r--r-- | src/client/qwaylandshmwindow_p.h | 4 | ||||
-rw-r--r-- | src/client/qwaylandwindow_p.h | 22 | ||||
-rw-r--r-- | src/client/qwaylandwindowmanagerintegration_p.h | 6 | ||||
-rw-r--r-- | src/client/qwaylandxdgsurface.cpp | 23 | ||||
-rw-r--r-- | src/client/qwaylandxdgsurface_p.h | 2 |
17 files changed, 91 insertions, 109 deletions
diff --git a/src/client/hardwareintegration/qwaylandhardwareintegration_p.h b/src/client/hardwareintegration/qwaylandhardwareintegration_p.h index 92748c9f0..db9e19ac9 100644 --- a/src/client/hardwareintegration/qwaylandhardwareintegration_p.h +++ b/src/client/hardwareintegration/qwaylandhardwareintegration_p.h @@ -69,8 +69,8 @@ public: QString serverBufferIntegration(); protected: - void hardware_integration_client_backend(const QString &name); - void hardware_integration_server_backend(const QString &name); + void hardware_integration_client_backend(const QString &name) Q_DECL_OVERRIDE; + void hardware_integration_server_backend(const QString &name) Q_DECL_OVERRIDE; private: QString m_client_buffer; diff --git a/src/client/qwaylandabstractdecoration.cpp b/src/client/qwaylandabstractdecoration.cpp index 8ac2cabfa..daaf4e6bc 100644 --- a/src/client/qwaylandabstractdecoration.cpp +++ b/src/client/qwaylandabstractdecoration.cpp @@ -110,7 +110,10 @@ const QImage &QWaylandAbstractDecoration::contentImage() if (d->m_isDirty) { //Update the decoration backingstore - d->m_decorationContentImage = QImage(window()->frameGeometry().size(), QImage::Format_ARGB32_Premultiplied); + const int scale = waylandWindow()->scale(); + const QSize imageSize = window()->frameGeometry().size() * scale; + d->m_decorationContentImage = QImage(imageSize, QImage::Format_ARGB32_Premultiplied); + d->m_decorationContentImage.setDevicePixelRatio(scale); d->m_decorationContentImage.fill(Qt::transparent); this->paint(&d->m_decorationContentImage); diff --git a/src/client/qwaylandcursor_p.h b/src/client/qwaylandcursor_p.h index 4154ee191..11333d34d 100644 --- a/src/client/qwaylandcursor_p.h +++ b/src/client/qwaylandcursor_p.h @@ -73,10 +73,10 @@ public: QWaylandCursor(QWaylandScreen *screen); ~QWaylandCursor(); - void changeCursor(QCursor *cursor, QWindow *window); - void pointerEvent(const QMouseEvent &event); - QPoint pos() const; - void setPos(const QPoint &pos); + void changeCursor(QCursor *cursor, QWindow *window) Q_DECL_OVERRIDE; + void pointerEvent(const QMouseEvent &event) Q_DECL_OVERRIDE; + QPoint pos() const Q_DECL_OVERRIDE; + void setPos(const QPoint &pos) Q_DECL_OVERRIDE; struct wl_cursor_image *cursorImage(Qt::CursorShape shape); QSharedPointer<QWaylandBuffer> cursorBitmapImage(const QCursor *cursor); diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp index 9cc4217ff..afc8849b3 100644 --- a/src/client/qwaylanddatadevice.cpp +++ b/src/client/qwaylanddatadevice.cpp @@ -156,31 +156,29 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface, m_dragWindow = QWaylandWindow::fromWlSurface(surface)->window(); m_dragPoint = calculateDragPosition(x, y, m_dragWindow); - QDrag *drag = static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->currentDrag(); - QMimeData *dragData = Q_NULLPTR; Qt::DropActions supportedActions; + + m_dragOffer.reset(static_cast<QWaylandDataOffer *>(wl_data_offer_get_user_data(id))); + QDrag *drag = static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->currentDrag(); if (drag) { dragData = drag->mimeData(); supportedActions = drag->supportedActions(); - } else { - m_dragOffer.reset(static_cast<QWaylandDataOffer *>(wl_data_offer_get_user_data(id))); - if (m_dragOffer) { - dragData = m_dragOffer->mimeData(); - supportedActions = Qt::CopyAction | Qt::MoveAction | Qt::LinkAction; - } + } else if (m_dragOffer) { + dragData = m_dragOffer->mimeData(); + supportedActions = Qt::CopyAction | Qt::MoveAction | Qt::LinkAction; } const QPlatformDragQtResponse &response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions); if (drag) { static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response); + } + + if (response.isAccepted()) { + wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, m_dragOffer->firstFormat().toUtf8().constData()); } else { - if (response.isAccepted()) { - wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, m_dragOffer->firstFormat().toUtf8().constData()); - } else { - wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, 0); - } + wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, 0); } } @@ -219,12 +217,12 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe if (drag) { static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response); + } + + if (response.isAccepted()) { + wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, m_dragOffer->firstFormat().toUtf8().constData()); } else { - if (response.isAccepted()) { - wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, m_dragOffer->firstFormat().toUtf8().constData()); - } else { - wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, 0); - } + wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, 0); } } diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp index a18b9853f..9ed76d2ce 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp @@ -125,19 +125,8 @@ QWaylandWindowManagerIntegration *QWaylandDisplay::windowManagerIntegration() co return mWindowManagerIntegration.data(); } -QWaylandInputDevice *QWaylandDisplay::lastKeyboardFocusInputDevice() const -{ - return mLastKeyboardFocusInputDevice; -} - -void QWaylandDisplay::setLastKeyboardFocusInputDevice(QWaylandInputDevice *device) -{ - mLastKeyboardFocusInputDevice = device; -} - QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration) : mWaylandIntegration(waylandIntegration) - , mLastKeyboardFocusInputDevice(0) , mDndSelectionHandler(0) , mWindowExtension(0) , mSubCompositor(0) diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h index 59b005743..1c0b46bfb 100644 --- a/src/client/qwaylanddisplay_p.h +++ b/src/client/qwaylanddisplay_p.h @@ -140,9 +140,6 @@ public: QWaylandInputDevice *defaultInputDevice() const; QWaylandInputDevice *currentInputDevice() const { return defaultInputDevice(); } - QWaylandInputDevice *lastKeyboardFocusInputDevice() const; - void setLastKeyboardFocusInputDevice(QWaylandInputDevice *device); - QWaylandDataDeviceManager *dndSelectionHandler() const { return mDndSelectionHandler.data(); } QtWayland::qt_surface_extension *windowExtension() const { return mWindowExtension.data(); } @@ -200,7 +197,6 @@ private: QList<QWaylandInputDevice *> mInputDevices; QList<Listener> mRegistryListeners; QWaylandIntegration *mWaylandIntegration; - QWaylandInputDevice *mLastKeyboardFocusInputDevice; QScopedPointer<QWaylandDataDeviceManager> mDndSelectionHandler; QScopedPointer<QtWayland::qt_surface_extension> mWindowExtension; QScopedPointer<QtWayland::wl_subcompositor> mSubCompositor; diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp index e85a8d984..613d517a3 100644 --- a/src/client/qwaylandinputdevice.cpp +++ b/src/client/qwaylandinputdevice.cpp @@ -656,7 +656,6 @@ void QWaylandInputDevice::Keyboard::focusCallback(void *data, struct wl_callback self->mFocusCallback = 0; } - self->mParent->mQDisplay->setLastKeyboardFocusInputDevice(self->mFocus ? self->mParent : 0); QWindowSystemInterface::handleWindowActivated(self->mFocus ? self->mFocus->window() : 0); } diff --git a/src/client/qwaylandinputdevice_p.h b/src/client/qwaylandinputdevice_p.h index 82b9d90c3..3954328f1 100644 --- a/src/client/qwaylandinputdevice_p.h +++ b/src/client/qwaylandinputdevice_p.h @@ -234,7 +234,7 @@ public: void pointer_enter(uint32_t serial, struct wl_surface *surface, wl_fixed_t sx, wl_fixed_t sy) Q_DECL_OVERRIDE; - void pointer_leave(uint32_t time, struct wl_surface *surface); + void pointer_leave(uint32_t time, struct wl_surface *surface) Q_DECL_OVERRIDE; void pointer_motion(uint32_t time, wl_fixed_t sx, wl_fixed_t sy) Q_DECL_OVERRIDE; void pointer_button(uint32_t serial, uint32_t time, diff --git a/src/client/qwaylandintegration_p.h b/src/client/qwaylandintegration_p.h index 4ee6fac8e..f5e68eaf4 100644 --- a/src/client/qwaylandintegration_p.h +++ b/src/client/qwaylandintegration_p.h @@ -72,37 +72,37 @@ public: QWaylandIntegration(); ~QWaylandIntegration(); - bool hasCapability(QPlatformIntegration::Capability cap) const; - QPlatformWindow *createPlatformWindow(QWindow *window) const; + bool hasCapability(QPlatformIntegration::Capability cap) const Q_DECL_OVERRIDE; + QPlatformWindow *createPlatformWindow(QWindow *window) const Q_DECL_OVERRIDE; #ifndef QT_NO_OPENGL - QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const; + QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const Q_DECL_OVERRIDE; #endif - QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; + QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const Q_DECL_OVERRIDE; - QAbstractEventDispatcher *createEventDispatcher() const; - void initialize(); + QAbstractEventDispatcher *createEventDispatcher() const Q_DECL_OVERRIDE; + void initialize() Q_DECL_OVERRIDE; - QPlatformFontDatabase *fontDatabase() const; + QPlatformFontDatabase *fontDatabase() const Q_DECL_OVERRIDE; - QPlatformNativeInterface *nativeInterface() const; + QPlatformNativeInterface *nativeInterface() const Q_DECL_OVERRIDE; - QPlatformClipboard *clipboard() const; + QPlatformClipboard *clipboard() const Q_DECL_OVERRIDE; - QPlatformDrag *drag() const; + QPlatformDrag *drag() const Q_DECL_OVERRIDE; - QPlatformInputContext *inputContext() const; + QPlatformInputContext *inputContext() const Q_DECL_OVERRIDE; - QVariant styleHint(StyleHint hint) const; + QVariant styleHint(StyleHint hint) const Q_DECL_OVERRIDE; - QPlatformAccessibility *accessibility() const; + QPlatformAccessibility *accessibility() const Q_DECL_OVERRIDE; - QPlatformServices *services() const; + QPlatformServices *services() const Q_DECL_OVERRIDE; QWaylandDisplay *display() const; - QStringList themeNames() const; + QStringList themeNames() const Q_DECL_OVERRIDE; - QPlatformTheme *createPlatformTheme(const QString &name) const; + QPlatformTheme *createPlatformTheme(const QString &name) const Q_DECL_OVERRIDE; QWaylandInputDevice *createInputDevice(QWaylandDisplay *display, int version, uint32_t id); diff --git a/src/client/qwaylandnativeinterface_p.h b/src/client/qwaylandnativeinterface_p.h index 61c5e59d5..83e3fe5fa 100644 --- a/src/client/qwaylandnativeinterface_p.h +++ b/src/client/qwaylandnativeinterface_p.h @@ -67,17 +67,17 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandNativeInterface : public QPlatformNativeIn { public: QWaylandNativeInterface(QWaylandIntegration *integration); - void *nativeResourceForIntegration(const QByteArray &resource); + void *nativeResourceForIntegration(const QByteArray &resource) Q_DECL_OVERRIDE; void *nativeResourceForWindow(const QByteArray &resourceString, - QWindow *window); + QWindow *window) Q_DECL_OVERRIDE; void *nativeResourceForScreen(const QByteArray &resourceString, - QScreen *screen); - void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context); + QScreen *screen) Q_DECL_OVERRIDE; + void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context) Q_DECL_OVERRIDE; - QVariantMap windowProperties(QPlatformWindow *window) const; - QVariant windowProperty(QPlatformWindow *window, const QString &name) const; - QVariant windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const; - void setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value); + QVariantMap windowProperties(QPlatformWindow *window) const Q_DECL_OVERRIDE; + QVariant windowProperty(QPlatformWindow *window, const QString &name) const Q_DECL_OVERRIDE; + QVariant windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const Q_DECL_OVERRIDE; + void setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value) Q_DECL_OVERRIDE; void emitWindowPropertyChanged(QPlatformWindow *window, const QString &name); diff --git a/src/client/qwaylandscreen_p.h b/src/client/qwaylandscreen_p.h index 12b680640..64980280a 100644 --- a/src/client/qwaylandscreen_p.h +++ b/src/client/qwaylandscreen_p.h @@ -72,25 +72,25 @@ public: void init(); QWaylandDisplay *display() const; - QRect geometry() const; - int depth() const; - QImage::Format format() const; + QRect geometry() const Q_DECL_OVERRIDE; + int depth() const Q_DECL_OVERRIDE; + QImage::Format format() const Q_DECL_OVERRIDE; QSizeF physicalSize() const Q_DECL_OVERRIDE; QDpi logicalDpi() const Q_DECL_OVERRIDE; QList<QPlatformScreen *> virtualSiblings() const Q_DECL_OVERRIDE; - void setOrientationUpdateMask(Qt::ScreenOrientations mask); + void setOrientationUpdateMask(Qt::ScreenOrientations mask) Q_DECL_OVERRIDE; - Qt::ScreenOrientation orientation() const; + Qt::ScreenOrientation orientation() const Q_DECL_OVERRIDE; int scale() const; qreal devicePixelRatio() const Q_DECL_OVERRIDE; - qreal refreshRate() const; + qreal refreshRate() const Q_DECL_OVERRIDE; - QString name() const { return mOutputName; } + QString name() const Q_DECL_OVERRIDE { return mOutputName; } - QPlatformCursor *cursor() const; + QPlatformCursor *cursor() const Q_DECL_OVERRIDE; QWaylandCursor *waylandCursor() const { return mWaylandCursor; }; uint32_t outputId() const { return m_outputId; } diff --git a/src/client/qwaylandshmbackingstore_p.h b/src/client/qwaylandshmbackingstore_p.h index e403af315..c3e763502 100644 --- a/src/client/qwaylandshmbackingstore_p.h +++ b/src/client/qwaylandshmbackingstore_p.h @@ -72,7 +72,7 @@ public: QWaylandShmBuffer(QWaylandDisplay *display, const QSize &size, QImage::Format format, int scale = 1); ~QWaylandShmBuffer(); - QSize size() const { return mImage.size(); } + QSize size() const Q_DECL_OVERRIDE { return mImage.size(); } int scale() const Q_DECL_OVERRIDE { return int(mImage.devicePixelRatio()); } QImage *image() { return &mImage; } @@ -91,11 +91,11 @@ public: ~QWaylandShmBackingStore(); QPaintDevice *paintDevice(); - void flush(QWindow *window, const QRegion ®ion, const QPoint &offset); - void resize(const QSize &size, const QRegion &staticContents); + void flush(QWindow *window, const QRegion ®ion, const QPoint &offset) Q_DECL_OVERRIDE; + void resize(const QSize &size, const QRegion &staticContents) Q_DECL_OVERRIDE; void resize(const QSize &size); - void beginPaint(const QRegion &); - void endPaint(); + void beginPaint(const QRegion &) Q_DECL_OVERRIDE; + void endPaint() Q_DECL_OVERRIDE; void hidden(); QWaylandAbstractDecoration *windowDecoration() const; diff --git a/src/client/qwaylandshmwindow_p.h b/src/client/qwaylandshmwindow_p.h index 2e5e0bcb5..d06b9b009 100644 --- a/src/client/qwaylandshmwindow_p.h +++ b/src/client/qwaylandshmwindow_p.h @@ -64,8 +64,8 @@ public: QWaylandShmWindow(QWindow *window); ~QWaylandShmWindow(); - WindowType windowType() const; - QSurfaceFormat format() const { return QSurfaceFormat(); } + WindowType windowType() const Q_DECL_OVERRIDE; + QSurfaceFormat format() const Q_DECL_OVERRIDE { return QSurfaceFormat(); } }; } diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h index 100c068fa..c2aa1a501 100644 --- a/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h @@ -110,16 +110,16 @@ public: ~QWaylandWindow(); virtual WindowType windowType() const = 0; - WId winId() const; - void setVisible(bool visible); - void setParent(const QPlatformWindow *parent); + WId winId() const Q_DECL_OVERRIDE; + void setVisible(bool visible) Q_DECL_OVERRIDE; + void setParent(const QPlatformWindow *parent) Q_DECL_OVERRIDE; - void setWindowTitle(const QString &title); + void setWindowTitle(const QString &title) Q_DECL_OVERRIDE; inline QIcon windowIcon() const; - void setWindowIcon(const QIcon &icon); + void setWindowIcon(const QIcon &icon) Q_DECL_OVERRIDE; - void setGeometry(const QRect &rect); + void setGeometry(const QRect &rect) Q_DECL_OVERRIDE; void configure(uint32_t edges, int32_t width, int32_t height); @@ -133,7 +133,7 @@ public: void waitForFrameSync(); - QMargins frameMargins() const; + QMargins frameMargins() const Q_DECL_OVERRIDE; static QWaylandWindow *fromWlSurface(::wl_surface *surface); @@ -142,11 +142,11 @@ public: QWaylandSubSurface *subSurfaceWindow() const; QWaylandScreen *screen() const { return mScreen; } - void handleContentOrientationChange(Qt::ScreenOrientation orientation); + void handleContentOrientationChange(Qt::ScreenOrientation orientation) Q_DECL_OVERRIDE; void setOrientationMask(Qt::ScreenOrientations mask); - void setWindowState(Qt::WindowState state); - void setWindowFlags(Qt::WindowFlags flags); + void setWindowState(Qt::WindowState state) Q_DECL_OVERRIDE; + void setWindowFlags(Qt::WindowFlags flags) Q_DECL_OVERRIDE; void raise() Q_DECL_OVERRIDE; void lower() Q_DECL_OVERRIDE; @@ -182,7 +182,7 @@ public: void doResize(); void setCanResize(bool canResize); - bool setMouseGrabEnabled(bool grab); + bool setMouseGrabEnabled(bool grab) Q_DECL_OVERRIDE; static QWaylandWindow *mouseGrab() { return mMouseGrab; } void sendProperty(const QString &name, const QVariant &value); diff --git a/src/client/qwaylandwindowmanagerintegration_p.h b/src/client/qwaylandwindowmanagerintegration_p.h index 80513af3a..f0c7ced6d 100644 --- a/src/client/qwaylandwindowmanagerintegration_p.h +++ b/src/client/qwaylandwindowmanagerintegration_p.h @@ -77,10 +77,10 @@ public: explicit QWaylandWindowManagerIntegration(QWaylandDisplay *waylandDisplay); virtual ~QWaylandWindowManagerIntegration(); - QByteArray desktopEnvironment() const; + QByteArray desktopEnvironment() const Q_DECL_OVERRIDE; - bool openUrl(const QUrl &url); - bool openDocument(const QUrl &url); + bool openUrl(const QUrl &url) Q_DECL_OVERRIDE; + bool openDocument(const QUrl &url) Q_DECL_OVERRIDE; bool showIsFullScreen() const; diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp index b9f07f0cc..69532b514 100644 --- a/src/client/qwaylandxdgsurface.cpp +++ b/src/client/qwaylandxdgsurface.cpp @@ -62,7 +62,6 @@ QWaylandXdgSurface::QWaylandXdgSurface(struct ::xdg_surface *xdg_surface, QWayla { if (window->display()->windowExtension()) m_extendedWindow = new QWaylandExtendedSurface(window); - m_size = m_window->window()->geometry().size(); } QWaylandXdgSurface::~QWaylandXdgSurface() @@ -193,10 +192,7 @@ void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height, st aboutToFullScreen = true; break; case XDG_SURFACE_STATE_RESIZING: - m_margins = m_window->frameMargins(); - width -= m_margins.left() + m_margins.right(); - height -= m_margins.top() + m_margins.bottom(); - m_size = m_window->window()->geometry().size(); + m_normalSize = QSize(width, height); break; case XDG_SURFACE_STATE_ACTIVATED: // TODO: here about the missing window activation @@ -207,6 +203,8 @@ void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height, st } if (!m_fullscreen && aboutToFullScreen) { + if (!m_maximized) + m_normalSize = m_window->window()->frameGeometry().size(); m_fullscreen = true; m_window->window()->showFullScreen(); } else if (m_fullscreen && !aboutToFullScreen) { @@ -217,6 +215,8 @@ void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height, st m_window->window()->showNormal(); } } else if (!m_maximized && aboutToMaximize) { + if (!m_fullscreen) + m_normalSize = m_window->window()->frameGeometry().size(); m_maximized = true; m_window->window()->showMaximized(); } else if (m_maximized && !aboutToMaximize) { @@ -224,14 +224,11 @@ void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height, st m_window->window()->showNormal(); } - if (width == 0 || height == 0) { - width = m_size.width(); - height = m_size.height(); - } - - if (width > 0 && height > 0) { - m_margins = m_window->frameMargins(); - m_window->configure(0, width + m_margins.left() + m_margins.right(), height + m_margins.top() + m_margins.bottom()); + if (width <= 0 || height <= 0) { + if (!m_normalSize.isEmpty()) + m_window->configure(0, m_normalSize.width(), m_normalSize.height()); + } else { + m_window->configure(0, width, height); } ack_configure(serial); diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h index 342dff75d..24eb86519 100644 --- a/src/client/qwaylandxdgsurface_p.h +++ b/src/client/qwaylandxdgsurface_p.h @@ -112,7 +112,7 @@ private: bool m_maximized; bool m_minimized; bool m_fullscreen; - QSize m_size; + QSize m_normalSize; QMargins m_margins; QWaylandExtendedSurface *m_extendedWindow; |