Allow disabling system resize for a window on macOS.

This commit is contained in:
John Preston 2022-03-08 18:17:39 +04:00
parent 6be424604f
commit f17320171a
4 changed files with 17 additions and 0 deletions

View file

@ -32,6 +32,9 @@ inline void ShowOverAll(not_null<QWidget*> widget, bool canFocus) {
inline void BringToBack(not_null<QWidget*> widget) {
}
inline void DisableSystemWindowResize(not_null<QWidget*> widget, QSize ratio) {
}
inline constexpr bool UseMainQueueGeneric() {
return true;
}

View file

@ -91,6 +91,15 @@ void DrainMainQueue() {
void IgnoreAllActivation(not_null<QWidget*> widget) {
}
void DisableSystemWindowResize(not_null<QWidget*> widget, QSize ratio) {
const auto winId = widget->window()->winId();
if (const auto view = reinterpret_cast<NSView*>(winId)) {
if (const auto window = [view window]) {
window.styleMask &= ~NSWindowStyleMaskResizable;
}
}
}
std::optional<bool> IsOverlapped(
not_null<QWidget*> widget,
const QRect &rect) {

View file

@ -29,6 +29,8 @@ void BringToBack(not_null<QWidget*> widget);
void IgnoreAllActivation(not_null<QWidget*> widget);
void ClearTransientParent(not_null<QWidget*> widget);
void DisableSystemWindowResize(not_null<QWidget*> widget, QSize ratio);
[[nodiscard]] std::optional<bool> IsOverlapped(
not_null<QWidget*> widget,
const QRect &rect);

View file

@ -38,6 +38,9 @@ inline void BringToBack(not_null<QWidget*> widget) {
inline void ClearTransientParent(not_null<QWidget*> widget) {
}
inline void DisableSystemWindowResize(not_null<QWidget*> widget, QSize ratio) {
}
inline constexpr bool UseMainQueueGeneric() {
return true;
}