I am implementing a on screen keyboard in Java for SWT and AWT. One important thing is to move the keyboard to a position where the selected text field can show and is not lying behind the on screen keyboard.
For AWT i can detect the position of the current selected component with
Component owner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); if (owner == null) { return; } Point ownerLocation = owner.getLocationOnScreen(); Dimension ownerSize = owner.getSize();
How can i implement the same logic in SWT? I get the current selected widget by adding a focuslistener to the SWT event queue. But when i call
Point location = new Point(mTextWidget.getLocation().x, mTextWidget.getLocation().y); Dimension dimension = new Dimension(mTextWidget.getSize().x, mTextWidget.getSize().y);
I will get the position relativ to the parent composite.
How can i get the location of a special widget relativ to the complete screen?
I believe the method Control.toDisplay() should be able to translate your coordinates into ones relative to the screen.
This snippet may illustrate what you are after: