Merge remote-tracking branch 'origin/release' into stable
Change-Id: Idcaa9b0c63aca5ba11ee3fa2da456178655a1ae3
This commit is contained in:
commit
1b5f9bec03
@ -473,6 +473,39 @@ static QTouchDevice *touchDevice = 0;
|
|||||||
[self handleMouseEvent:theEvent];
|
[self handleMouseEvent:theEvent];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)updateTrackingAreas
|
||||||
|
{
|
||||||
|
[super updateTrackingAreas];
|
||||||
|
|
||||||
|
// [NSView addTrackingArea] is slow, so bail out early if we can:
|
||||||
|
if (NSIsEmptyRect([self visibleRect]))
|
||||||
|
return;
|
||||||
|
|
||||||
|
QCocoaAutoReleasePool pool;
|
||||||
|
if (NSArray *trackingArray = [self trackingAreas]) {
|
||||||
|
NSUInteger size = [trackingArray count];
|
||||||
|
for (NSUInteger i = 0; i < size; ++i) {
|
||||||
|
NSTrackingArea *t = [trackingArray objectAtIndex:i];
|
||||||
|
[self removeTrackingArea:t];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ideally, we shouldn't have NSTrackingMouseMoved events included below, it should
|
||||||
|
// only be turned on if mouseTracking, hover is on or a tool tip is set.
|
||||||
|
// Unfortunately, Qt will send "tooltip" events on mouse moves, so we need to
|
||||||
|
// turn it on in ALL case. That means EVERY QCocoaView gets to pay the cost of
|
||||||
|
// mouse moves delivered to it (Apple recommends keeping it OFF because there
|
||||||
|
// is a performance hit). So it goes.
|
||||||
|
NSUInteger trackingOptions = NSTrackingMouseEnteredAndExited | NSTrackingActiveInActiveApp
|
||||||
|
| NSTrackingInVisibleRect | NSTrackingMouseMoved;
|
||||||
|
NSTrackingArea *ta = [[[NSTrackingArea alloc] initWithRect:[self frame]
|
||||||
|
options:trackingOptions
|
||||||
|
owner:self
|
||||||
|
userInfo:nil]
|
||||||
|
autorelease];
|
||||||
|
[self addTrackingArea:ta];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)mouseMoved:(NSEvent *)theEvent
|
- (void)mouseMoved:(NSEvent *)theEvent
|
||||||
{
|
{
|
||||||
[self handleMouseEvent:theEvent];
|
[self handleMouseEvent:theEvent];
|
||||||
|
@ -770,6 +770,7 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event)
|
|||||||
HANDLE_PLATFORM_WINDOW_EVENT(xcb_unmap_notify_event_t, event, handleUnmapNotifyEvent);
|
HANDLE_PLATFORM_WINDOW_EVENT(xcb_unmap_notify_event_t, event, handleUnmapNotifyEvent);
|
||||||
case XCB_CLIENT_MESSAGE:
|
case XCB_CLIENT_MESSAGE:
|
||||||
handleClientMessageEvent((xcb_client_message_event_t *)event);
|
handleClientMessageEvent((xcb_client_message_event_t *)event);
|
||||||
|
break;
|
||||||
case XCB_ENTER_NOTIFY:
|
case XCB_ENTER_NOTIFY:
|
||||||
HANDLE_PLATFORM_WINDOW_EVENT(xcb_enter_notify_event_t, event, handleEnterNotifyEvent);
|
HANDLE_PLATFORM_WINDOW_EVENT(xcb_enter_notify_event_t, event, handleEnterNotifyEvent);
|
||||||
case XCB_LEAVE_NOTIFY:
|
case XCB_LEAVE_NOTIFY:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user