165 }
166
167 public void dispatchEvent(XEvent xev) {
168 switch(xev.get_type()) {
169 case XConstants.ClientMessage:
170 handleClientMessage(xev);
171 break;
172 case XConstants.ReparentNotify:
173 handleReparentNotify(xev);
174 break;
175 }
176 }
177 public void handleReparentNotify(XEvent xev) {
178 XReparentEvent re = xev.get_xreparent();
179 long newParent = re.get_parent();
180 if (active) {
181 // unregister accelerators, etc. for old parent
182 embedded.notifyStopped();
183 // check if newParent is a root window
184 X11GraphicsConfig gc = (X11GraphicsConfig)embedded.getGraphicsConfiguration();
185 X11GraphicsDevice gd = (X11GraphicsDevice)gc.getDevice();
186 if ((newParent == XlibUtil.getRootWindow(gd.getScreen())) ||
187 (newParent == XToolkit.getDefaultRootWindow()))
188 {
189 // reparenting to root means XEmbed termination
190 active = false;
191 } else {
192 // continue XEmbed with a new parent
193 server = newParent;
194 embedded.notifyStarted();
195 }
196 }
197 }
198 boolean requestFocus() {
199 if (active && embedded.focusAllowedFor()) {
200 sendMessage(server, XEMBED_REQUEST_FOCUS);
201 return true;
202 }
203 return false;
204 }
205 void handleWindowFocusOut() {
|
165 }
166
167 public void dispatchEvent(XEvent xev) {
168 switch(xev.get_type()) {
169 case XConstants.ClientMessage:
170 handleClientMessage(xev);
171 break;
172 case XConstants.ReparentNotify:
173 handleReparentNotify(xev);
174 break;
175 }
176 }
177 public void handleReparentNotify(XEvent xev) {
178 XReparentEvent re = xev.get_xreparent();
179 long newParent = re.get_parent();
180 if (active) {
181 // unregister accelerators, etc. for old parent
182 embedded.notifyStopped();
183 // check if newParent is a root window
184 X11GraphicsConfig gc = (X11GraphicsConfig)embedded.getGraphicsConfiguration();
185 X11GraphicsDevice gd = gc.getDevice();
186 if ((newParent == XlibUtil.getRootWindow(gd.getScreen())) ||
187 (newParent == XToolkit.getDefaultRootWindow()))
188 {
189 // reparenting to root means XEmbed termination
190 active = false;
191 } else {
192 // continue XEmbed with a new parent
193 server = newParent;
194 embedded.notifyStarted();
195 }
196 }
197 }
198 boolean requestFocus() {
199 if (active && embedded.focusAllowedFor()) {
200 sendMessage(server, XEMBED_REQUEST_FOCUS);
201 return true;
202 }
203 return false;
204 }
205 void handleWindowFocusOut() {
|