diff --git a/src/wayland/xdgshell.cpp b/src/wayland/xdgshell.cpp index 5b11315cc0..2c5845fc67 100644 --- a/src/wayland/xdgshell.cpp +++ b/src/wayland/xdgshell.cpp @@ -347,8 +347,12 @@ void XdgToplevelInterfacePrivate::apply(XdgToplevelCommit *commit) const auto minSize = commit->minimumSize.value_or(minimumSize); const auto maxSize = commit->maximumSize.value_or(maximumSize); - if (!minSize.isEmpty() && !maxSize.isEmpty() && (minSize.width() > maxSize.width() || minSize.height() > maxSize.height())) { - wl_resource_post_error(resource()->handle, error_invalid_size, "minimum size can't be bigger than the maximum"); + if ((minSize.width() > 0) && (maxSize.width() > 0) && (minSize.width() > maxSize.width())) { + wl_resource_post_error(resource()->handle, error_invalid_size, "minimum width can't be bigger than the maximum width"); + return; + } + if ((minSize.height() > 0) && (maxSize.height() > 0) && (minSize.height() > maxSize.height())) { + wl_resource_post_error(resource()->handle, error_invalid_size, "minimum height can't be bigger than the maximum height"); return; } @@ -575,12 +579,14 @@ QString XdgToplevelInterface::windowClass() const QSize XdgToplevelInterface::minimumSize() const { - return d->minimumSize.isEmpty() ? QSize(0, 0) : d->minimumSize; + return QSize(d->minimumSize.width() > 0 ? d->minimumSize.width() : 0, + d->minimumSize.height() > 0 ? d->minimumSize.height() : 0); } QSize XdgToplevelInterface::maximumSize() const { - return d->maximumSize.isEmpty() ? QSize(INT_MAX, INT_MAX) : d->maximumSize; + return QSize(d->maximumSize.width() > 0 ? d->maximumSize.width() : INT_MAX, + d->maximumSize.height() > 0 ? d->maximumSize.height() : INT_MAX); } quint32 XdgToplevelInterface::sendConfigure(const QSize &size, const States &states)