X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fau_pluginui.mm;h=3682788a74619bd4ea2e5540f6bf53007b2cc86c;hb=2d47183dc962bddd2084676b59e9f2c4a0abe33b;hp=9040d28a6fcee463dfd1cc97791a6a4d8573105e;hpb=6b1c171dc2029f89d3a2cfcc8553a8b10d38e538;p=ardour.git diff --git a/gtk2_ardour/au_pluginui.mm b/gtk2_ardour/au_pluginui.mm index 9040d28a6f..3682788a74 100644 --- a/gtk2_ardour/au_pluginui.mm +++ b/gtk2_ardour/au_pluginui.mm @@ -153,13 +153,21 @@ AUPluginUI::AUPluginUI (boost::shared_ptr insert) smaller_hbox->set_spacing (6); smaller_hbox->pack_start (preset_label, false, false, 4); + smaller_hbox->pack_start (_preset_modified, false, false); smaller_hbox->pack_start (_preset_combo, false, false); + smaller_hbox->pack_start (add_button, false, false); +#if 0 + /* Ardour does not currently allow to overwrite existing presets + * see save_property_list() in audio_unit.cc + */ smaller_hbox->pack_start (save_button, false, false); +#endif #if 0 /* one day these might be useful with an AU plugin, but not yet */ smaller_hbox->pack_start (automation_mode_label, false, false); smaller_hbox->pack_start (automation_mode_selector, false, false); #endif + smaller_hbox->pack_start (reset_button, false, false); smaller_hbox->pack_start (bypass_button, false, true); VBox* v1_box = manage (new VBox); @@ -190,7 +198,7 @@ AUPluginUI::AUPluginUI (boost::shared_ptr insert) cocoa_parent = 0; cocoa_window = 0; -#ifdef WITH_CARBBON +#ifdef WITH_CARBON _activating_from_app = false; _notify = 0; au_view = 0; @@ -210,7 +218,10 @@ AUPluginUI::AUPluginUI (boost::shared_ptr insert) create_cocoa_view (); } + low_box.add_events(Gdk::VISIBILITY_NOTIFY_MASK); + low_box.signal_realize().connect (mem_fun (this, &AUPluginUI::lower_box_realized)); + low_box.signal_visibility_notify_event ().connect (mem_fun (this, &AUPluginUI::lower_box_visibility_notify)); } AUPluginUI::~AUPluginUI () @@ -496,7 +507,7 @@ AUPluginUI::create_carbon_view () kWindowNoShadowAttribute| kWindowNoTitleBarAttribute); - if ((err = CreateNewWindow(kDocumentWindowClass, attr, &r, &carbon_window)) != noErr) { + if ((err = CreateNewWindow(kUtilityWindowClass, attr, &r, &carbon_window)) != noErr) { error << string_compose (_("AUPluginUI: cannot create carbon window (err: %1)"), err) << endmsg; CloseComponent (editView); return -1; @@ -626,6 +637,7 @@ AUPluginUI::parent_carbon_window () _notify = [ [NotificationObject alloc] initWithPluginUI:this andCocoaParent:cocoa_parent andTopLevelParent:win ]; [win addChildWindow:cocoa_parent ordered:NSWindowAbove]; + [win setAutodisplay:1]; // turn of GTK stuff for this window return 0; #else @@ -677,6 +689,13 @@ AUPluginUI::parent_cocoa_window () return 0; } +void +AUPluginUI::grab_focus() +{ + if (au_view) { + [au_view becomeFirstResponder]; + } +} void AUPluginUI::forward_key_event (GdkEventKey* ev) { @@ -722,6 +741,19 @@ AUPluginUI::lower_box_realized () } } +bool +AUPluginUI::lower_box_visibility_notify (GdkEventVisibility* ev) +{ +#ifdef WITH_CARBON + if (carbon_window && ev->state != GDK_VISIBILITY_UNOBSCURED) { + ShowWindow (carbon_window); + ActivateWindow (carbon_window, TRUE); + return true; + } +#endif + return false; +} + void AUPluginUI::on_window_hide () {