diff --git a/examples/example.manifest b/examples/example.manifest
index b2991af..54b7d3f 100644
--- a/examples/example.manifest
+++ b/examples/example.manifest
@@ -27,8 +27,8 @@
- True/PM
- PerMonitorV2, PerMonitor
+ True/PM, True
+ PerMonitorV2, PerMonitor, System
diff --git a/framelesshelper.cpp b/framelesshelper.cpp
index cf4a8bb..687049c 100644
--- a/framelesshelper.cpp
+++ b/framelesshelper.cpp
@@ -70,6 +70,9 @@ bool FramelessHelper::eventFilter(QObject *object, QEvent *event)
return false;
}
const auto window = qobject_cast(object);
+ if (Utilities::isWindowFixedSize(window)) {
+ return false;
+ }
const auto mouseEvent = static_cast(event);
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
const QPointF localPos = mouseEvent->position();
diff --git a/framelesshelper_win32.cpp b/framelesshelper_win32.cpp
index ab4448d..b47bea3 100644
--- a/framelesshelper_win32.cpp
+++ b/framelesshelper_win32.cpp
@@ -584,6 +584,10 @@ bool FramelessHelperWin::nativeEventFilter(const QByteArray &eventType, void *me
// another branch, if you are interested in it, you can give it a
// try.
+ if (Utilities::isWindowFixedSize(window)) {
+ *result = HTCLIENT;
+ return true;
+ }
const POINT globalPos = {GET_X_LPARAM(msg->lParam), GET_Y_LPARAM(msg->lParam)};
POINT localPos = globalPos;
if (ScreenToClient(msg->hwnd, &localPos) == FALSE) {
diff --git a/utilities.cpp b/utilities.cpp
index 790712c..76ccace 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -79,4 +79,18 @@ Qt::Edges Utilities::calculateWindowEdges(const QWindow *window, const QPointF &
return edges;
}
+bool Utilities::isWindowFixedSize(const QWindow *window)
+{
+ Q_ASSERT(window);
+ if (!window) {
+ return false;
+ }
+ if (window->flags() & Qt::MSWindowsFixedSizeDialogHint) {
+ return true;
+ }
+ const QSize minSize = window->minimumSize();
+ const QSize maxSize = window->maximumSize();
+ return (!minSize.isEmpty() && !maxSize.isEmpty() && (minSize == maxSize));
+}
+
FRAMELESSHELPER_END_NAMESPACE
diff --git a/utilities.h b/utilities.h
index 6f2400f..86d3bda 100644
--- a/utilities.h
+++ b/utilities.h
@@ -36,6 +36,7 @@ namespace Utilities
[[nodiscard]] FRAMELESSHELPER_API Qt::Edges calculateWindowEdges(const QWindow *window, const QPointF &pos);
FRAMELESSHELPER_API void startSystemMove(QWindow *window);
FRAMELESSHELPER_API void startSystemResize(QWindow *window, const Qt::Edges edges);
+[[nodiscard]] FRAMELESSHELPER_API bool isWindowFixedSize(const QWindow *window);
#ifdef Q_OS_WINDOWS
[[nodiscard]] FRAMELESSHELPER_API bool isWin8OrGreater();