62 |
public native void nativeSetDirectory(String directory); |
public native void nativeSetDirectory(String directory); |
63 |
native void nativeSetFilenameFilter (FilenameFilter filter); |
native void nativeSetFilenameFilter (FilenameFilter filter); |
64 |
|
|
|
private boolean hiding = false; |
|
|
|
|
65 |
public void create() |
public void create() |
66 |
{ |
{ |
67 |
create((GtkContainerPeer) awtComponent.getParent().getPeer()); |
create((GtkContainerPeer) awtComponent.getParent().getPeer()); |
169 |
// GtkFileDialog will repaint by itself |
// GtkFileDialog will repaint by itself |
170 |
return null; |
return null; |
171 |
} |
} |
|
|
|
|
public void setVisible (boolean b) |
|
|
{ |
|
|
// prevent handle_response_cb -> postItemEvent -> awtComponent.setState -> this.setState |
|
|
// -> gtkToggleButtonSetActive self-deadlock on the GDK lock. |
|
|
if (hiding && Thread.currentThread() == GtkToolkit.mainThread) |
|
|
{ |
|
|
setVisibleUnlocked (b); |
|
|
hiding = false; |
|
|
} |
|
|
else |
|
|
super.setVisible (b); |
|
|
} |
|
172 |
|
|
173 |
// called back by native side: handle_response_cb |
// called back by native side: handle_response_cb |
174 |
|
// only called from the GTK thread |
175 |
void gtkHideFileDialog () |
void gtkHideFileDialog () |
176 |
{ |
{ |
177 |
// hide calls back the peer's setVisible method, so locking is a |
// hide calls back the peer's setVisible method, so locking is a |
178 |
// problem. |
// problem. |
|
hiding = true; |
|
179 |
((Dialog) awtComponent).hide(); |
((Dialog) awtComponent).hide(); |
180 |
} |
} |
181 |
|
|