Как перетащить NSStatusItems

//Gathering Largest Temperature:
auto highestTemperature = yearData[0].highTemperature;
int highestTemperatureDate = 0;
for(int j = 0; j < size; j++)
{
    if(yearData[j].highTemperature > highestTemperature)
    {
       highestTemperature = yearData[j].highTemperature;
       highestTemperatureDate = j;
    }
}

//Gathering Smallest Temperature:
auto lowestTemperature = yearData[0].lowTemperature;
int smallestTemperatureDate = 0;
for (int j = 0; j < size; j++)
{
    if (yearData[j].lowTemperature < lowestTemperature)
    {
        lowestTemperature = yearData[j].lowTemperature;
        smallestTemperatureDate = j;
    }
}

Я добавил int для самых маленьких и самых высоких температур

10
задан duskwuff 2 October 2014 в 23:46
поделиться

2 ответа

Хотя NSStatusItems появляются около внутренних "отдельно оплачиваемых предметов меню Apple", они отличны и ведут себя по-другому. Было бы хорошо, если бы Apple объединила объекты, которые могут появиться в правой области строки меню, но на данный момент раздел разделяется на отличное "яблоко, внутреннее" (справа), и "обеспеченный приложением (NSStatusItem)" слева.

Можно визуализировать различие путем помещения компьютера в режим снимка экрана (cmd-shift-4) и нажатия клавиши "Пробел" для переключения для "получения целого окна". Когда Вы нависнете над значками меню Apple, Вы будете видеть, что они все живут в единственном окне. Это объясняет их способность, которая будет легко управляться и перетаскиваться о. Парение над другими объектами показывает, что каждый NSStatusItem на самом деле живет в единственном собственном окне (который, оказывается, принадлежит приложению, которое установило его).

Лучше придерживаться NSStatusItem даже при том, что Вы не можете перетащить их. Это - недостаток от Apple, которую поймет большинство пользователей, даже если это будет раздражающим. Подчеркивание положительных компромиссов предложения более стабильного приложения в течение длительного срока будет обычно смягчать мнения Ваших клиентов (или менеджеры?), кто стремится к draggability.

19
ответ дан 3 December 2019 в 14:35
поделиться

Необходимо будет использовать NSMenuExtra, нет NSStatusItem, и сделайте пункт меню выполнением пакета в SystemUIServer процесс, не Ваше собственное приложение. Вы также должны будете кодировать как предоставленный MenuCracker, чтобы заставить это работать.

NSMenuExtra не документировано и не поддерживается и поэтому рассмотрел "взлом".

Мое предположение для того, чтобы там быть двумя API во-первых: меню дополнительный катастрофический отказ (или утечка памяти) означает весь катастрофический отказ процесса SystemUIServer или утечку памяти — включая другие сторонние модули, а также предоставленные систему. С объектом состояния, с другой стороны, такая проблема только влияла бы на Ваш собственный код.

14
ответ дан 3 December 2019 в 14:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: