[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.swt] Re: SWT and UI Thread block
|
Mark,
Wouldn't Display.syncExec() work? This wouldn't stop the UI execution
but stop your thread until the Runnable is finished.
Achim
On Thu, 12 Jun 2008 17:55:14 -0400, Mark Ingerman
<mingerman@xxxxxxxxxxxxx> wrote:
>I have a problem where I want the current UI execution to stop, and perform
>some other ui (not a dialog box), and wait until that task is finished
>before returning to the previous spot.
>
>I have code that is running inside GEF that wants to put up a menu when the
>end connection (mouse down) event is run. I tried the following trick; it
>works on the MAC and under windows, but not under Linux. I wonder if there
>is a better way.
>
>Here is the code:
>
> do some code....
>
> Control c = Display.getCurrent().getFocusControl();
> if (c != null) {
> Menu old = c.getMenu();
> MenuManager mm = new MenuManager();
> for (String s : cats) {
>
> mm.add(new _Action(s, isSource));
>
> }
>
> final Menu m = mm.createContextMenu(c);
> c.setMenu(m);
> m.setVisible(true);
> c.getDisplay().readAndDispatch();
> c.setMenu(old);
>
> }
>
>
> finish the code....
>
>
>With the c.getDisplay().readAndDispatch() code in, the menu comes up, and
>until either one of the menu items are selected or ESC is pressed, the
>c.setMenu(old) statement and the following statements don't execute.
>
>Under Linux, however, it falls through, processes the rest of the event, and
>then allows for the firing of the menu.
>
>Is there a better way to do this?
Achim
--
Achim Lörke
Eclipse-Stammtisch in the Braunschweig, Germany area:
http://www.bredex.de/de/news/events.html