options = (NSTrackingMouseEnteredAndExited |
NSTrackingMouseMoved |
- NSTrackingInVisibleRect |
NSTrackingActiveAlways);
trackingArea = [[NSTrackingArea alloc] initWithRect:rect
options:options
return self;
}
+-(void)setInputArea:(const cairo_rectangle_int_t *)area
+{
+ NSRect rect = NSMakeRect (area->x, area->y, area->width, area->height);
+ NSTrackingAreaOptions options;
+
+ [self removeTrackingArea:trackingArea];
+
+ options = (NSTrackingMouseEnteredAndExited |
+ NSTrackingMouseMoved |
+ NSTrackingActiveAlways);
+ trackingArea = [[NSTrackingArea alloc] initWithRect:rect
+ options:options
+ owner:(id)self
+ userInfo:nil];
+ [self addTrackingArea:trackingArea];
+}
+
-(void)setOpaqueRegion:(cairo_region_t *)region
{
- /* Do nothing */
+ /* Handled in Subclass */
}
-(BOOL)acceptsFirstMouse
-(void)setNeedsInvalidateShadow: (BOOL)invalidate;
-(NSTrackingArea *)trackingArea;
-(void)setOpaqueRegion:(cairo_region_t *)region;
+-(void)setInputArea:(const cairo_rectangle_int_t *)area;
@end
gdk_macos_surface_set_input_region (GdkSurface *surface,
cairo_region_t *region)
{
+ GdkMacosSurface *self = (GdkMacosSurface *)surface;
+ cairo_rectangle_int_t rect;
+
+ g_assert (GDK_IS_MACOS_SURFACE (self));
+
+ if (self->window == NULL)
+ return;
+
+ cairo_region_get_extents (region, &rect);
+
+ [(GdkMacosBaseView *)[self->window contentView] setInputArea:&rect];
}
static void