Commit cc11dca9 by Fernando Nasser Committed by Fernando Nasser

Dialog.java (show): Enable blocking for all modal dialogs and run secondary dispatch thread to...

        * java/awt/Dialog.java (show): Enable blocking for all modal dialogs
        and run secondary dispatch thread to process event queue while this
        thread is blocked.

From-SVN: r75788
parent bc298aa7
2004-01-12 Fernando Nasser <fnasser@redhat.com>
* java/awt/Dialog.java (show): Enable blocking for all modal dialogs
and run secondary dispatch thread to process event queue while this
thread is blocked.
2004-01-12 Graydon Hoare <graydon@redhat.com>
* gnu/java/awt/gtk/GdkGraphics2D.java
......
......@@ -88,6 +88,12 @@ private boolean undecorated = false;
*/
private boolean blocked = false;
/**
* Secondary EventQueue to handle AWT events while
* we are blocked for modality in show
*/
private EventQueue eq2 = null;
/*************************************************************************/
/*
......@@ -394,20 +400,22 @@ public synchronized void
show()
{
super.show();
if (isModal())
{
// If already shown (and blocked) just return
if (blocked)
return;
/* FIXME: Currently this thread may block forever if it called from
the event dispatch thread, so we only do this for FileDialog which
only depends on a signal which is delivered in the Gtk thread.
Remove this test when we add code to start another event
dispatch thread. */
if ((Thread.currentThread () instanceof EventDispatchThread) &&
!(this instanceof FileDialog))
return;
/* If show is called in the dispatch thread for a modal dialog it will
block so we must run another thread so the events keep being
dispatched.*/
if (EventQueue.isDispatchThread ())
{
EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
eq2 = new EventQueue ();
eq.push (eq2);
}
try
{
......@@ -418,8 +426,13 @@ show()
catch (InterruptedException e)
{
blocked = false;
return;
}
if (eq2 != null)
{
eq2.pop ();
eq2 = null;
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment