SWT Shell setRegion не работает в Eclipse Splash в MacOS - PullRequest
0 голосов
/ 11 сентября 2018

У меня странная проблема с плагином eclipse, который я разработал. Это не прямоугольное окно, и я использовал shell.setRegion () для определения многоугольника.

Это прекрасно работает на компьютерах с Windows, но в MacOS High Sierra отображается пустой экран.

Вот миниатюрная версия, уменьшившаяся до нескольких строк, которая действительно влияет.

Он показывает простой треугольник в качестве заставки во время запуска затмения.

enter image description here

plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
     point="org.eclipse.ui.splashHandlers">
  <splashHandler
        class="CustomSplash2"
        id="splashHandler">
  </splashHandler>
  <splashHandlerProductBinding
        productId="org.eclipse.platform.ide"
        splashId="splashHandler">
  </splashHandlerProductBinding>
</extension>
</plugin>

SplashHandler

import org.eclipse.swt.graphics.Region;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.splash.BasicSplashHandler;

public class CustomSplash2 extends BasicSplashHandler {

public CustomSplash2() {
    super();
}

@Override
public void init(final Shell splash) {
        super.init(splash);
        FillLayout layout = new FillLayout();
        splash.setLayout(layout);
        Region region = new Region();
        region.add(new int[] { 0, 200, 100, 0, 200, 200 });
        splash.setRegion(region);
        splash.setSize(region.getBounds().width, region.getBounds().height);
    }
}

версия Eclipse: Neon.3

1 Ответ

0 голосов
/ 11 сентября 2018

Похоже, это проблема в macOS-версии Shell, которая не рисует фоновое изображение, если задана область и не задан цвет фона.

Простая установка цвета фона Shell, кажется, обходит эту проблему и заставляет изображение появляться.

splash.setBackground(splash.getDisplay().getSystemColor(SWT.COLOR_WHITE));

Проблема в Shell.drawBackground методе

...