Минимизация на месте - нужна ли мне специальная структура - PullRequest
1 голос
/ 28 января 2012

Я хочу создать общесистемную функцию минимизации на месте, которая появляется при двойном щелчке по строке заголовка любого видимого окна в слое 0.

Похоже, что это будет действительно простая функция для повторной реализации ... Если дважды щелкнуть строку заголовка, просто нарисуйте только строку заголовка. Вот и все. Проблема заключается в том, что это делается во всех приложениях. Я думаю, что это требует написания пользовательской структуры для переопределения поведения в AppKit? Может быть, NSApplication, NSWindow или NSView?

Как я могу воссоздать минимизацию на месте? Является ли фреймворк моим единственным выбором? Если я создаю фреймворк, могу ли я заменить поведение свертывания в сторонних приложениях?

Какую инфраструктуру мне нужно переопределить, чтобы перехватить и воссоздать поведение по умолчанию для кнопки минимизации?

Подробнее о минимизации на месте: Я знаком с WindowShade от Unsanity, это именно то, что я хочу создать. Предположительно, Unanity работает над Lion-версией, но их послужной список невелик. Минимизация на месте была системной функцией еще во времена ОС 7 или 8. Я пробовал другие утилиты, которые пытаются заменить эту функцию, и нет ни одной, которая бы минимизировала на месте на уровне базовой системы. как это должно быть сделано. Пожалуйста, не предлагайте предложений по полноте, я собираюсь построить свой собственный.

Я создал приложение, воссоздающее минимизацию на месте, но этого недостаточно. Мое приложение полу-успешно воссоздает минимизацию на месте, помещая окна-заполнители (принадлежащие моему приложению) вместо окон сторонних производителей, когда они свернуты в док. Когда дважды щелкают мое окно (только заголовок), я закрываю окно и восстанавливаю реальное окно из дока.

Мое пользовательское приложение работает отлично, но происходит много переключений приложений. Я оптимизировал переключение между приложениями, чтобы оно было практически незаметным, но факт остается фактом: переключение приложений происходит каждый раз, когда дважды щелкается строка заголовка окна. Результатом переключения приложений является то, что строки меню переключаются назад и вперед, поддоны сторонних приложений скрываются, когда мое приложение фокусируется, и список продолжается.

Итак, хотя я создал концептуальное приложение, этот метод не будет работать так, как мне бы хотелось. Минимизация на месте должна быть реализована с использованием другого метода, чем создание приложения, и мне нужна помощь, чтобы понять, как это сделать.

minimize-in-place demo app

То, что я знаю, думаю, что мне нужно сделать. Предложения и помощь приветствуются. Я думаю, что мне нужно написать пользовательский каркас, который заменяет AppKit? Это кажется ошеломляющим, хотя мне нужна только крошечная часть кода, которую нужно переопределить? т.е. основная функция _minimize, что бы это ни было.

Если дважды щелкнуть строку заголовка окна стороннего производителя, просто закрепите строку заголовка и позвольте остальной системе функционировать как обычно. В режиме «Свернуть» (дважды щелкните второй раз) верните клип в полное окно.

Просто верно?

Спасибо за любую помощь / предложения,

Chris

...