+2011-12-31 Dan Bernstein <mitz@apple.com>
+
+ <rdar://problem/8553040> REGRESSION (WebKit2): Safari status text doesn't change when you change the modifier keys without moving the mouse
+ https://bugs.webkit.org/show_bug.cgi?id=75404
+
+ Reviewed by Jon Honeycutt.
+
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView dealloc]): Remove the flags changed event monitor.
+ (-[WKView _postFakeMouseMovedEventForFlagsChangedEvent:]): Added. Similarly to
+ -[WebHTMLView _postFlagsChangedEvent:], creates a mouse moved event and passes it to
+ -mouseMoved:.
+ (-[WKView initWithFrame:contextRef:pageGroupRef:]): Create a local event monitor for flags
+ changed events.
+
2011-12-31 Dan Bernstein <mitz@apple.com>
<rdar://problem/8750356> REGRESSION (WebKit2): Printing a subframe containing a PDF prints the on-screen view instead of the entire PDF document
};
@interface WKView ()
+- (void)_accessibilityRegisterUIProcessTokens;
+- (void)_disableComplexTextInputIfNecessary;
- (float)_intrinsicDeviceScaleFactor;
+- (void)_postFakeMouseMovedEventForFlagsChangedEvent:(NSEvent *)flagsChangedEvent;
- (void)_setDrawingAreaSize:(NSSize)size;
- (void)_setPluginComplexTextInputState:(PluginComplexTextInputState)pluginComplexTextInputState;
-- (void)_disableComplexTextInputIfNecessary;
- (BOOL)_shouldUseTiledDrawingArea;
-- (void)_accessibilityRegisterUIProcessTokens;
@end
@interface WKViewData : NSObject {
BOOL _ignoringMouseDraggedEvents;
BOOL _dragHasStarted;
+ id _flagsChangedEventMonitor;
#if ENABLE(GESTURE_EVENTS)
id _endGestureMonitor;
#endif
- (void)dealloc
{
_data->_page->close();
+ [NSEvent removeMonitor:_data->_flagsChangedEventMonitor];
ASSERT(!_data->_inSecureInputState);
return hitView;
}
+- (void)_postFakeMouseMovedEventForFlagsChangedEvent:(NSEvent *)flagsChangedEvent
+{
+ NSEvent *fakeEvent = [NSEvent mouseEventWithType:NSMouseMoved location:[[flagsChangedEvent window] convertScreenToBase:[NSEvent mouseLocation]]
+ modifierFlags:[flagsChangedEvent modifierFlags] timestamp:[flagsChangedEvent timestamp] windowNumber:[flagsChangedEvent windowNumber]
+ context:[flagsChangedEvent context] eventNumber:0 clickCount:0 pressure:0];
+ [self mouseMoved:fakeEvent];
+}
+
- (NSInteger)conversationIdentifier
{
return (NSInteger)self;
#endif
_data->_mouseDownEvent = nil;
_data->_ignoringMouseDraggedEvents = NO;
+ _data->_flagsChangedEventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask handler:^(NSEvent *flagsChangedEvent) {
+ [self _postFakeMouseMovedEventForFlagsChangedEvent:flagsChangedEvent];
+ return flagsChangedEvent;
+ }];
[self _registerDraggedTypes];