[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