On Nov 26, 2015, at 6:45 AM, Peter Maydell wrote: > On 26 November 2015 at 01:14, Programmingkid <programmingk...@gmail.com> > wrote: >> When QEMU is brought to the foreground, the click event that activates QEMU >> should not go to the guest. Accidents happen when they do go to the guest >> without giving the user a change to handle them. Buttons are clicked >> accidently. >> Windows are closed accidently. Volumes are unmounted accidently. This patch >> prevents these accidents from happening. >> >> Signed-off-by: John Arbuckle <programmingk...@gmail.com> >> >> --- >> Added code that handles the right mouse button and the other mouse button. > > This seems like a fair bit of repeated code. Does the change > below do the right thing? YES! Excellent job with this one. It's very compact.
> I think it ought to work but I don't have > any guests handy which use the mouse to check with. Really? This Debian distro should fix that: http://cdimage.debian.org/cdimage/archive/5.0.10/powerpc/iso-cd/ > > diff --git a/ui/cocoa.m b/ui/cocoa.m > index 1554331..d76b942 100644 > --- a/ui/cocoa.m > +++ b/ui/cocoa.m > @@ -724,7 +724,15 @@ QemuCocoaView *cocoaView; > } > > if (mouse_event) { > - if (last_buttons != buttons) { > + /* Don't send button events to the guest unless we've got a > + * mouse grab or window focus. If we have neither then this event > + * is the user clicking on the background window to activate and > + * bring us to the front, which will be done by the sendEvent > + * call below. We definitely don't want to pass that click through > + * to the guest. > + */ > + if ((isMouseGrabbed || [[self window] isKeyWindow]) && > + (last_buttons != buttons)) { > static uint32_t bmap[INPUT_BUTTON_MAX] = { > [INPUT_BUTTON_LEFT] = MOUSE_EVENT_LBUTTON, > [INPUT_BUTTON_MIDDLE] = MOUSE_EVENT_MBUTTON, > > > > (if this is the activation click then we will do the mousegrab > on mouse-button-up so it's not necessary to do it on button-down, > I think.) > > thanks > -- PMM Reviewed-by: John Arbuckle <programmingk...@gmail.com>