diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc index 70fd36e8b5..52bff497af 100644 --- a/libs/canvas/canvas.cc +++ b/libs/canvas/canvas.cc @@ -45,6 +45,7 @@ #include "canvas/utils.h" #ifdef __APPLE__ +#include #include "canvas/nsglview.h" #endif @@ -401,7 +402,7 @@ GtkCanvas::GtkCanvas () Gdk::SCROLL_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK | Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK); -#ifdef __APPLE__NotYetToDueGdkForeignViewMousePatch // XXX +#ifdef ARDOUR_CANVAS_NSVIEW_TAG // patched gdkquartz.h # ifndef __ppc__ // would need to flip RGBA <> RGBA _nsglview = nsglview_create (this); # endif diff --git a/libs/canvas/nsglview.mm b/libs/canvas/nsglview.mm index 09d0ae1342..b4fea995a3 100644 --- a/libs/canvas/nsglview.mm +++ b/libs/canvas/nsglview.mm @@ -31,6 +31,10 @@ #include #import +#ifndef ARDOUR_CANVAS_NSVIEW_TAG +#define ARDOUR_CANVAS_NSVIEW_TAG 0xa2d0c2c4 +#endif + __attribute__ ((visibility ("hidden"))) @interface ArdourCanvasOpenGLView : NSOpenGLView { @@ -42,9 +46,11 @@ __attribute__ ((visibility ("hidden"))) ArdourCanvas::GtkCanvas *gtkcanvas; } +@property (readwrite) NSInteger tag; + - (id) initWithFrame:(NSRect)frame; - (void) dealloc; -- (void) set_ardour_canvas:(ArdourCanvas::GtkCanvas*)c; +- (void) setArdourCanvas:(ArdourCanvas::GtkCanvas*)c; - (void) reshape; - (void) drawRect:(NSRect)rect; - (BOOL) canBecomeKeyWindow:(id)sender; @@ -54,6 +60,8 @@ __attribute__ ((visibility ("hidden"))) @implementation ArdourCanvasOpenGLView +@synthesize tag = _tag; + - (id) initWithFrame:(NSRect)frame { NSOpenGLPixelFormatAttribute pixelAttribs[16] = { @@ -82,7 +90,7 @@ __attribute__ ((visibility ("hidden"))) _height = 0; if (self) { - + self.tag = ARDOUR_CANVAS_NSVIEW_TAG; [[self openGLContext] makeCurrentContext]; glClearColor (0.0f, 0.0f, 0.0f, 0.0f); glDisable (GL_DEPTH_TEST); @@ -105,7 +113,7 @@ __attribute__ ((visibility ("hidden"))) [super dealloc]; } -- (void) set_ardour_canvas:(ArdourCanvas::GtkCanvas*)c +- (void) setArdourCanvas:(ArdourCanvas::GtkCanvas*)c { gtkcanvas = c; } @@ -242,7 +250,7 @@ ArdourCanvas::nsglview_create (GtkCanvas* canvas) if (!gl_view) { return 0; } - [gl_view set_ardour_canvas:canvas]; + [gl_view setArdourCanvas:canvas]; return gl_view; }