public void handleButtonPressRelease(XEvent xev) {
/*
* Fix for 6385277.
* We request focus on simple Window by click in order
* to make it behave like Frame/Dialog in this case and also to unify
* the behaviour with what we have on MS Windows.
* handleJavaMouseEvent() would be more suitable place to do this
* but we want Swing to have this functionality also.
*/
if (xev.get_type() == XConstants.ButtonPress) {
final XWindowPeer parentXWindow = getParentTopLevel();
Window parentWindow = (Window)parentXWindow.getTarget();
if (parentXWindow.isFocusableWindow() && parentXWindow.isSimpleWindow() &&
XKeyboardFocusManagerPeer.getCurrentNativeFocusedWindow() != parentWindow)
{
postEvent(new InvocationEvent(parentWindow, new Runnable() {
public void run() {
// Request focus on the EDT of 'parentWindow' because
// XDecoratedPeer.requestWindowFocus() calls client code.
parentXWindow.requestXFocus();
}
}));
}
}
super.handleButtonPressRelease(xev);
}
java类java.awt.event.InvocationEvent的实例源码
XComponentPeer.java 文件源码
项目:jdk7-jdk
阅读 26
收藏 0
点赞 0
评论 0
WComponentPeer.java 文件源码
项目:openjdk-source-code-learn
阅读 17
收藏 0
点赞 0
评论 0
public void replaceSurfaceDataLater() {
Runnable r = new Runnable() {
public void run() {
// Shouldn't do anything if object is disposed in meanwhile
// No need for sync as disposeAction in Window is performed
// on EDT
if (!isDisposed()) {
try {
replaceSurfaceData();
} catch (InvalidPipeException e) {
// REMIND : what do we do if our surface creation failed?
}
}
}
};
// Fix 6255371.
if (!PaintEventDispatcher.getPaintEventDispatcher().queueSurfaceDataReplacing((Component)target, r)) {
postEvent(new InvocationEvent(Toolkit.getDefaultToolkit(), r));
}
}
XComponentPeer.java 文件源码
项目:openjdk-source-code-learn
阅读 22
收藏 0
点赞 0
评论 0
public void handleButtonPressRelease(XEvent xev) {
/*
* Fix for 6385277.
* We request focus on simple Window by click in order
* to make it behave like Frame/Dialog in this case and also to unify
* the behaviour with what we have on MS Windows.
* handleJavaMouseEvent() would be more suitable place to do this
* but we want Swing to have this functionality also.
*/
if (xev.get_type() == XConstants.ButtonPress) {
final XWindowPeer parentXWindow = getParentTopLevel();
Window parentWindow = (Window)parentXWindow.getTarget();
if (parentXWindow.isFocusableWindow() && parentXWindow.isSimpleWindow() &&
XKeyboardFocusManagerPeer.getCurrentNativeFocusedWindow() != parentWindow)
{
postEvent(new InvocationEvent(parentWindow, new Runnable() {
public void run() {
// Request focus on the EDT of 'parentWindow' because
// XDecoratedPeer.requestWindowFocus() calls client code.
parentXWindow.requestXFocus();
}
}));
}
}
super.handleButtonPressRelease(xev);
}
LWCToolkit.java 文件源码
项目:OLD-OpenJDK8
阅读 25
收藏 0
点赞 0
评论 0
public static void invokeLater(Runnable event, Component component) throws InvocationTargetException {
final InvocationEvent invocationEvent =
new InvocationEvent(component != null ? component : Toolkit.getDefaultToolkit(), event);
if (component != null) {
final AppContext appContext = SunToolkit.targetToAppContext(component);
SunToolkit.postEvent(appContext, invocationEvent);
// 3746956 - flush events from PostEventQueue to prevent them from getting stuck and causing a deadlock
SunToolkit.flushPendingEvents(appContext);
} else {
// This should be the equivalent to EventQueue.invokeAndWait
((LWCToolkit)Toolkit.getDefaultToolkit()).getSystemEventQueueForInvokeAndWait().postEvent(invocationEvent);
}
final Throwable eventException = invocationEvent.getException();
if (eventException == null) return;
if (eventException instanceof UndeclaredThrowableException) {
throw new InvocationTargetException(((UndeclaredThrowableException)eventException).getUndeclaredThrowable());
}
throw new InvocationTargetException(eventException);
}
WEmbeddedFrame.java 文件源码
项目:OLD-OpenJDK8
阅读 31
收藏 0
点赞 0
评论 0
@SuppressWarnings("deprecation")
public void synthesizeWindowActivation(final boolean activate) {
if (!activate || EventQueue.isDispatchThread()) {
((WFramePeer)getPeer()).emulateActivation(activate);
} else {
// To avoid focus concurrence b/w IE and EmbeddedFrame
// activation is postponed by means of posting it to EDT.
Runnable r = new Runnable() {
public void run() {
((WFramePeer)getPeer()).emulateActivation(true);
}
};
WToolkit.postEvent(WToolkit.targetToAppContext(this),
new InvocationEvent(this, r));
}
}
WComponentPeer.java 文件源码
项目:OLD-OpenJDK8
阅读 25
收藏 0
点赞 0
评论 0
public void replaceSurfaceDataLater() {
Runnable r = new Runnable() {
public void run() {
// Shouldn't do anything if object is disposed in meanwhile
// No need for sync as disposeAction in Window is performed
// on EDT
if (!isDisposed()) {
try {
replaceSurfaceData();
} catch (InvalidPipeException e) {
// REMIND : what do we do if our surface creation failed?
}
}
}
};
Component c = (Component)target;
// Fix 6255371.
if (!PaintEventDispatcher.getPaintEventDispatcher().queueSurfaceDataReplacing(c, r)) {
postEvent(new InvocationEvent(c, r));
}
}
EventQueueCore.java 文件源码
项目:cn1
阅读 16
收藏 0
点赞 0
评论 0
private void updateCurrentEventAndTime(AWTEvent event) {
currentEvent = event;
long when = 0;
if (event instanceof ActionEvent) {
when = ((ActionEvent) event).getWhen();
} else if (event instanceof InputEvent) {
when = ((InputEvent) event).getWhen();
} else if (event instanceof InputMethodEvent) {
when = ((InputMethodEvent) event).getWhen();
} else if (event instanceof InvocationEvent) {
when = ((InvocationEvent) event).getWhen();
}
if (when != 0) {
mostRecentEventTime = when;
}
}
Component.java 文件源码
项目:cn1
阅读 22
收藏 0
点赞 0
评论 0
/**
* Set native caret at the given position <br>
* Note: this method takes AWT lock inside because it walks through the
* component hierarchy
*/
void setCaretPos(final int x, final int y) {
Runnable r = new Runnable() {
public void run() {
toolkit.lockAWT();
try {
setCaretPosImpl(x, y);
} finally {
toolkit.unlockAWT();
}
}
};
if (Thread.currentThread() instanceof EventDispatchThread) {
r.run();
} else {
toolkit.getSystemEventQueueImpl().postEvent(new InvocationEvent(this, r));
}
}
EventQueue.java 文件源码
项目:cn1
阅读 31
收藏 0
点赞 0
评论 0
public static void invokeAndWait(Runnable runnable)
throws InterruptedException, InvocationTargetException {
if (isDispatchThread()) {
throw new Error();
}
final Toolkit toolkit = Toolkit.getDefaultToolkit();
final Object notifier = new Object(); //$NON-LOCK-1$
InvocationEvent event = new InvocationEvent(
toolkit, runnable, notifier, true);
synchronized (notifier) {
toolkit.getSystemEventQueueImpl().postEvent(event);
notifier.wait();
}
Exception exception = event.getException();
if (exception != null) {
throw new InvocationTargetException(exception);
}
}
ScrollPaneAdjustable.java 文件源码
项目:cn1
阅读 28
收藏 0
点赞 0
评论 0
private void postAdjustmentEvent(final int type) {
// create and post invocation event here:
comp.postEvent(new InvocationEvent(ScrollPaneAdjustable.this, new Runnable() {
public void run() {
AdjustmentEvent event = new AdjustmentEvent(ScrollPaneAdjustable.this,
AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED, type, value,
getValueIsAdjusting());
if (callAWTListener) {
comp.toolkit.lockAWT();
try {
processAdjustmentEvent(event, adjustmentListeners.getSystemListeners());
} finally {
comp.toolkit.unlockAWT();
}
}
processAdjustmentEvent(event, adjustmentListeners.getUserListeners());
}
}));
}