Potential fix for confusion for Input/Output buttons on tracks with audio+midi ports
[ardour.git] / gtk2_ardour / au_pluginui.mm
index bbae2721165946416ba13b5aaf88da0c989e154d..76b94781d5021b97ab5d764a281f9432561a3ba0 100644 (file)
@@ -1,6 +1,9 @@
 #undef  Marker
 #define Marker FuckYouAppleAndYourLackOfNameSpaces
 
+#include <gtkmm/button.h>
+#include <gdk/gdkquartz.h>
+
 #include "pbd/convert.h"
 #include "pbd/error.h"
 
@@ -10,9 +13,6 @@
 
 #undef check // stupid gtk, stupid apple
 
-#include <gtkmm/button.h>
-#include <gdk/gdkquartz.h>
-
 #include <gtkmm2ext/utils.h>
 
 #include "au_pluginui.h"
@@ -34,7 +34,6 @@
 using namespace ARDOUR;
 using namespace Gtk;
 using namespace Gtkmm2ext;
-using namespace sigc;
 using namespace std;
 using namespace PBD;
 
@@ -84,12 +83,12 @@ dump_view_tree (NSView* view, int depth)
                         [[NSNotificationCenter defaultCenter] addObserver:self
                          selector:@selector(cocoaParentActivationHandler:)
                          name:NSWindowDidBecomeMainNotification
-                         object:nil];
+                         object:NULL];
                         
                         [[NSNotificationCenter defaultCenter] addObserver:self
                          selector:@selector(cocoaParentBecameKeyHandler:)
                          name:NSWindowDidBecomeKeyNotification
-                         object:nil];
+                         object:NULL];
                 }
         }
 
@@ -122,7 +121,7 @@ dump_view_tree (NSView* view, int depth)
        } 
 }
 
-- (void)auViewResized:(NSNotification *)notification;
+- (void)auViewResized:(NSNotification *)notification
 {
         (void) notification; // stop complaints about unusued argument
        plugin_ui->cocoa_view_resized();
@@ -366,7 +365,7 @@ AUPluginUI::create_cocoa_view ()
 
                DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("tried to create bundle, result = %1\n", viewBundle));
 
-               if (viewBundle == nil) {
+               if (viewBundle == NULL) {
                        error << _("AUPluginUI: error loading AU view's bundle") << endmsg;
                        return -1;
                } else {
@@ -384,7 +383,7 @@ AUPluginUI::create_cocoa_view ()
                        }
                        // make a factory
                        id factory = [[[factoryClass alloc] init] autorelease];
-                       if (factory == nil) {
+                       if (factory == NULL) {
                                error << _("AUPluginUI: Could not create an instance of the AU view factory") << endmsg;
                                return -1;
                        }
@@ -431,7 +430,6 @@ AUPluginUI::create_cocoa_view ()
 void
 AUPluginUI::cocoa_view_resized ()
 {
-        GtkRequisition topsize = top_box.size_request ();
         NSWindow* window = get_nswindow ();
         NSRect windowFrame= [window frame];
         NSRect new_frame = [au_view frame];
@@ -658,16 +656,19 @@ AUPluginUI::parent_cocoa_window ()
 
        /* move the au_view down so that it doesn't overlap the top_box contents */
 
-       NSPoint origin = { 0, static_cast<CGFloat> (a.height) };
+       const int spacing = 6;  // main vbox spacing
+       const int pad     = 4;  // box pad
+
+       NSPoint origin = { spacing + pad, static_cast<CGFloat> (a.height) + (2 * spacing) + pad };
 
        [au_view setFrameOrigin:origin];
-        [view addSubview:au_view positioned:NSWindowBelow relativeTo:nil]; 
+        [view addSubview:au_view positioned:NSWindowBelow relativeTo:NULL];
 
         last_au_frame = [au_view frame];
 
        // watch for size changes of the view
 
-       _notify = [ [NotificationObject alloc] initWithPluginUI:this andCocoaParent:nil andTopLevelParent:win ]; 
+       _notify = [ [NotificationObject alloc] initWithPluginUI:this andCocoaParent:NULL andTopLevelParent:win ];
 
         [[NSNotificationCenter defaultCenter] addObserver:_notify
          selector:@selector(auViewResized:) name:NSViewFrameDidChangeNotification
@@ -676,6 +677,13 @@ AUPluginUI::parent_cocoa_window ()
        return 0;
 }
 
+void
+AUPluginUI::grab_focus()
+{
+       if (au_view) {
+               [au_view becomeFirstResponder];
+       }
+}
 void
 AUPluginUI::forward_key_event (GdkEventKey* ev)
 {