[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.swt] Re: Problem with PRIMARY_MODAL dialog on OSX
|
Thanks for reporting this, I've logged
https://bugs.eclipse.org/bugs/show_bug.cgi?id=229680 .
Grant
"Peter Kullmann" <p.kullmann@xxxxxxxxx> wrote in message
news:fv6oqn$b4i$1@xxxxxxxxxxxxxxxxxxxx
> We have a strange problem with PRIMARY_MODAL dialogs on OSX. Here are
> the steps to reproduce the problem:
> - Open a primary modal dialog
> - Switch to a different application
> - Click on the titlebar of the original shell (not the dialog)
> - Now, you can see that the yellow and the green lights on this parent
> shell are always on (before that they were grey unless you hovered above
> them)
> - Close the dialog and note that the menu is not recovered. Usually the
> menu bar reappears as soon as the dialog is closed.
>
> Here is a snippet that helps trying out this problem:
>
> package org.eclipse.swt.snippets;
>
> import org.eclipse.swt.SWT;
> import org.eclipse.swt.events.SelectionAdapter;
> import org.eclipse.swt.events.SelectionEvent;
> import org.eclipse.swt.layout.GridLayout;
> import org.eclipse.swt.widgets.Button;
> import org.eclipse.swt.widgets.Display;
> import org.eclipse.swt.widgets.Menu;
> import org.eclipse.swt.widgets.MenuItem;
> import org.eclipse.swt.widgets.Shell;
>
> public class SnippetModalDialogProblem {
>
> public static void main(String[] args) {
> final Display display = new Display();
> final Shell shell = new Shell(display);
> shell.setLayout(new GridLayout());
> Button b = new Button(shell, SWT.PUSH);
> b.setText("Open dialog");
> b.addSelectionListener(new SelectionAdapter() {
> @Override
> public void widgetSelected(SelectionEvent e) {
> Shell dialog = new Shell(shell, SWT.PRIMARY_MODAL
> | SWT.SHELL_TRIM);
> dialog.setSize(100, 50);
> dialog.open();
> }
> });
> Menu bar = new Menu(shell, SWT.BAR);
> shell.setMenuBar(bar);
> MenuItem item = new MenuItem(bar, SWT.CASCADE);
> item.setText("Menu");
>
> shell.pack();
> shell.open();
>
> while (!shell.isDisposed()) {
> if (!display.readAndDispatch()) {
> display.sleep();
> }
> }
> display.dispose();
> }
> }