I'm currently trying to embed a browser into my Java GL1.1 application using OSR mode. Everything works fine so far, I am able to process mouse move, press and release events, scrolling and keyboard input. The only issue I have is, that mouse clicks for some reason wont work, no matter which parameters I choose for my mouse event.
Here is my mouse processing part:
- Code: Select all
boolean left_down = false;
boolean right_down = false;
int lastx = 0;
int lasty = 0;
boolean entered = false;
int min_scroll = 20000;
public void keyLogic(int i, int j, int displayWidth, int displayHeight) {
if(!entered){
entered = true;
sendMouseEventP(new MouseEvent(getUIComponent(), MouseEvent.MOUSE_ENTERED, System.currentTimeMillis(), 0, 0, 0, 0, false));
}
if(mouseInputs){
int keysCombined = 0;
if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL))keysCombined |= MouseEvent.CTRL_DOWN_MASK;
if(Keyboard.isKeyDown(Keyboard.KEY_RCONTROL))keysCombined |= MouseEvent.CTRL_DOWN_MASK;
if(Keyboard.isKeyDown(Keyboard.KEY_RSHIFT))keysCombined |= MouseEvent.SHIFT_DOWN_MASK;
if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))keysCombined |= MouseEvent.SHIFT_DOWN_MASK;
if(Mouse.isButtonDown(0))keysCombined |= MouseEvent.BUTTON1_DOWN_MASK;
if(Mouse.isButtonDown(1))keysCombined |= MouseEvent.BUTTON2_DOWN_MASK;
int x = Mouse.getX()-xoffs;
int y = displayHeight-Mouse.getY()-yoffs;
if(x!=lastx||y!=lasty){
sendMouseEventP(new MouseEvent(getUIComponent(), MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, x, y, 0, false));
}
if(Mouse.isButtonDown(0)&&!left_down){
sendMouseEventP(new MouseEvent(getUIComponent(), MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), keysCombined, x, y, x, y, 0, false, MouseEvent.BUTTON1));
}
if(Mouse.isButtonDown(1)&&!right_down){
sendMouseEventP(new MouseEvent(getUIComponent(), MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), keysCombined, x, y, x, y, 0, false, MouseEvent.BUTTON2));
}
if(!Mouse.isButtonDown(0)&&left_down){
System.out.println("CLICK");
sendMouseEventP(new MouseEvent(getUIComponent(), MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), keysCombined, x, y, x, y, 1, false, MouseEvent.BUTTON1));
sendMouseEventP(new MouseEvent(getUIComponent(), MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), keysCombined, x, y, x, y, 1, false, MouseEvent.BUTTON1));
}
if(!Mouse.isButtonDown(1)&&right_down){
sendMouseEventP(new MouseEvent(getUIComponent(), MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), keysCombined, x, y, x, y, 1, false, MouseEvent.BUTTON2));
sendMouseEventP(new MouseEvent(getUIComponent(), MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), keysCombined, x, y, x, y, 1, false, MouseEvent.BUTTON2));
}
left_down = Mouse.isButtonDown(0);
right_down = Mouse.isButtonDown(1);
lastx = x;
lasty = y;
}
if(wheelInputs){
int x = Mouse.getX()-xoffs;
int y = displayHeight-Mouse.getY()-yoffs;
int mx = Mouse.getDWheel();
if(mx!=0){
if(Math.abs(mx)<min_scroll)min_scroll = Math.abs(mx);
sendMouseWheelEventP(new MouseWheelEvent(getUIComponent(), MouseWheelEvent.MOUSE_WHEEL, System.currentTimeMillis(), 0, x, y, 0, false, MouseWheelEvent.WHEEL_UNIT_SCROLL, Math.abs(mx/2), mx/min_scroll));
}
}
}
sendMouseEventP is a public wrapper method for sendMouseEvent from CefBrowser_N, simply redirecting the event to the private method. getUIComponent() returns a faked JPanel, which is unique to the browser but only initialized as a new JPanel().
Any ideas about what the issue could be would be highly appreciated
Thanks in advance,
FriwiDev