Allow to selectively use NSGLView Canvas
authorRobin Gareus <robin@gareus.org>
Tue, 21 Mar 2017 04:37:44 +0000 (05:37 +0100)
committerRobin Gareus <robin@gareus.org>
Tue, 21 Mar 2017 04:37:44 +0000 (05:37 +0100)
Various GdkEvents are not yet handled correctly, eg. unpacking a widget
from its container does not unmap it, nor are remaining widgets in the
contained re-positioned (size allocation does not change, nor does the
mapping). This affects eg. Mixbus Strips

libs/canvas/canvas.cc
libs/canvas/canvas/canvas.h

index 9e477927584593a41b2c3de6669f7f14b5e2f319..1995608a9fcd346f6f7d8a5031cf8306d84b0def 100644 (file)
@@ -401,7 +401,13 @@ GtkCanvas::GtkCanvas ()
        add_events (Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK |
                    Gdk::SCROLL_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK |
                    Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);
+}
 
+void
+GtkCanvas::use_nsglview ()
+{
+       assert (!_nsglview);
+       assert (!is_realized());
 #ifdef ARDOUR_CANVAS_NSVIEW_TAG // patched gdkquartz.h
 # ifndef __ppc__ // would need to flip RGBA <> RGBA
        _nsglview = Gtkmm2ext::nsglview_create (this);
index 60e75bf8bf900a956829d5a2a4dba4a47e041948..ec66f7102511e086c0941f3205987a76694cac87 100644 (file)
@@ -181,6 +181,8 @@ public:
        GtkCanvas ();
        ~GtkCanvas () { _in_dtor = true ; }
 
+       void use_nsglview ();
+
        void request_redraw (Rect const &);
        void request_size (Duple);
        void grab (Item *);