Eclipse插件开发编辑器字体

时间:2017-06-08 09:06:08

标签: java eclipse fonts xtext pde

我正在使用Eclipse 3.7.0进行插件开发,我正在使用Xtext 2.9.2。我的编辑器首选项无法正常工作。

在Windows 7,8,10 上会发生这种情况:

enter image description here

  • 在64位版本中,我无法更改编辑器字体。点击更改按钮不会做任何事情,只需将鼠标更改为忙碌/待机时间一秒钟,然后再返回正常状态。

    • 在Windows XP上测试了相同的64位版本,一切正常。
  • 在32位版本中,一切都按预期工作,并出现Windows字体选择器对话框。

enter image description here

这是我创建首选项页面的方式:

@Override
protected void createFieldEditors() {
  // Add show font preference
  fontField = new FontFieldEditor(JFaceResources.TEXT_FONT, EDIT_EDITOR_FONT_LABEL, getFieldEditorParent());
  addField(fontField);

  fontField.setPreferenceStore(getPreferenceStore());

  // initialize the font preference with the default resources font if not initialized
  String defaultFont = getPreferenceStore().getDefaultString(JFaceResources.TEXT_FONT);
  if(defaultFont.isEmpty()) {
     font= JFaceResources.getTextFont();
     if (font != null) {
        FontData[] data= font.getFontData();
        if (data != null && data.length > 0) {
           PreferenceConverter.setDefault(getPreferenceStore(), JFaceResources.TEXT_FONT, data[0]);
        }
     }
  }
}

.log文件为空,没有任何有益的信息。

在调试时,我转到org.eclipse.swt.widgets.FontDialog.java并发现此行始终返回false而不显示对话框。根据我的理解,这个调用应该是阻塞的,只有在X,OK或Cancel按钮关闭对话框时才返回,但它会立即返回false。

/* Open the dialog */
boolean success = OS.ChooseFont (lpcf)

我也尝试过像example一样小的东西,同样的事情发生了。

1 个答案:

答案 0 :(得分:0)

几个月过去了,我找出了造成这个问题的原因。

基本上我们有一个JNI图层,可以加载一些需要dll的{​​{1}}。这需要将MSVCR90.dll清单嵌入到我们MSVCR90.dll使用的eclipse.exe中,这是使用RCP提供的mt.exe完成的。

虽然构建时我偶然没有嵌入Microsoft Visual Studio清单,但在加载MSVCR90.dll期间导致错误导致错误dll。然而,我注意到树形样式看起来是正确的。

这也是我的另一个问题Eclipse RCP Jface/SWT TreeViewer on Windows 10的答案。清单还影响MSVCR90.dll外观UItreeviews看起来不像progressbars提供的外观。