diff --git a/RNGL/GLCanvas.h b/RNGL/GLCanvas.h index f53d3f8784a9f7ba89703a85e6d0e82ec0c19f20..a4ffb0038b17577a0cfcaaf690a67d2dbea5d278 100644 --- a/RNGL/GLCanvas.h +++ b/RNGL/GLCanvas.h @@ -7,6 +7,7 @@ @property (nonatomic) BOOL opaque; @property (nonatomic) BOOL autoRedraw; @property (nonatomic) BOOL eventsThrough; +@property (nonatomic) BOOL visibleContent; @property (nonatomic) NSNumber *nbContentTextures; @property (nonatomic) NSNumber *renderId; @property (nonatomic) NSArray *imagesToPreload; diff --git a/RNGL/GLCanvas.m b/RNGL/GLCanvas.m index 25ecba7dcd4b97b17d368b7135032f750a04ec95..aa469413cbbdd1e080012eaab219c829d15c37f1 100644 --- a/RNGL/GLCanvas.m +++ b/RNGL/GLCanvas.m @@ -131,7 +131,20 @@ NSString* srcResource (id res) - (void)setEventsThrough:(BOOL)eventsThrough { - self.userInteractionEnabled = !eventsThrough; + _eventsThrough = eventsThrough; + [self updateUIE]; +} + +-(void)setVisibleContent:(BOOL)visibleContent +{ + _visibleContent = visibleContent; + [self updateUIE]; +} + +- (void) updateUIE +{ + self.userInteractionEnabled = !(_eventsThrough); + self.superview.userInteractionEnabled = !(_eventsThrough && !_visibleContent); } - (void)setData:(GLData *)data diff --git a/RNGL/GLCanvasManager.m b/RNGL/GLCanvasManager.m index 816409ca71190fc25ddb882839ec0f032f9f0e53..4c598f61f6638da626013999d2ca1eac9e736419 100644 --- a/RNGL/GLCanvasManager.m +++ b/RNGL/GLCanvasManager.m @@ -22,6 +22,7 @@ RCT_EXPORT_VIEW_PROPERTY(nbContentTextures, NSNumber); RCT_EXPORT_VIEW_PROPERTY(opaque, BOOL); RCT_EXPORT_VIEW_PROPERTY(autoRedraw, BOOL); RCT_EXPORT_VIEW_PROPERTY(eventsThrough, BOOL); +RCT_EXPORT_VIEW_PROPERTY(visibleContent, BOOL); RCT_EXPORT_VIEW_PROPERTY(data, GLData); RCT_EXPORT_VIEW_PROPERTY(renderId, NSNumber); RCT_EXPORT_VIEW_PROPERTY(imagesToPreload, NSArray); diff --git a/src/View.js b/src/View.js index 16e5e62936ab61501d551fd715c883968db87b69..99e2ba93d0f25702b699343f339bc98a33df1614 100644 --- a/src/View.js +++ b/src/View.js @@ -11,10 +11,10 @@ const { const GLCanvas = requireNativeComponent("GLCanvas", null); -const renderVcontent = function (width, height, id, children, visibleContent) { +const renderVcontent = function (width, height, id, children, { visibleContent }) { const childrenStyle = { position: "absolute", - top: visibleContent ? 0 : height, + top: visibleContent ? 0 : height, // as a workaround for RN, we offset the content so it is not visible but still can be rasterized left: 0, width: width, height: height, @@ -32,7 +32,7 @@ const renderVGL = function (props) { />; }; -const renderVcontainer = function (width, height, contents, renderer, style) { +const renderVcontainer = function ({ style, width, height }, contents, renderer) { const parentStyle = { position: "relative", ...style,