Я бы согласился с Джейсоном на «нормальные» случаи.
Но я думаю, что есть особые ситуации, когда это может уместно сделать такую вещь.
Очевидно, Apple тоже так думает; начиная с 10.6 - все, что вам нужно сделать, это вызвать NSWindows '
- (void)setMovable:(BOOL)flag
или переопределить
- (BOOL)isMovable;
в вашем NSWindow-подклассе для изменения подвижности окон.
Если это недоступно, API-интерфейс Quartz Event Services ( документация ) предоставляет способы предотвращения перемещения окна.
Один из способов - установить касание события и манипулировать входящими событиями, чтобы они содержали только начальное местоположение mousedown вместо обновленного (реального) места, когда пользователь начинает перетаскивать окно.