Home » Eclipse Projects » Standard Widget Toolkit (SWT) » SWT.Deactivate in Eclipse 3.4
SWT.Deactivate in Eclipse 3.4 [message #492328] |
Mon, 19 October 2009 22:46  |
Eclipse User |
|
|
|
Hi,
I have some Eclipse code that was working perfectly with SWT.Deactivate listener on a shell till Eclipse 3.2. The Deactivate listener does not get invoked in Eclipse 3.4.
Has there been any known changes, or does anyone know an alternative to this?
I will appreciate your response.
Thanks,
Irum.
|
|
| | | |
Re: SWT.Deactivate in Eclipse 3.4 [message #492732 is a reply to message #492471] |
Wed, 21 October 2009 10:43   |
Eclipse User |
|
|
|
I've made a snippet based on the code you've provided and I still see these
events (tried swt 3.4.2 on XP). Does the snippet below work for you? The
snippet has the setHelp() invocation commented out, does commenting this out
in your app change anything? There must be more happening to make the
problem happen than what's here, but I can't know what else your app is
doing, so you may need to dig a bit to determine what other conditions are
required to make this happen.
public static void main(String[] args) {
final Display display = new Display();
Shell parentShell = new Shell(display); // <-- would should style be?
parentShell.setBounds(10,10,200,200);
parentShell.setText("parent shell");
Shell shell = new Shell(parentShell, SWT.NONE);
shell.setBounds(300,300,200,200);
shell.setText("child shell");
// if( null != helpContextID )
// PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
helpContextID);
Listener activateListener = new Listener() {
public void handleEvent(Event event) {
System.out.println("activate received: " +
((Shell)event.widget).getText());
}
};
Listener deactivateListener = new Listener() {
public void handleEvent(Event event) {
System.out.println("deactivate received: " +
((Shell)event.widget).getText());
}
};
shell.addListener(SWT.Deactivate, deactivateListener);
shell.addListener(SWT.Activate, activateListener);
parentShell.addListener(SWT.Deactivate, deactivateListener);
parentShell.addListener(SWT.Activate, activateListener);
parentShell.open();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}
Grant
"Irum Godil" <irum@ca.ibm.com> wrote in message
news:hbkimh$9df$1@build.eclipse.org...
> Hi,
>
> I am on WinXP. I also added a Activate event and even that is not being
triggered.
>
> This is how I create the shell and listeners:
>
> shell = new Shell(parentShell, SWT.NONE);
>
>
> if( null != helpContextID )
> PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, helpContextID);
>
>
> shell.addListener(SWT.Deactivate, new Listener() {
> public void handleEvent(Event e) {
> hide();
>
> }
> });
>
> shell.addListener(SWT.Activate, new Listener() {
> public void handleEvent(Event e) {
> hide();
>
> }
> });
|
|
|
Re: SWT.Deactivate in Eclipse 3.4 [message #492772 is a reply to message #492732] |
Wed, 21 October 2009 12:39   |
Eclipse User |
|
|
|
Hi Grant,
Thanks for following up on this. I checked your code and it does work fine. However, in my code I am creating a Tooltip ultimately inside the shell. When I did the same in your code, the shell does not de-activate. I have attached the code below.
Please note that I do not do a Shell.open() anywhere, I did not do in Eclipse 3.2 either and everything worked as it is. Please let me know what you think.
Thanks.
public static void main(String[] args) {
final Display display = new Display();
Shell parentShell = new Shell(display); // <-- would should style be?
parentShell.setBounds(10,10,200,200);
parentShell.setText("parent shell");
Shell shell = new Shell(parentShell, SWT.NONE);
shell.setBounds(300,300,200,200);
shell.setText("child shell");
// if( null != helpContextID )
// PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
// helpContextID);
Listener activateListener = new Listener() {
public void handleEvent(Event event) {
System.out.println("activate received: " + ((Shell)event.widget).getText());
}
};
Listener deactivateListener = new Listener() {
public void handleEvent(Event event) {
System.out.println("deactivate received: " + ((Shell)event.widget).getText());
}
};
shell.addListener(SWT.Deactivate, deactivateListener);
shell.addListener(SWT.Activate, activateListener);
parentShell.addListener(SWT.Deactivate, deactivateListener);
parentShell.addListener(SWT.Activate, activateListener);
ToolTip tooltip = new org.eclipse.swt.widgets.ToolTip(shell, SWT.ICON_INFORMATION| SWT.BALLOON );
tooltip.setVisible(true);
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
|
|
|
Re: SWT.Deactivate in Eclipse 3.4 [message #492786 is a reply to message #492772] |
Wed, 21 October 2009 13:19   |
Eclipse User |
|
|
|
Are you saying that Activate/Deactivate used to be sent for a Shell that was
never opened? If so then this does not seem right, and the change was
likely a bug fix. You'll probably have to change your code that was
expecting this. What are you trying to do?
Grant
"Irum Godil" <irum@ca.ibm.com> wrote in message
news:hbndgj$s54$1@build.eclipse.org...
> Hi Grant,
>
> Thanks for following up on this. I checked your code and it does work
fine. However, in my code I am creating a Tooltip ultimately inside the
shell. When I did the same in your code, the shell does not de-activate. I
have attached the code below.
>
> Please note that I do not do a Shell.open() anywhere, I did not do in
Eclipse 3.2 either and everything worked as it is. Please let me know what
you think.
>
> Thanks.
>
> public static void main(String[] args) {
> final Display display = new Display();
>
>
> Shell parentShell = new Shell(display); // <-- would should style be?
> parentShell.setBounds(10,10,200,200);
> parentShell.setText("parent shell");
> Shell shell = new Shell(parentShell, SWT.NONE);
> shell.setBounds(300,300,200,200);
> shell.setText("child shell");
> // if( null != helpContextID )
> // PlatformUI.getWorkbench().getHelpSystem().setHelp(shell,
> // helpContextID);
> Listener activateListener = new Listener() {
> public void handleEvent(Event event) {
> System.out.println("activate received: " +
((Shell)event.widget).getText());
> }
> };
>
> Listener deactivateListener = new Listener() {
> public void handleEvent(Event event) {
> System.out.println("deactivate received: " +
((Shell)event.widget).getText());
> }
> };
> shell.addListener(SWT.Deactivate, deactivateListener);
> shell.addListener(SWT.Activate, activateListener);
> parentShell.addListener(SWT.Deactivate, deactivateListener);
> parentShell.addListener(SWT.Activate, activateListener);
>
> ToolTip tooltip = new org.eclipse.swt.widgets.ToolTip(shell,
SWT.ICON_INFORMATION| SWT.BALLOON );
>
> tooltip.setVisible(true);
>
> while (!shell.isDisposed()) {
> if (!display.readAndDispatch()) display.sleep();
> }
> display.dispose();
> }
|
|
|
Re: SWT.Deactivate in Eclipse 3.4 [message #492790 is a reply to message #492772] |
Wed, 21 October 2009 13:38  |
Eclipse User |
|
|
|
Thanks Grant. I have caught the root cause of my issue. We had the line shell.open () commented out recently for some other defect fix. That prevented the shell to receive events.
Thanks for your help.
Irum.
|
|
|
Goto Forum:
Current Time: Fri Jul 04 05:39:17 EDT 2025
Powered by FUDForum. Page generated in 0.25228 seconds
|