Как установить значения по умолчанию для NSFontPanel?

Я настраиваю окно настроек для моего классного приложения, которое отображает некоторый текст. В настройках я установил кнопку, которая открывает NSFontPanel, Мое приложение сохраняет предпочитаемый пользователем цвет и шрифт текста и всегда открывается с этими настройками, так что пользователю никогда не придется видеть текст, отображаемый в цвете или шрифте, которые он не предпочитает.

Проблема в том, что, хотя мое приложение может запомнить эти настройки, NSFontPanel есть проблемы. Когда я впервые открываю панель шрифтов, значения по умолчанию для всех полей сбрасываются. После игры с ними, закрытия панели и последующего ее открытия правильные значения сохраняются. Проблема возникает только при первом открытии панели.

Я не понимаю, почему это происходит!

Я тщательно настроил шрифт и цвет панели при запуске моего приложения, как вы можете видеть из этого фрагмента:

def show_entry_font_menu(sender)
  font_manager = NSFontManager.sharedFontManager    
  color_panel = NSColorPanel.sharedColorPanel

  font_manager.setDelegate self
  color_panel.setDelegate self

  font_manager.setSelectedFont(preferences.entry_font, isMultiple:false)

  font_panel = font_manager.fontPanel(true)
  font_panel.makeKeyAndOrderFront(sender)
  attributes = preferences.entry_font_attributes
  color = preferences.entry_font_color

  font_manager.setSelectedAttributes(attributes, isMultiple:false)
  color_panel.setColor(color) if preferences.entry_font_color

  self.did_open_font_panel = true
end

1 ответ

Решение

Есть странность в инициализации sharedFontPanel. Если вы устанавливаете шрифт до его создания в первый раз, это работает нормально, но установка атрибутов - нет.

То, что вам нужно сделать, это сначала makeKeyAndOrderFront, а затем установить атрибуты. Когда панель будет создана таким образом в первый раз, она будет правильно отражать setSelectedAttributes.

  font_panel.makeKeyAndOrderFront(sender)
  font_manager.setSelectedAttributes(attributes, isMultiple:false)
Другие вопросы по тегам