Reputation: 3294
Is there a way to remove SWT Shell
border and also support window re-positioning. I used SWT.NONE
in my Shell style to remove the window border but it also ended up in locking the UI position.
Upvotes: 0
Views: 1283
Reputation: 36894
Yes you can, but you have to handle drag events yourself. Here is an example:
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP);
Listener l = new Listener()
{
Point origin;
public void handleEvent(Event e)
{
switch (e.type)
{
case SWT.MouseDown:
origin = new Point(e.x, e.y);
break;
case SWT.MouseUp:
origin = null;
break;
case SWT.MouseMove:
if (origin != null)
{
Point p = display.map(shell, null, e.x, e.y);
shell.setLocation(p.x - origin.x, p.y - origin.y);
}
break;
}
}
};
shell.addListener(SWT.MouseDown, l);
shell.addListener(SWT.MouseUp, l);
shell.addListener(SWT.MouseMove, l);
shell.setSize(400, 300);
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
It's not really worth posting a screenshot, since it's just a draggable grey window.
Update
If you want the whole Shell
to be draggable even if it contains other widgets, then use this instead:
display.addFilter(SWT.MouseDown, l);
display.addFilter(SWT.MouseUp, l);
display.addFilter(SWT.MouseMove, l);
Upvotes: 2