2

クールなアプリの設定ウィンドウを設定しています。このウィンドウにはテキストが表示されます。設定では、を開くボタンを設定しました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
4

1 に答える 1

4

There is an oddness in initializing the sharedFontPanel. If you set the font before creating it the first time, that works fine, but setting attributes does not.

What you have to do is makeKeyAndOrderFront first, and then set the attributes. Once the panel has been thus created the first time it will properly reflect setSelectedAttributes.

  font_panel.makeKeyAndOrderFront(sender)
  font_manager.setSelectedAttributes(attributes, isMultiple:false)
于 2011-07-11T23:00:58.800 に答える