Найти составное местоположение на экране
Я реализую экранную клавиатуру в Java для SWT и AWT. Одна важная вещь - переместить клавиатуру в положение, в котором выделенное текстовое поле может отображаться и не находится за экранной клавиатурой.
Для AWT я могу определить положение текущего выбранного компонента с помощью
Component owner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
if (owner == null) {
return;
}
Point ownerLocation = owner.getLocationOnScreen();
Dimension ownerSize = owner.getSize();
Как я могу реализовать ту же логику в SWT? Я получаю текущий выбранный виджет, добавляя focuslistener в очередь событий SWT. Но когда я звоню
Point location = new Point(mTextWidget.getLocation().x, mTextWidget.getLocation().y);
Dimension dimension = new Dimension(mTextWidget.getSize().x, mTextWidget.getSize().y);
Я получу положение относительно родительского композита.
Как я могу получить местоположение специального виджета относительно всего экрана?